雲計算之路-阿里雲上:docker swarm 集羣再次出現故障

很是很是抱歉!16:30 ~ 17:00 左右咱們用於跑 ASP.NET Core 站點的 docker swarm 集羣再次出現宕機,由此給您帶來了很大很大的麻煩,懇請您的諒解!node

受這次故障影響的站點有:博問,閃存,班級,園子,短信息,招聘,小組,網摘,新聞,openapidocker

故障的通過是這樣的。數據庫

一開始只是訪問時偶爾出現 503 ,而後 503 逐漸增多。登陸到集羣的各個節點,發現有節點 ssh 登陸響應慢,登陸進去後執行 docker 命令也慢,因而將這個節點下線並重啓,可是這樣操做後又有新的節點出現這個問題 。。。而後愈來愈多的節點出現這個問題,形成全面 503 。api

發現重啓節點服務器不湊效,咱們當即選擇了重建集羣,這原本每次都管用的一招,此次居然失靈。服務器

swarm1-node1 這個節點經過 docker swarm leave --force 命令強制退出已有集羣,從新建立新的集羣,並只部署了 docker-proxy-flow 路由容器。ssh

docker swarm init --advertise-addr $(ip address | grep -oP "10\.[^/]+(?=/)")
docker network create --driver overlay cnblogs --subnet 10.128.0.0/16
docker network create --driver overlay proxy  --subnet 10.129.0.0/16
cd docker-flow-proxy
./deploy-prod.sh

watch 'docker stack ps proxy'

這時沒有部署其餘應用容器,以避免一部署把這個節點壓垮,而是將其餘節點一一加入集羣,可是加集羣時傻眼了,出現下面的錯誤,沒法加入。ide

# docker swarm join --token SWMTKN-1-2tzw5t53lzek5anyv163pc932zfrv1knkbzkxz9vg76uvsx5mz-3rw8fxa7sjbsf9hp55ycvmqxb 10.0.1.7:2377
Error response from daemon: rpc error: code = Unavailable desc = grpc: the connection is unavailable

更恐怖的是全部其餘節點都由於一樣的問題沒法加入集羣,無論是 manager 節點,仍是 worker 節點。阿里雲

在當時情急、愧疚、慌亂、無助。。。各類情緒的混雜之下,想到了最後一招,換另一臺服務器重建集羣,結果一切正常,很快完成了整個集羣的重建,恢復了正常。日誌

用了 5 個 manager 節點,docker swarm 集羣居然仍是如此不穩定,這是咱們不曾料到的。目前咱們須要先仔細分析,而後再評估接下來的應對措施。code

再次請您諒解由此給您帶來的麻煩!

【更新】

1)重建集羣后,今天晚上又有1個節點出現問題,問題表現是容器中 dns 解析失敗,形成沒法鏈接阿里雲 RDS 數據庫,引起應用訪問出現 504 錯誤

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (0x00000001): Resource temporarily unavailable
   at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)

將該節點下線後恢復正常。

2)在 docker 節點上發現大量的 docker 錯誤日誌

dockerd[773]: time="2018-03-15T22:38:08.780376214+08:00" level=error msg="Failed to deserialize netlink ndmsg: Link not found"
相關文章
相關標籤/搜索