非常抱歉,今天 10:05-10:20 左右,我們用阿里雲服務器搭建的 docker swarm 集群又出現故障,又是因為突然的節點 CPU 波動。
受這次故障影響的站點有 閃存,博問,班級,園子,短信息,招聘,小組,網摘,openapi ,由此給您帶來很大的麻煩,請您諒解。
故障前先是有一個 worker 節點出現 CPU 100% 報警:
雲服務器ECS實例:swarm1-node5,CPU使用率於10:00發生告警,值為100%,持續時間1分鍾
收到報警后,我們將這個節點下線並重啟:
docker node update --availability drain swarm1-node5
然后,3 個 manager 節點一個接一個地 ssh 無法登錄,之后整個集群宕機,跑在集群上的所有站點無法訪問。
隨后,我們通過阿里雲控制台強制重啟 manager 節點,但重啟后集群無法恢復:
Error response from daemon: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.
這時別無選擇,我們立即執行 shell 腳本重建集群:
# ./rebuild-production-swarm.sh Swarm initialized: current node (id6b69wj83ok2cf3tnsg7vm8l) is now a manager.
(注:這也是我們選擇自建 docker swarm 集群沒有選擇阿里雲容器服務的原因之一,可以快速地用腳本重建集群)
重建集群后,一切恢復正常。
附1:docker 版本是 Docker version 17.12.0-ce, build c97c6d6 。
附2:集群中各個節點的 CPU 監控圖:
1)swarm1-node1(manager節點)

2)swarm1-node2(manager節點)

3)swarm1-node3(manager節點)

4)swarm1-node4(worker 節點)

5)swarm1-node5(worker 節點)

