在zookeeper群集中的一个节点发生故障后该怎么办?

时间:2017-09-07 13:27:25

标签: apache-kafka apache-zookeeper

根据https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkMulitServerSetup

  

跨机器要求要使ZooKeeper服务处于活动状态,   必须有大多数可以通信的非故障机器   彼此。创建可以容忍失败的部署   对于F机器,你应该指望部署2xF + 1台机器。因此,一个   由三台机器组成的部署可以处理一个故障,并且   部署五台机器可以处理两次故障。注意一个   部署六台机器只能处理三次以来的两次故障   机器不是多数。出于这个原因,ZooKeeper部署是   通常由奇数机器组成。

     

为了达到容忍失败的最高概率,你应该这样做   尝试使机器故障独立。例如,如果大多数   机器共享同一个开关,该开关的故障可能导致   相关故障并降低服务。同样的道理也是如此   共享电源电路,冷却系统等。

我的问题是: 在我们发现Zookeeper集群中的节点故障再次使集群2F + 1后我们应该怎么做?我们需要重新启动所有zookeeper节点吗?客户端也连接到Zookeeper集群,假设我们使用DNS名称和使用相同DNS名称的已恢复节点。

例如: 10.51.22.89 zookeeper1 10.51.22.126 zookeeper2 10.51.23.216 zookeeper3

如果10.51.22.89死亡,我们将10.51.22.90作为zookeeper1,并且所有节点都可以识别此更改。

1 个答案:

答案 0 :(得分:0)

如果您将10.51.22.90连接为zookeeper1(具有与之前10.51.22.89相同的myid文件和配置)并且数据目录为空,则该进程将连接到当前的leader(zookeeper2或zookeeper3)并且复制数据的快照。成功初始化后,节点将通知其余的集群节点,并再次获得2F + 1。

在日志文件上使用tail -f时自己尝试一下。它不会伤害集群,你会在zookeeper内部学到很多东西; - )