Apache kafka 如果Zookeeper完全失败了怎么办?
我们已经建立了一个由3个代理组成的Kafka/Zookeeper集群。我们有一个制作人,向一个特定的卡夫卡主题发送消息,还有一些消费者群体阅读该主题。这些消费者通过Zookeeper为自己进行领导人选举(独立于卡夫卡) 使用的版本有:Apache kafka 如果Zookeeper完全失败了怎么办?,apache-kafka,apache-zookeeper,failover,Apache Kafka,Apache Zookeeper,Failover,我们已经建立了一个由3个代理组成的Kafka/Zookeeper集群。我们有一个制作人,向一个特定的卡夫卡主题发送消息,还有一些消费者群体阅读该主题。这些消费者通过Zookeeper为自己进行领导人选举(独立于卡夫卡) 使用的版本有: 卡夫卡:0.9.0.1 动物园管理员:3.4.6(包含在卡夫卡套餐中) 所有流程均由主管管理。到目前为止,一切正常。我们现在尝试的(出于测试目的)是简单地关闭所有Zookeeper进程,看看会发生什么 正如我们所料,我们的消费者进程无法再连接到Zookeepe
- 卡夫卡:0.9.0.1
- 动物园管理员:3.4.6(包含在卡夫卡套餐中)
我们认为,卡夫卡需要一个有效的动物园管理员连接,我们在网上找不到这种行为的任何解释 当您拥有zookeeper的一个节点时,代理将无法联系zookeeper,代理发现zookeeper无法访问后,代理也将无法访问。因此,生产者和消费者。 如果是制作人,则开始删除(拒绝记录)。在消费者的情况下,未确认的读取记录可能会在代理启动并准备就绪时再次处理
在3node zk的情况下,一个节点故障是可以接受的,因为仍然满足仲裁要求。。。但无法承受将导致上述后果的2节点故障 卡夫卡完成的所有操作都不需要Zookeeper。例如,Kakfa消费者客户端将其偏移量提交给ZK。据我所知。如果代理未能为失败的代理托管的分区选择新的领导者,那么也可以使用ZK。然而,只要所有经纪人都在工作,写作就不成问题:请参阅和了解更多细节。>Kakfa消费者客户将他们的补偿提交给ZK。是吗?据我所知,“新消费者”不需要这样做,因为他们想将消费者与Zookeeper分离。这就是为什么使用bootstrap.servers属性而不是zookeeper.connect属性并使用Kafka端口。将旧使用者提交偏移量到ZK中。新使用者将其偏移量提交到Kafka主题中,并且独立于ZK。根据Wiki,Zookeeper用于:服务器故障检测、数据分区和同步数据复制。请参考?