Consul:12:使用容器方式構建Consul集羣

在這裏插入圖片描述
這篇文章介紹使用官方鏡像構建Consul集羣的方式。

啓動Consul服務

使用如下命令,使用Consul官方鏡像以開發模式啓動Consul服務,將Consul web UI端口映射出來給用戶提供訪問。

執行命令:docker run -d --name=agent1 -p 8500:8500 consul:1.7.1 agent -dev -client=0.0.0.0 -bind=0.0.0.0

執行日誌如下所示:

liumiaocn:~ liumiao$ docker run -d --name=agent1 -p 8500:8500 consul:1.7.1 agent -dev -client=0.0.0.0 -bind=0.0.0.0
bed6136ca254a22ffa6cab24b7db6b30c0bbb209525f503b9c4e665657fd94f3
liumiaocn:~ liumiao$ docker ps |grep consul
bed6136ca254        consul:1.7.1                                   "docker-entrypoint.s…"   5 seconds ago       Up 3 seconds        8300-8302/tcp, 8301-8302/udp, 8600/tcp, 8600/udp, 0.0.0.0:8500->8500/tcp   agent1
liumiaocn:~ liumiao$
  • 查看集羣成員狀態
liumiaocn:~ liumiao$ docker exec -t agent1 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 

獲取Consul容器的IP

使用如下命令獲取新啓動的Consul容器的IP:

執行命令:docker inspect --format ‘{{ .NetworkSettings.IPAddress }}’ agent1

執行命令可以看到IP爲172.17.0.3

liumiaocn:~ liumiao$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' agent1
172.17.0.3
liumiaocn:~ liumiao$ 

加入新的節點:agent2

使用如下命令將新的Consul節點加入到Consul集羣中。

執行命令:docker run -d --name agent2 consul agent -dev -bind=0.0.0.0 -join=172.17.0.3

執行日誌信息如下所示:

liumiaocn:~ liumiao$ docker run -d --name agent2 consul agent -dev -bind=0.0.0.0 -join=172.17.0.3
c40fc4bcf34ded511e8055e075ac82480890dc5d652dcd37d513211dcb937716
liumiaocn:~ liumiao$

當然也可以使用docker logs agent1/agent2來確認啓動日誌信息。登錄任意一臺集羣的節點均可確認成員信息

liumiaocn:~ liumiao$ docker exec -t agent1 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
c40fc4bcf34d  172.17.0.4:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 
liumiaocn:~ liumiao$ docker exec -t agent2 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
c40fc4bcf34d  172.17.0.4:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 

當然也可以從web UI上進行節點信息的確認
在這裏插入圖片描述

加入新的節點:agent3

使用如下命令將新的Consul節點加入到Consul集羣中。

執行命令:docker run -d --name agent3 consul agent -dev -bind=0.0.0.0 -join=172.17.0.3

執行日誌信息如下所示:

liumiaocn:~ liumiao$ docker run -d --name agent3 consul agent -dev -bind=0.0.0.0 -join=172.17.0.3
e487800cf9c2c8889c9a9fcb808bbac9b31322a22676ffca4df464743ec0c203
liumiaocn:~ liumiao$ 

當然也可以使用docker logs agent3來確認啓動日誌信息。登錄任意一臺集羣的節點均可確認成員信息

liumiaocn:~ liumiao$ docker exec -t agent1 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
c40fc4bcf34d  172.17.0.4:8301  alive   server  1.7.1  2         dc1  <all>
e487800cf9c2  172.17.0.5:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 
liumiaocn:~ liumiao$ docker exec -t agent3 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
c40fc4bcf34d  172.17.0.4:8301  alive   server  1.7.1  2         dc1  <all>
e487800cf9c2  172.17.0.5:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 

當然也可以從web UI上進行節點信息的確認(注意在本文示例中此時Leader已經變了)
在這裏插入圖片描述

節點異常

節點在實際使用的過程中可能會發生問題,比如這裏我們將身爲Leader的172.17.0.4這個容器停止,再來確認會發生什麼,首先停止agent2容器

liumiaocn:~ liumiao$ docker stop agent2
agent2
liumiaocn:~ liumiao$

此時再確認Consul集羣節點的狀態,可以看到此節點的狀態爲failed

liumiaocn:~ liumiao$ docker exec -t agent1 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
c40fc4bcf34d  172.17.0.4:8301  failed  server  1.7.1  2         dc1  <all>
e487800cf9c2  172.17.0.5:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 

稍等片刻狀態則變爲left,當然使用docker logs能看到更加具體的日誌信息。

liumiaocn:~ liumiao$ docker exec -t agent1 consul members
Node          Address          Status  Type    Build  Protocol  DC   Segment
bed6136ca254  172.17.0.3:8301  alive   server  1.7.1  2         dc1  <all>
c40fc4bcf34d  172.17.0.4:8301  left    server  1.7.1  2         dc1  <all>
e487800cf9c2  172.17.0.5:8301  alive   server  1.7.1  2         dc1  <all>
liumiaocn:~ liumiao$ 

當然此時也可以通過web UI來確認當前Consul集羣的各節點的狀態,詳細如下圖所示
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章