3.4. 在 KRaft 模式下运行 Kafka 集群


在 KRaft 模式中配置和运行 Kafka。您可以将 Kafka 作为单节点或多节点 Kafka 集群运行。至少运行三个代理和三个控制器节点,在代理间复制主题,以实现稳定性和可用性。

Kafka 节点执行代理、控制器或两者的角色。

代理角色
代理( broker)有时被称为节点或服务器,编配存储并传递信息。
控制器角色
控制器协调集群并管理用于跟踪代理和分区状态的元数据。
注意

集群元数据存储在内部 __cluster_metadata 主题中。

您可以使用组合代理和控制器节点,但您可能希望分隔这些功能。在简单的部署中,执行组合角色的代理更为方便。

要识别集群,您可以创建一个 ID。该 ID 用于为添加到集群中的节点创建日志。

在每个节点的配置中指定以下内容:

  • 节点 ID
  • 代理角色
  • 用作控制器的节点列表 (或票数)

您可以使用每个控制器的节点 ID 和连接详情(主机名和端口)指定控制器列表,配置为 voters

您可以使用配置属性文件应用代理配置,包括角色设置。代理配置根据角色的不同而有所不同。KRaft 提供三个代理配置属性文件示例。

  • /opt/kafka/config/kraft/broker.properties 具有代理角色配置示例
  • /opt/kafka/config/kraft/controller.properties 具有控制器角色的示例配置
  • /opt/kafka/config/kraft/server.properties 具有组合角色配置示例

您可以在这些示例属性文件中构建代理配置。在此过程中,使用了示例 server.properties 配置。

先决条件

流程

  1. 为 Kafka 集群生成唯一 ID。

    您可以使用 kafka-storage 工具进行此操作:

    /opt/kafka/bin/kafka-storage.sh random-uuid
    Copy to Clipboard Toggle word wrap

    该命令返回一个 ID。KRaft 模式需要一个集群 ID。

  2. 为集群中的每个节点创建一个配置文件。

    您可以在 Kafka 提供的示例上构建该文件。

    1. 将角色指定为 代理控制器 或代理 、控制器

      例如,为组合角色指定 process.roles=broker

    2. 0 开始,为集群中的每个节点指定唯一的 node.id

      例如,node.id=1

    3. 以 < node_id>@<hostname:port> 格式指定 controller.quorum.voters 列表。

      例如,controller.quorum.voters=1@localhost:9093.

    4. 指定监听程序:

      • 为每个监听程序配置名称、主机名和端口。

        例如: listeners=PLAINTEXT:localhost:9092,CONTROLLER:localhost:9093

      • 配置用于代理间通信的监听程序名称。

        例如,inter.broker.listener.name=PLAINTEXT

      • 配置控制器仲裁使用的监听程序名称。

        例如,controller.listener.names=CONTROLLER

      • 为每个监听程序配置名称、主机名和端口,这些监听程序公告给客户端以连接到 Kafka。

        例如, advertised.listeners=PLAINTEXT:localhost:9092

  3. 为 Kafka 集群中的每个节点设置日志目录:

    /opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties
    Copy to Clipboard Toggle word wrap

    返回:

    Formatting /tmp/kraft-combined-logs
    Copy to Clipboard Toggle word wrap

    将 <uuid> 替换为您生成的集群 ID。对集群中的每个节点使用相同的 ID。

    使用您为代理创建的属性文件应用代理配置。

    默认情况下,server.properties 配置文件中指定的日志目录(log.dirs)设置为 /tmp/kraft-combined-logs/tmp 目录通常会在每次系统重启时清除,使其仅适用于开发环境。

    您可以添加以逗号分隔的列表来设置多个日志目录。

  4. 启动每个 Kafka 节点。

    /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
    Copy to Clipboard Toggle word wrap
  5. 检查 Kafka 是否正在运行:

    jcmd | grep kafka
    Copy to Clipboard Toggle word wrap

    返回:

    process ID kafka.Kafka /opt/kafka/config/kraft/server.properties
    Copy to Clipboard Toggle word wrap

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

    tail -f /opt/kafka/logs/server.log
    Copy to Clipboard Toggle word wrap

现在,您可以创建主题,并从代理发送和接收信息。

对于传递消息的代理,您可以在集群中的代理间使用主题复制,以实现数据持久性。将主题配置为至少三个复制因素,最小同步副本设置为复制因素少 1 个。如需更多信息,请参阅 第 9.7 节 “创建主题”

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat