wordpress彈移動(dòng)端seo關(guān)鍵詞優(yōu)化
consul
- 一、服務(wù)注冊(cè)與發(fā)現(xiàn)
- 1. 服務(wù)注冊(cè)與發(fā)現(xiàn)的概念
- 2. 服務(wù)發(fā)現(xiàn)的機(jī)制
- 二、consul 的概念
- 1. 什么是 consul
- 2. consul 的特性
- 三、consul 的部署
- 1. consul 服務(wù)器架構(gòu)
- 2. consul 的部署過程
- 2.1 環(huán)境配置
- 2.2 consul 服務(wù)器
- 建立 Consul 服務(wù)
- 查看集群信息
- 通過 http api 獲取集群信息
- 2.3 registrator 服務(wù)器
- 容器服務(wù)自動(dòng)加入 Nginx 集群
- 2.4 consul-template
- 安裝nginx
- 準(zhǔn)備 template nginx 模板文件
- 配置并啟動(dòng) template
- 訪問 template-nginx
- 增加一個(gè) nginx 容器節(jié)點(diǎn)
- 2.5 consul 多節(jié)點(diǎn)
- 總結(jié)
- 1. consul 服務(wù)自動(dòng)發(fā)現(xiàn)和注冊(cè)
- 2. consuld 模式
- 3. consuld 的命令
一、服務(wù)注冊(cè)與發(fā)現(xiàn)
1. 服務(wù)注冊(cè)與發(fā)現(xiàn)的概念
??服務(wù)注冊(cè)與發(fā)現(xiàn)是微服務(wù)架構(gòu)中不可或缺的重要組件。
??起初服務(wù)都是單節(jié)點(diǎn)的,不保障高可用性,也不考慮服務(wù)的壓力承載,服務(wù)之間調(diào)用單純的通過接口訪問。直到后來出現(xiàn)了多個(gè)節(jié)點(diǎn)的分布式架構(gòu),起初的解決手段是在服務(wù)前端負(fù)載均衡,這樣前端必須要知道所有后端服務(wù)的網(wǎng)絡(luò)位置,并配置在配置文件中。這里就會(huì)有幾個(gè)問題:
- 如果需要調(diào)用后端服務(wù)A-N,就需要配置N個(gè)服務(wù)的網(wǎng)絡(luò)位置,配置很麻煩;
- 后端服務(wù)的網(wǎng)絡(luò)位置變化,都需要改變每個(gè)調(diào)用者的配置;
2. 服務(wù)發(fā)現(xiàn)的機(jī)制
??后端服務(wù)A-N可以把當(dāng)前自己的網(wǎng)絡(luò)位置注冊(cè)到服務(wù)發(fā)現(xiàn)模塊,服務(wù)發(fā)現(xiàn)就以K-V的方式記錄下來,K一般是服務(wù)名,V就是IP:PORT。服務(wù)發(fā)現(xiàn)模塊定時(shí)的進(jìn)行健康檢查,輪詢查看這些后端服務(wù)能不能訪問的了。前端在調(diào)用后端服務(wù)A-N的時(shí)候,就跑去服務(wù)發(fā)現(xiàn)模塊問下它們的網(wǎng)絡(luò)位置,然后再調(diào)用它們的服務(wù)。這樣的方式就可以解決上面的問題了,前端完全不需要記錄這些后端服務(wù)的網(wǎng)絡(luò)位置,前端和后端完全解耦!
二、consul 的概念
1. 什么是 consul
??consul是google開源的一個(gè)使用go語言開發(fā)的服務(wù)管理軟件。支持多數(shù)據(jù)中心、分布式高可用的、服務(wù)發(fā)現(xiàn)和配置共享。采用Raft算法,用來保證服務(wù)的高可用。內(nèi)置了服務(wù)注冊(cè)與發(fā)現(xiàn)框架、分布一致性協(xié)議實(shí)現(xiàn)、健康檢查、Key/Value存儲(chǔ)、多數(shù)據(jù)中心方案,不再需要依賴其他工具(比如ZooKeeper等)。
??服務(wù)部署簡單,只有一個(gè)可運(yùn)行的二進(jìn)制的包。每個(gè)節(jié)點(diǎn)都需要運(yùn)行agent,他有兩種運(yùn)行模式server 和 client。 每個(gè)數(shù)據(jù)中心官方建議需要3或5個(gè)server節(jié)點(diǎn)以保證數(shù)據(jù)安全,同時(shí)保證server-leader的選舉能夠正確的進(jìn)行。
在client模式下,所有注冊(cè)到當(dāng)前節(jié)點(diǎn)的服務(wù)會(huì)被轉(zhuǎn)發(fā)到server節(jié)點(diǎn),本身是不持久化這些信息。
在server模式下,功能和client模式相似,唯一不同的是,它會(huì)把所有的信息持久化到本地,這樣遇到故障,信息是可以被保留的。server-leader是所有server節(jié)點(diǎn)的老大,它和其它server節(jié)點(diǎn)不同的是,它需要負(fù)責(zé)同步注冊(cè)的信息給其它的server節(jié)點(diǎn),同時(shí)也要負(fù)責(zé)各個(gè)節(jié)點(diǎn)的健康監(jiān)測。
2. consul 的特性
??服務(wù)注冊(cè)與發(fā)現(xiàn):consul通過DNS或者HTTP接口使服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)變的很容易,一些外部服務(wù),例如SAAS提供的也可以一樣注冊(cè)。
??健康檢查:健康檢測使consul可以快速的告警在集群中的操作。和服務(wù)發(fā)現(xiàn)的集成,可以防止服務(wù)轉(zhuǎn)發(fā)到故障的服務(wù)上面。
??Key/Value存儲(chǔ):一個(gè)用來存儲(chǔ)動(dòng)態(tài)配置的系統(tǒng)。提供簡單的HTTP接口,可以在任何地方操作。
??多數(shù)據(jù)中心:無需復(fù)雜的配置,即可支持任意數(shù)量的區(qū)域。
??安裝consul是用于服務(wù)注冊(cè),也就是容器本身的一些信息注冊(cè)到consul里面,其他程序可以通過consul獲取注冊(cè)的相關(guān)服務(wù)信息,這就是服務(wù)注冊(cè)與發(fā)現(xiàn)。
三、consul 的部署
1. consul 服務(wù)器架構(gòu)
??consul template:基于consul的注冊(cè)信息自動(dòng)根據(jù)文件模板生成配置文件并替換;
??nginx:代理服務(wù)器、負(fù)載均衡器,根據(jù)consul template生成的配置進(jìn)行代理轉(zhuǎn)發(fā);
??consul server/consul agent:收集自動(dòng)發(fā)現(xiàn)的信息,將所有需要注冊(cè)的信息持久化本地可以通過server-leader將注冊(cè)信息同步給其它server節(jié)點(diǎn),以及對(duì)各個(gè)server節(jié)點(diǎn)做健康檢查;
??registrator:發(fā)現(xiàn)應(yīng)用的網(wǎng)絡(luò)位置,發(fā)送給consul server/client的自動(dòng)發(fā)現(xiàn)模塊進(jìn)行注冊(cè)。
2. consul 的部署過程
2.1 環(huán)境配置
consul服務(wù)器 192.168.145.60 運(yùn)行consul服務(wù)、nginx服務(wù)、consul-template守護(hù)進(jìn)程
registrator服務(wù)器 192.168.145.75 運(yùn)行registrator容器、運(yùn)行nginx容器
#關(guān)閉防火墻
systemctl stop firewalld.service
setenforce 0
2.2 consul 服務(wù)器
建立 Consul 服務(wù)
cd /opt/
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/
consul version #查看版本
#設(shè)置代理,在后臺(tái)啟動(dòng) consul 服務(wù)端
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.145.60 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
----------------------------------------------------------------------------------------------------------
-server: 以server身份啟動(dòng)。默認(rèn)是client。
-bootstrap :用來控制一個(gè)server是否在bo