搜索

3.6. 执行 Kafka 代理的安全滚动重启

download PDF

此流程演示了如何在多节点集群中安全滚动重启代理。在升级或更改 Kafka 集群配置属性后,通常需要滚动重启。

注意

有些代理配置不需要重启代理。如需更多信息,请参阅 Apache Kafka 文档中的 更新 代理配置。

执行代理重启后,检查请求相关主题分区,以确保副本分区已耗尽。

要实现不丢失可用性的正常重启,请确保复制主题,并且至少复制主题(min.insync.replicas)副本是同步的。min.insync.replicas 配置决定了必须确认写入被视为成功的最小副本数。

对于多节点集群,标准方法是具有最少为 3 的主题复制因素,并将最小 in-sync 副本设置为复制因素减 1。对于数据的持续时间,如果您在生成者配置中使用了 acks=all,在重新启动下一个代理前需要检查您重启的代理是否与所有它所同步的分区保持同步。

单节点集群在重启后不可用,因为所有分区都在同一个代理中。

先决条件

  • 每个主机上安装了 Apache Kafka 的流,且配置文件可用。
  • Kafka 集群按预期运行。

    检查有复制的分区或影响代理操作的任何其他问题。此流程中的步骤描述了如何检查有重复分区。

流程

在每个 Kafka 代理上执行以下步骤。在继续执行下一个代理前,在第一个代理上完成这些步骤。在最后充当控制器的代理上执行步骤。否则,控制器需要在多个重启时更改。

  1. 停止 Kafka 代理:

    /opt/kafka/bin/kafka-server-stop.sh
  2. 对在完成后需要重启的代理配置进行任何更改。

    如需更多信息,请参阅以下内容:

  3. 重启 Kafka 代理:

    /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
  4. 检查 Kafka 是否正在运行:

    jcmd | grep kafka

    返回:

    process ID kafka.Kafka /opt/kafka/config/kraft/server.properties

    检查每个节点的日志,以确保它们已成功加入 KRaft 集群:

    tail -f /opt/kafka/logs/server.log
  5. 等待直到代理有 0 个重复分区。您可以从命令行检查或使用指标。

    • 使用带有 --under-replicated-partitions 参数的 kafka-topics.sh 命令:

      /opt/kafka/bin/kafka-topics.sh --bootstrap-server <broker_host>:<port>  --describe --under-replicated-partitions

      例如:

      /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --under-replicated-partitions

      命令提供了集群中带有重复分区的主题列表。

      带有复制分区的主题

      Topic: topic3 Partition: 4 Leader: 2 Replicas: 2,3 Isr: 2
      Topic: topic3 Partition: 5 Leader: 3 Replicas: 1,2 Isr: 1
      Topic: topic1 Partition: 1 Leader: 3 Replicas: 1,3 Isr: 3
      # …

      如果 ISR (同步副本)计数小于副本数,则会列出 in-replicated 分区。如果没有返回列表,则没有复制的分区。

    • 使用 UnderReplicatedPartitions 指标:

      kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions

      指标提供副本未捕获的分区计数。您等到计数为零。

      提示

      当主题有一个或多个重复分区时,请使用 Kafka Exporter 创建警报。

重启时检查日志

如果代理无法启动,请检查应用程序日志中的信息。您还可以检查代理关闭的状态,并在 /opt/kafka/logs/server.log 应用程序日志中重启。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.