0

我有一个 Kafka 集群,有 4 个代理,由 5 个动物园管理员管理。

5个zookeepers的IP将同时更改,所以我需要停止它之前的所有kafka节点,然后(在zookeepers IPs更改后)再次启动它们。

从我知道的 Kafka 文档中,我可以添加参数:

controlled.shutdown.enable=true

然后将此命令发送到 kafka 代理:

bin/kafka-server-stop.sh

但它与一个节点重启(滚动重启)有关。

  1. 我可以通过一次停止所有 kafka 服务来使完全重启更加优雅吗?我希望kafka在完全重启后尽快恢复。也许我可以向 kafka 发送一个信号,表明整个集群将被关闭?
  2. 如果我像这样停止并启动 kafka,是否存在数据丢失的风险?(Zookeepers 只是一次改变他们的 IP,Zookeepers 上的数据没有改变)。

卡夫卡版本:2.4.0

动物园管理员版本:3.4.13

4

1 回答 1

1

为了优雅地停止集群,首先停止向它产生新事件并停止所有消费者。这将确保您在完全关机期间不会丢失任何数据。

一旦集群空闲,您可以停止每个节点,直到最后一个节点停止。然后更改您的 ZK IP 地址 -> 更新 Kafka 配置以使用新的 ZK IP 地址并启动 Kafka 集群,您可以一个一个或一次完成。

controlled.shutdown.enable确保在节点关闭期间数据不会丢失并且数据将被写入磁盘。

于 2020-09-03T09:46:10.683 回答