- 介紹
Consul和Eureka一樣也可以用來(lái)做注冊(cè)中心, 但是Consul不同于Eureka荒叶,Consul包含多個(gè)組件碾阁,使用go語(yǔ)言開(kāi)發(fā),包含以下功能:
(1)服務(wù)發(fā)現(xiàn)
(2)健康檢查
(3)Key/Value存儲(chǔ)
(4)多數(shù)據(jù)中心
Consul官網(wǎng):https://www.consul.io
整體架構(gòu)如下:
一個(gè)Consul集群可以有多個(gè)數(shù)據(jù)中心些楣,每個(gè)數(shù)據(jù)中心運(yùn)行一個(gè)Consul Server集群脂凶,server數(shù)目一般在3-5個(gè),因?yàn)镃onsul是強(qiáng)一致性的愁茁,server的數(shù)目太多在同步數(shù)據(jù)的時(shí)候會(huì)產(chǎn)生性能問(wèn)題艰猬。client的數(shù)目沒(méi)有限制,可以成千上萬(wàn)個(gè)埋市。
- 集群搭建
(1)首先去官網(wǎng)下載consul安裝包并解壓即可安裝consul
wget https://releases.hashicorp.com/consul/1.5.3/consul_1.5.3_linux_amd64.zip
unzip consul_1.5.3_linux_amd64.zip
(2)將解壓后的consul文件移動(dòng)到/usr/local/bin目錄下,執(zhí)行consul命令查看安裝情況
mv consul /usr/loca/bin
consul
(3)修改環(huán)境變量使consul安裝永久生效
vim /etc/profile
#在最后一行添加:
export PATH=$PATH:/usr/local/bin
#保存后執(zhí)行
source /etc/profile
(4)啟動(dòng)集群
準(zhǔn)備3臺(tái)節(jié)點(diǎn)服務(wù)器:
192.168.203.130 consul1
192.168.203.131 consul2
192.168.203.132 consul3
啟動(dòng)consul1
nohup consul agent -server -bootstrap-expect 3 -bind=192.168.203.130 -client=0.0.0.0 -data-dir=/home/consul/data -node=consul1 -ui >> /home/consul/logs/consul.log 2>&1
參數(shù)介紹:
server:定義agent以server的身份啟動(dòng)
bootstrap-expect: 一個(gè)數(shù)據(jù)中心中命贴,集群要求的server的數(shù)量道宅,當(dāng)少于這個(gè)數(shù)量的時(shí)候,集群不生效
bind:監(jiān)聽(tīng)的ip地址胸蛛,用來(lái)在集群內(nèi)部通信(集群內(nèi)部的所有節(jié)點(diǎn)都是可達(dá)的污茵,默認(rèn)為:0.0.0.0)
client:客戶端地址
node:節(jié)點(diǎn)id,同一集群中不能重復(fù)葬项,默認(rèn)是節(jié)點(diǎn)主機(jī)名
data-dir:數(shù)據(jù)存放目錄
ui:?jiǎn)?dòng)web客戶端
啟動(dòng)另外兩個(gè)節(jié)點(diǎn)(192.168.203.131,192.168.203.132):
nohup consul agent -server -bootstrap-expect 3 -bind=192.168.203.131 -client=0.0.0.0 -data-dir=/home/consul/data -node=consul2 -ui >> /home/consul/logs/consul.log 2>&1
nohup consul agent -server -bootstrap-expect 3 -bind=192.168.203.132 -client=0.0.0.0 -data-dir=/home/consul/data -node=consul3 -ui >> /home/consul/logs/consul.log 2>&1
分別將consul2泞当,consul3加入到集群中
#在192.168.203.131,192.168.203.132上執(zhí)行如下命令:
consul join 192.168.203.130
至此整個(gè)集群搭建完成民珍,執(zhí)行consul operator raft list-peers
命令查看集群狀態(tài)襟士,如下圖
遇到的坑:
在執(zhí)行consul join 192.168.203.130時(shí)會(huì)遇到如下錯(cuò)誤:
Failed to join 192.168.203.130:dial tcp 192.168.203.130:8301:connect:no route to host
解決辦法:
分別將8301,8300,8500端口加入防火墻就好了
firewall-cmd --zone=public --add-port=8301/tcp --permanent
#必須添加,否則重啟之后會(huì)失效
firewall-cmd --reload
(5)web頁(yè)面查看