5.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具有双角色配置示例
您可以在这些示例属性文件中构建代理配置。在此过程中,使用了示例 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 提供的示例上构建该文件。
将角色指定为
代理、控制器或代理、控制器例如,为双角色指定
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
现在,您可以创建主题,并从代理发送和接收信息。
对于传递消息的代理,您可以在集群中的代理间使用主题复制,以实现数据持久性。将主题配置为至少三个复制因素,最小同步副本设置为复制因素少 1 个。更多信息请参阅 第 7.7 节 “创建主题”。