4.2. 以 KRaft 模式运行 Kafka 集群
在 KRaft 模式中配置并运行 Kafka。如果使用单节点或多节点 Kafka 集群,则可以在 KRaft 模式下运行 Kafka。至少运行三个代理和控制器节点以获得稳定性和可用性。
您可以为代理设置角色,以便它们也可以是控制器。您可以使用配置属性文件应用代理配置,包括角色设置。代理配置根据角色的不同而有所不同。KRaft 提供三个示例代理配置属性文件。
-
/opt/kafka/config/kraft/broker.properties具有代理角色配置示例 -
/opt/kafka/config/kraft/controller.properties具有控制器角色的示例配置 -
/opt/kafka/config/kraft/server.properties具有组合角色配置示例
您可以在这些示例属性文件上作为代理配置的基础。在此过程中,使用 example server.properties 配置。
先决条件
- AMQ Streams 安装 在所有将用作 Kafka 代理的主机上。
流程
使用
kafka-storage 工具为Kafka 集群生成 ID:/opt/kafka/bin/kafka-storage.sh random-uuid
/opt/kafka/bin/kafka-storage.sh random-uuidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令返回一个 ID。KRaft 模式需要一个集群 ID。
为集群中的每个代理创建配置属性文件。
您可以根据 Kafka 提供的示例为基础。
将角色指定为
broker、'controller或broker, controller例如,
process.roles=broker,controller。为从
0开始的集群中的每个节点指定唯一的node.id。例如,
node.id=1。指定一个
controller.quorum.voters列表,格式为<node_id>@<hostname:port>。例如,
controller.quorum.voters=1@localhost:9093.
为 Kafka 集群中的每个节点设置日志目录:
/opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties
/opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 返回:
Formatting /tmp/kraft-combined-logs
Formatting /tmp/kraft-combined-logsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <uuid > 替换为您生成的集群 ID。对集群中的每个节点使用相同的 ID。
使用您为代理创建的属性文件应用代理配置。
server.properties配置文件中指定的默认日志目录位置为/tmp/kraft-combined-logs。您可以添加以逗号分隔的列表来设置多个日志目录。启动每个 Kafka 代理。
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Kafka 是否正在运行:
jcmd | grep kafka
jcmd | grep kafkaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 返回:
number kafka.Kafka /opt/kafka/config/kraft/server.properties
number kafka.Kafka /opt/kafka/config/kraft/server.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以创建主题并从代理中发送和接收信息。
对于传递消息的代理,您可以使用集群中的代理之间的主题复制来实现数据持久性。将主题配置为至少有三个复制因素,将最少的 in-sync 副本设置为小于复制因素的 1。更多信息请参阅 第 6.7 节 “创建主题”。