如果一個swarm集羣中,你有多個manager節點,比如3個,你的目的是什麼?
那還用說嗎,當然是一個manager掛掉之後,進行故障的轉移了,但是你經歷過這個轉移嗎?
如果沒有,跟着下面的過程,模擬一次。
首先,在集羣中有3個manager節點
[root@nccztsjb-node-01 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION gxfkhuc95br6ltkhorpw1q4tq * nccztsjb-node-01 Ready Active Leader 20.10.17 8zjicf39fk28jn106symk1g5e nccztsjb-node-02 Ready Active 20.10.17 7d59usghrgq05k0yh4lbykw5v nccztsjb-node-04 Ready Active Reachable 20.10.17 wnd24l698iruhhp1xw0y3iyig nccztsjb-node-05 Ready Active Reachable 20.10.17
節點nccztsjb-node-01是管理節點,目前的角色是Leader.
其他兩個manager節點,目前都是Reachable的狀態。
接下來,關閉nccztsjb-node-01這個manager節點:
直接將docker引擎給關閉了:
[root@nccztsjb-node-01 ~]# systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket [root@nccztsjb-node-01 ~]# systemctl stop docker.socket [root@nccztsjb-node-01 ~]# docker node ls Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? [root@nccztsjb-node-01 ~]#
從其他的manager節點查看狀態:
nccztsjb-node-04:
[root@nccztsjb-node-04 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION gxfkhuc95br6ltkhorpw1q4tq nccztsjb-node-01 Down Active Unreachable 20.10.17 8zjicf39fk28jn106symk1g5e nccztsjb-node-02 Ready Active 20.10.17 7d59usghrgq05k0yh4lbykw5v * nccztsjb-node-04 Ready Active Reachable 20.10.17 wnd24l698iruhhp1xw0y3iyig nccztsjb-node-05 Ready Active Leader 20.10.17 [root@nccztsjb-node-04 ~]#
發現,目前nccztsjb-node-01是Down的狀態,並且是Unreachable的,更加重要的是,已經選舉出來新的Leader nccztsjb-node-04
nccztsjb-node-05:
[root@nccztsjb-node-05 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION gxfkhuc95br6ltkhorpw1q4tq nccztsjb-node-01 Down Active Unreachable 20.10.17 8zjicf39fk28jn106symk1g5e nccztsjb-node-02 Ready Active 20.10.17 7d59usghrgq05k0yh4lbykw5v nccztsjb-node-04 Ready Active Reachable 20.10.17 wnd24l698iruhhp1xw0y3iyig * nccztsjb-node-05 Ready Active Leader 20.10.17 [root@nccztsjb-node-05 ~]#
目前,這個節點就是Leader節點。
通過上面的輸出,你已經可以看到,輕鬆的實現了manager節點的故障轉移,選取出來了新的Leader角色。
到這裏完了嗎?當然沒有
如果節點恢復呢······
[root@nccztsjb-node-01 ~]# systemctl start docker [root@nccztsjb-node-01 ~]# [root@nccztsjb-node-01 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION gxfkhuc95br6ltkhorpw1q4tq * nccztsjb-node-01 Ready Active Reachable 20.10.17 8zjicf39fk28jn106symk1g5e nccztsjb-node-02 Ready Active 20.10.17 7d59usghrgq05k0yh4lbykw5v nccztsjb-node-04 Ready Active Reachable 20.10.17 wnd24l698iruhhp1xw0y3iyig nccztsjb-node-05 Ready Active Leader 20.10.17 [root@nccztsjb-node-01 ~]#
可以看到,恢復之後,還是manager節點,但是狀態是Reachable。沒有恢復到Leader的角色。
OK,這個就是模擬了一個3個manager節點的故障、轉移的過程。你懂了嗎?