一、Consul集群部署
下載地址: https://www.consul.io/downloads
在三臺(tái)linux主機(jī)上分別上傳并解壓consul安裝包,并啟動(dòng)對(duì)應(yīng)的注冊(cè)中心脸秽。
注意: 需要把100茬缩、101离赫、102主機(jī)防火墻關(guān)閉或者打開(kāi)對(duì)應(yīng)的端又癞尚。
1.1禾乘、192.168.1.100
$ cd /home/
$ mkdir /domain
# 上傳consul安裝包到/home/domain
$ unzip consul_1.12.3_linux_amd64.zip
$ ./consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=server-1 -bind=192.168.1.100 -datacenter=ijep -ui - client=0.0.0.0 &
# 集群狀態(tài)查看
$ consul operator raft list-peers
# 查看成員信息
$ consul members
1.2韭邓、192.168.1.101
$ cd /home/
$ mkdir /domain
# 上傳consul安裝包到/home/domain
$ unzip consul_1.12.3_linux_amd64.zip
$ ./consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=server-2 -bind=192.168.1.101 -datacenter=ijep -ui - client=0.0.0.0 &
# 將當(dāng)前服務(wù)和100主機(jī)組成集群服務(wù)
$ ./consul join 192.168.1.100
# 集群狀態(tài)查看
$ ./consul operator raft list-peers
# 查看成員信息
$ ./consul members
1.3措近、192.168.1.102
$ cd /home/
$ mkdir /domain
# 上傳consul安裝包到/home/domain
$ unzip consul_1.12.3_linux_amd64.zip
$ ./consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=server-3 -bind=192.168.1.102 -datacenter=ijep -ui - client=0.0.0.0 &
# 將當(dāng)前服務(wù)和100主機(jī)組成集群服務(wù)
$ ./consul join 192.168.1.100
# 集群狀態(tài)查看
$ consul operator raft list-peers
# 查看成員信息
$ consul members
1.4、控制臺(tái)查看集群 http://192.168.1.100:8500/ui/
查看集群節(jié)點(diǎn)效果是一樣的
二女淑、應(yīng)用集群部署
2.1瞭郑、需要先部署Consul Client
Server:有數(shù)量限制,主要用于服務(wù)查找鸭你;
Client:可以部署無(wú)限多屈张,沒(méi)有限制擒权;
$ cd /home/
$ mkdir /domain
# 上傳consul安裝包到/home/domain
$ unzip consul_1.12.3_linux_amd64.zip
$ ./consul agent -client=0.0.0.0 -data-dir /Users/houyinke/project/work/server/consul_data/consul.d -datacenter=ijep -bind=172.22.90.33 -node=client-2 -enable-script-checks=true
# 將當(dāng)前服務(wù)和100主機(jī)組成集群服務(wù)
$ ./consul join 192.168.1.100
# 集群狀態(tài)查看
$ consul operator raft list-peers
# 查看成員信息
$ consul members
2.2、應(yīng)用集群配置請(qǐng)采用以下配置阁谆,服務(wù)中網(wǎng)關(guān)碳抄、系統(tǒng)服務(wù)、工作流笛厦、演示服務(wù)均采用一下配 置纳鼎,配置多節(jié)點(diǎn)consul。
cloud:
consul: #consul注冊(cè)中心
# 單機(jī)配置
#host: localhost
#port: 8500
# 集群配置裳凸,配置Client客戶端IP
host: 172.22.82.66
prot: 8500
service-name: ijep-service-priv
health-check-path: /actuator/health
health-check-interval: 1s
heartbeat: # 開(kāi)啟心跳監(jiān)測(cè)
enabled: true
ip-address: 192.168.1.123 # 當(dāng)前微服務(wù)ip
prefer-ip-address: true # 開(kāi)啟ip地址注冊(cè)
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}
三贱鄙、參數(shù)詳解
-advertise: 通知展現(xiàn)地址用來(lái)改變我們給集群中的其他節(jié)點(diǎn)展現(xiàn)的地址,默認(rèn)情況下- bind地址就是展現(xiàn)地址姨谷,然而也存在一些路由地址是不能受約束的逗宁,這時(shí)候會(huì)激活一個(gè)不同的 地址來(lái)供應(yīng),如果這個(gè)地址不能路由梦湘,這個(gè)路由將不能被加入集群
-bootstrap:用來(lái)控制一個(gè)server是否在bootstrap模式瞎颗,在一個(gè)datacenter中只能有 一個(gè)server處于bootstrap模式,當(dāng)一個(gè)server處于bootstrap模式時(shí)捌议,可以自己選舉為 raft leader哼拔,在一個(gè)節(jié)點(diǎn)的模式下這種方式很重要,否則在集群中的一致性不能保證瓣颅,不推 薦在集群中應(yīng)用這個(gè)標(biāo)識(shí)
-bootstrap-expect:在一個(gè)datacenter中期望提供的server節(jié)點(diǎn)數(shù)目倦逐,當(dāng)該值提供的時(shí) 候,consul一直等到達(dá)到指定sever數(shù)目的時(shí)候才會(huì)引導(dǎo)整個(gè)集群宫补,該標(biāo)記不能和 bootstrap公用(推薦使用的方式)
-bind:該地址用來(lái)在集群內(nèi)部的通訊檬姥,集群內(nèi)的所有節(jié)點(diǎn)到地址都必須是可達(dá)的,默認(rèn)是 0.0.0.0粉怕,這意味著Consulo會(huì)使用第一個(gè)可用的私有IP地址健民,Consul可以使用TCP和UDP并 且可以使用共同的端口,如果存在防火墻贫贝,這兩者協(xié)議必須是允許的秉犹。
-client:consul綁定在哪個(gè)client地址上,這個(gè)地址提供HTTP稚晚、DNS凤优、RPC等服務(wù),默認(rèn) 是127.0.0.1蜈彼,只允許回路連接筑辨。RPC地址用于Consul命令,比如Consul members可以查 詢當(dāng)前運(yùn)行的Consul代理
-config-file:明確的指定要加載哪個(gè)配置文件幸逆,文件下的所有配置會(huì)合并在一起進(jìn)行加載 -config-dir:配置文件目錄棍辕,里面所有以.json結(jié)尾的文件都會(huì)被加載
-data-dir:提供一個(gè)目錄用來(lái)存放agent的狀態(tài)暮现,所有的agent允許都需要該目錄,該目錄 必須是穩(wěn)定的楚昭,系統(tǒng)重啟后都繼續(xù)存在
-dc:該標(biāo)記控制agent運(yùn)行的datacenter的名稱栖袋,默認(rèn)是dc1 -encrypt:指定secret key,使consul在通訊時(shí)進(jìn)行加密抚太,key可以通過(guò)consul keygen生成塘幅,同一個(gè)集群中的節(jié)點(diǎn)必須使用相同的key
-http-port:HTTP API偵聽(tīng)端口,默認(rèn)端口8500,可以在環(huán)境變量中進(jìn)行設(shè)置尿贫,非常有用电媳, 可以用于與Consul進(jìn)行通訊
-join:加入一個(gè)已經(jīng)啟動(dòng)的agent的ip地址,可以多次指定多個(gè)agent的地址庆亡。如果consul 不能加入任何指定的地址中匾乓,則agent會(huì)啟動(dòng)失敗,默認(rèn)agent啟動(dòng)時(shí)不會(huì)加入任何節(jié)點(diǎn)又谋。
-retry-join:和join類似拼缝,但是允許你在第一次失敗后進(jìn)行嘗試。 -retry-interval:兩次join之間的時(shí)間間隔彰亥,默認(rèn)是30s -retry-max:嘗試重復(fù)join的次數(shù)咧七,默認(rèn)是0,也就是無(wú)限次嘗試
-log-level:consul agent啟動(dòng)后顯示的日志信息級(jí)別任斋。默認(rèn)是info继阻,可選:trace、 debug仁卷、info穴翩、warn犬第、err锦积。跟蹤 調(diào)試 詳情 警告 錯(cuò)誤,可以通過(guò)Consul monitor使用 任何級(jí)別歉嗓,也可以通過(guò)重啟加載新的配置級(jí)別
-node:節(jié)點(diǎn)在集群中的名稱丰介,在一個(gè)集群中必須是唯一的,默認(rèn)是該節(jié)點(diǎn)的主機(jī)名(代表一 個(gè)機(jī)器)
-pid-file:提供一個(gè)路徑來(lái)存放pid文件鉴分,可以使用該文件進(jìn)行SIGINT/SIGHUP(關(guān)閉/更 新)agent
-protocol:consul使用的協(xié)議版本 consul -v -rejoin:使consul忽略先前的離開(kāi)哮幢,在再次啟動(dòng)后仍舊嘗試加入集群中。
-server:定義agent運(yùn)行在server模式還是Client模式志珍,提供時(shí)即為Server端橙垢,每個(gè)集 群至少有一個(gè)server并且每臺(tái)機(jī)器上不要超過(guò)5個(gè)dataceter.所有服務(wù)器采用一致性算法 Raft保證數(shù)據(jù)一致,確保在故障的情況下的可用性。
-syslog:開(kāi)啟系統(tǒng)日志功能伦糯,只在linux/osx上生效 -ui-dir: 提供存放web ui資源的路徑柜某,該目錄必須是可讀的