非常非常抱歉! 16:30 ~ 17:00 左右我们用于跑 ASP.NET Core 站点的 docker swarm 集群再次出现宕机, 由此给您带来了很大很大的麻烦, 恳请您的谅解!
受此次故障影响的站点有: 博问, 闪存, 班级, 园子, 短信息, 招聘, 小组, 网摘, 新闻, openapi
故障的经过是这样的
一开始只是访问时偶尔出现 503 , 然后 503 逐渐增多登录到集群的各个节点, 发现有节点 ssh 登录响应慢, 登录进去后执行 docker 命令也慢, 于是将这个节点下线并重启, 但是这样操作后又有新的节点出现这个问题 然后越来越多的节点出现这个问题, 造成全面 503
发现重启节点服务器不凑效, 我们立即选择了重建集群, 这本来每次都管用的一招, 这次竟然失灵
swarm1-node1 这个节点通过 docker swarm leave --force 命令强制退出已有集群, 重新创建新的集群, 并只部署了 docker-proxy-flow 路由容器
- 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'
这时没有部署其他应用容器, 以免一部署把这个节点压垮, 而是将其他节点一一加入集群, 但是加集群时傻眼了, 出现下面的错误, 无法加入
- # 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 集群竟然还是如此不稳定, 这是我们未曾料到的目前我们需要先仔细分析, 然后再评估接下来的应对措施
再次请您谅解由此给您带来的麻烦!
来源: https://www.cnblogs.com/cmt/p/8574851.html