【故障公告】docker swarm 集群問題引發的故障


我們的生產環境部署了 2 個 docker swarm 集群,集群 swarm-a 用於專門跑博客站點,集群 swarm-b 用於跑其他站點,manager 節點用了阿里雲包月服務器,worker 節點用了阿里雲搶占式實例。

今天 11:03 收到阿里雲的短信通知“您的搶占式實例:實例ID(實例名稱)因庫存變化,即將進入釋放狀態”,一共被釋放了3台,其中1台是集群 swarm-a 的節點服務器,1台是集群 swarm-b 的節點服務器。釋放后,2個集群穩如泰山,應用的正常運行並沒有受到影響,當時集群的剩余服務器夠用,也就沒有立即加服務器。

中午 12:23 又收到阿里雲搶占式實例釋放的短信通知,這次是集群 swarm-b 的1台服務器,釋放后集群依然穩如泰山。但這時我們緊張起來了,怎么回事,今天一天釋放的服務器頂之前的半年,為了以防繼續有服務器被釋放,我們趕緊新購服務器添加到集群。

這次購買的是阿里雲第六代企業級 c6 服務器(包月),本來雖然少了2台服務器但集群運行正常,但是將新購服務器加入集群后竟然引發了集群故障(當時不知是新購服務器引起的),容器之間的網絡通信出現了奇怪問題,無法正常通信。12:40 左右,集群 swarm-b 全面故障,除博客站點之外的其他站點都無法正常訪問。

繼續加服務器,但問題依舊。后來發現,重啟容器可以恢復正常,於是一個一個服務重啟。

docker service update --force server_name

13:00 左右開始,各個應用開始逐步恢復正常。

在恢復的過程中才發現最先加入的那台服務器的異常表現,上面的容器運行狀態都顯示正常,但本機 80 端口卻連不上,通過 docker node update --availability drain 命令卸載所有容器后問題依舊,后來通過阿里雲控制台重啟這台服務器后立馬恢復了正常,非常奇怪。

非常抱歉!這次故障給大家帶來很大的麻煩,請大家諒解。我們會吸取教訓,改進生產環境的部署方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM