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-uuid
Copy 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.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返回:
Formatting /tmp/kraft-combined-logs
Formatting /tmp/kraft-combined-logs
Copy 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.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Kafka 是否正在运行:
jcmd | grep kafka
jcmd | grep kafka
Copy 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.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以创建主题,并发送和接收代理中的信息。
对于传递消息的代理,您可以使用集群中的代理中的主题复制进行数据持久性。将主题配置为至少有三个,将最小 in-sync 副本数设置为比复制因素小 1。更多信息请参阅 第 6.7 节 “创建主题”。