【发布时间】:2019-12-21 19:33:42
【问题描述】:
我将 Kafka 和 Zookeeper 放在同一个服务器上,有多个节点。
在 Kafka 的 server.properties 中,我有这样一行
zookeeper.connect=server1:2181,server2:2181...
问题是,在所有的 Zookeeper 节点都可用之前,Kafka 不会启动。否则,即使其他 Zookeeper 节点已启动,我也会收到类似“Kafka 启动期间的致命错误”和“超时等待连接状态:CONNECTING”的错误。
这使得独立编写每个节点的启动脚本变得具有挑战性,因为一个节点上的启动脚本依赖于其他节点的状态。
首先:这是预期的行为还是我做错了什么?假设我在 Zookeeper 集群中有 3 个节点;所有 3 个节点都必须启动 Kafka 才能启动?这似乎违反直觉,因为更大的集群实际上会增加启动失败的机会,而不是提供更多的弹性。
第二:对此有什么好的解决方案?让每个节点上的 Kafka 等到 Zookeeper 在所有节点上完全启动的唯一方法是吗?
【问题讨论】:
-
还有多少 Zookeeper 服务器?它们是如何配置的?一项建议是不要同地
-
我在 5 个 ZK 节点上也有类似的问题,如果一个 kakfa 实例连接的 ZK 节点出现故障,Kafka 节点将不会选择其他 4 个 ZK 节点之一连接并继续操作。 Kafka 将继续尝试重新连接到一个故障节点(尽管它知道其配置中的所有 5 个节点)。是否存在 kafka 需要五个节点之一启动的情况?也许复制问题和它需要的 znode 在其他地方不存在?
标签: apache-kafka apache-zookeeper