如何处理docker群中的leader节点宕机



我有两个docker节点在群中运行,如下所示。我提拔的第二个节点是经理。

imb9cmobjk0fp7s6h5zoivfmo*节点1就绪活动领导者19.03.11-ola9gsb12wqw436zujakdpbqu5p Node2就绪活动可到达19.03.11-ol

当引线节点进入耗尽/暂停状态时,此操作效果良好。但作为测试的一部分,我已经停止了Node1实例,然后当我试图查看第二个节点中的节点(docker node ls(时,以及当我试图列出正在运行的服务(docker service ls(时都出现了以下错误。

后台进程的错误响应:rpc错误:code=未知desc=群没有领导者。在线的经理可能太少了。确保半数以上的经理在线

在停止实例之前,节点2中也没有出现在节点1中运行的docker进程。只有现有进程正在运行。我的预期是,在停止node1实例后,在node1中运行的进程必须移动到node2。当节点进入耗尽状态时,此操作正常

当无法找到明显多数时,raft共识算法失败。

这意味着,永远不要用2个管理器节点运行,因为一个节点宕机,另一个节点只剩下50%——这不是多数,无法达到法定人数。

事实上,通常情况下,避免使用偶数,尤其是在将管理人员划分为可用性区域时,因为区域划分可能会给您留下50/50的分区——同样,没有多数、没有法定人数和死群。

因此,要尝试的群管理器的有效数量通常为:1,3,5,7。高于7通常会降低性能,对可用性没有帮助。

只有当您使用1或2节点群时,才应使用1,在这些情况下,管理器节点的丢失等于群的丢失。

3个经理确实是你应该达到的最低目标。如果只有3个节点,则更愿意将管理器用作辅助节点,而不是运行1个管理器和2个辅助节点。

最新更新