Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka zookeeper集群中的一个节点出现故障后该怎么办?_Apache Kafka_Apache Zookeeper - Fatal编程技术网

Apache kafka zookeeper集群中的一个节点出现故障后该怎么办?

Apache kafka zookeeper集群中的一个节点出现故障后该怎么办?,apache-kafka,apache-zookeeper,Apache Kafka,Apache Zookeeper,据 激活ZooKeeper服务的跨机器要求, 必须有大多数无故障的机器可以通信 彼此之间。创建能够容忍故障的部署 在F台机器中,您应该指望部署2xF+1台机器。因此 由三台计算机组成的部署可以处理一个故障,并且 五台机器的部署可以处理两个故障。请注意 六台机器的部署只能处理三台机器之后的两次故障 机器不是多数。由于这个原因,ZooKeeper的部署是 通常由奇数台机器组成 为了达到最大的容忍失败的可能性,你应该 尽量使机器故障独立。例如,如果 机器共用同一个开关,该开关的故障可能导致故障 关联故

激活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,所有节点都可以识别此更改。

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


您可以自己尝试,在日志文件中添加
tail-f
。这不会损害集群,您将在zookeeper内部学到很多;-)

感谢@Mariusz在我们的实践中,我们发现了这样的问题,我们必须“滚动重新启动”所有zookeeper节点。您使用的是什么版本?您提到的问题已经存在3年多了,适用于zookeeper 3.4.5。您好@Mariusz,您是否建议对zookeeper使用一个监控流程,如果zookeeper死机,它将尝试重新启动zookeeper(假设没有节点故障)。@jumping_monkey当然,我建议添加监控流程以监控您使用的所有Deamon。