如果Zookeeper完全失败会怎么样?

时间:2016-06-14 09:49:01

标签: apache-kafka apache-zookeeper failover

我们已经设置了一个由3个经纪人组成的Kafka / Zookeeper群集。我们有一个生产者,向一个特定的Kafka主题发送消息,以及从该主题中读取的一些消费者群体。这些消费者通过Zookeeper为自己进行领导选举(独立于Kafka)。

使用的版本是:

  • Kafka:0.9.0.1
  • Zookeeper:3.4.6(包含在Kafka-Package中)

所有流程均由主管管理。到目前为止,一切正常。我们现在尝试的(出于测试目的)是简单地杀死所有Zookeeper进程并查看会发生什么。

正如我们所料,我们的消费者流程无法再连接到Zookeeper。但出乎意料的是,Kafka Brokers仍然有效。我们的制作人根本没有抱怨,仍然可以写入这个主题。虽然我无法使用kafka / bin / kafka-topics.sh或类似的,因为它们都需要zookeeper参数,我仍然可以看到topic-log的实际大小增长。重新启动zookeeper进程后,所有内容再次像以前一样工作。

我们现在无法弄清楚......那里到底发生了什么? 我们认为,Kafka需要一个有效的Zookeeper-Connection,我们无法在线找到这种行为的任何解释。

1 个答案:

答案 0 :(得分:0)

当你有一个zookeeper节点时,经纪人将无法联系zookeeper,经纪人发现zookeeper无法访问后,经纪人也将无法访问。因此,生产者和消费者。 在生产者的情况下,它开始下降(拒绝记录)。在消费者的情况下,可能发生的情况是,当经纪人准备就绪时,未被确认的读取记录可能会再次处理...

在3node zk的情况下,一个节点失败是可以接受的,因为法定人数仍然满足...但是不能承受2节点失败,这将导致上述后果......