故障公告:docker swarm集群“群龙无首”造成部分站点无法访问
<p>今天傍晚 17:38-18:18 左右,由于 docker swarm 集群出现 "The swarm does not have a leader" 问题,造成博问、闪存、园子、小组、openapi 无法正常访问,由此给您带来麻烦,请您谅解。</p><p>目前我们已经迁移至 asp.net core 的站点都部署在 docker swarm 集群上,节点用的是阿里云服务器,操作系统是 ubtunu 16.04 ,docker engine 版本是 17.06.0-ce, build 02c1d87 。</p>
<p>今天出故障期间,我们在进行节点变更的操作。操作前集群只有 3 个 manager 节点,没有 worker 节点,变更的目标是调整为 5 个节点,其中 3 个 manager ,2 个 worker ,变更的方式是减 1 个节点加 3 个节点(这 3 台服务器配置高,需要升级为 manager)。</p>
<p>具体的变更操作是这样的,第 1 个操作是 <span class="cnblogs_code">docker node demote node1</span> 将已有的一个 manager 节点降级为 worker , <span class="cnblogs_code">docker swarm leave</span> 退出集群, <span class="cnblogs_code">docker node rm node1</span> 移除节点,这个节点是减掉的那个节点。然后,新增的服务器直接 <span class="cnblogs_code">docker swarm join --token manager_token</span> 加为 manager 节点。第 1 个操作正常完成。</p>
<p>第 2 个操作的开始几步与与第 1 个操作一样,manager 降级为 worker -> 退出集群 -> 移除节点,但接着这台服务器修改主机名后又加入集群成为 worker 节点,然后新增的另外 1 台服务器以 manager 节点身份加入集群,而问题就出现在这台服务器加入集群之后。</p>
<p>出问题时,在任何 manager 节点上执行 <span class="cnblogs_code">docker node ls</span> 命令都会出现下面的错误:</p>
<div class="cnblogs_code">
<pre>Error response from daemon: rpc error: code = 2 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</pre>
</div>
<p>此时集群上运行的站点全部无法访问,重启所有节点后,问题依旧。。。后来实在找不到解决方法,只能重建 docker swarm 集群并重新部署应用,恢复正常。</p>
<p>有人在亚马逊 AWS EC2 上部署 docker swarm 集群上遇到了类似的问题 (详见 stack deploy causes nodes to randomly fail health checks making the stack unusable ),后来 docker 针对这个问题出了 Docker for AWS 的修复更新。从我们遇到的问题看,可能 docker 还没有真正修复这个问题。</p><br><br>
来源:https://www.cnblogs.com/cmt/p/7257330.html
頁:
[1]