Docker Swarm 高可用詳解node
Manager管理節點宕機後其餘管理節點仍然能夠使用管理docker
intermal distributed state store:內部分佈式狀態存儲同步共享到每一個節點。分佈式
Manager:多個Manager已Raft來經過機制的選舉,進行高可用。ide
raft:一般經過投票的方式進行選舉,通常是奇數制的節點。測試
worker:容器工做節點。spa
Manager節點任務3d
1. 維護集羣狀態code
2. 調度服務blog
3. 提供swarm模式的HTTP API同步
爲了利用swarm模式的容錯功能,應保持集羣中奇數管理員來支持manager節點故障。當leader故障時,會選舉新的leader。
故障恢復:
若是swarm失去法定人數,swarm不能自動恢復,工做節點上的任務繼續運行,不受影響,但沒法執行管理任務,包括擴展或更新服務,加入或刪除節點。恢復的最佳方式是將丟失的leader節點從新聯機。若是不可能,惟一方法是使用—force-newcluster管理節點的操做,這將去除本機以外的全部管理器身份。
docker swarm init --force-new-cluster --advertise-addr 192.168.1.79:2377
一、管理節點:賦值其餘工做節點爲管理節點
docker node promote 工做節點主機名1
docker node promote 工做節點主機名2
命令:docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
bmlecoeitwsbf1r6skpmiq6m5 slave01 Ready Active Reachable
kqkwgx5d87nt2mo42263r0dkj slave02 Ready Active Reachable
mcoe3f7kit5o60gp7v2f6wjc9 * management Ready Drain Leader
注:Reachable 是工做節點晉升的備用管理節點。
二、管理節點:測試 關閉docker
systemctl stop docker
三、備用管理節點1:測試高可用故障跳轉
docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS bmlecoeitwsbf1r6skpmiq6m5 * slave01 Ready Active Leader kqkwgx5d87nt2mo42263r0dkj slave02 Ready Active Reachable mcoe3f7kit5o60gp7v2f6wjc9 management Down Drain Unreachable
注:當主管理節點down時,swarm經過raft選舉,自動跳轉到備用管理節點1中。
注:Leader爲管理主機。