解决云服务器docker swarm节点间无法通信问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决云服务器docker swarm节点间无法通信问题相关的知识,希望对你有一定的参考价值。

参考技术A 如果你的swarm运行在默认端口,那么你就可能和我一样遇到了VXLAN默认端口4789/udp被云服务厂商阻断的问题。比如阿里云在文档中提到了这点,链接-> 阿里云添加udp监听文档 。

这个问题在docker:v19.03之前无法直接解决。19.03版本,docker在swarm init之上增加了--data-path-port uint32 的配置项用于更改docker swarm的VXLAN端口。
下面以指定端口5789/udp为例

云计算之路-阿里云上:重启 manager 节点引发 docker swarm 集群宕机

为了迎接春节假期后的访问高峰,我们今天对 docker swarm 集群进行了变更操作,购买了1台阿里云4核8G的服务器作为 worker 节点,由原来的  3 manager nodes + 2 worker nodes 变为  3 manager nodes + 3 worker nodes 。

晚上,我们对已经持续运行一段时间的5个节点逐一进行重启操作,重启方式如下:

1)docker node update --availability drain 让节点下线
2)阿里云控制台重启服务器
3)docker node update --availability active 让节点上线

以前多次进行过这样的操作,未曾遇到问题,而今天在将其中1台manager节点下线后竟然意外地引发了整个集群宕机 。。。21:39 - 22:02 左右,这个突发的故障给您带来很大的麻烦,请您谅解。受这次故障影响的站点有 闪存博问班级园子短信息招聘小组网摘新闻,openapi 。

经过分析,我们得到的教训是尽可能避免只有2个manager节点的情况(manager节点采用的是投票机制,少数服从多数,2个节点的投票永远是1:1,这也是一种不稳定情况)。针对这个教训,我们调整了节点的部署,改为了 5 manager nodes + 1 worker nodes ,这样即使2个manger节点下线或出问题,也不会群龙无首。

docker swarm 集群的不稳定让我们如履薄冰,今年我们会想尽一切办法彻底解决这个问题。

以上是关于解决云服务器docker swarm节点间无法通信问题的主要内容,如果未能解决你的问题,请参考以下文章

Docker Swarm - 节点标签与服务约束

【swarm】Docker跨主机网络:overlay

云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题

33. docker swarm 集群服务通信 之 RoutingMesh - Ingress 网络

云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障

云计算之路-阿里云上:重启 manager 节点引发 docker swarm 集群宕机