如何为Kafka KRaft控制器配置健康检查
如何为Kafka KRaft控制器配置健康检查?
一、KRaft控制器核心配置说明
首先完成KRaft控制器的基础配置,确保节点能正常加入控制器集群:
- KAFKA_KRAFT_CLUSTER_ID:KRaft集群的唯一标识,所有控制器和Broker节点必须使用相同ID
- KAFKA_CFG_PROCESS_ROLES:设置当前节点角色为
controller,明确这是一个KRaft控制器节点 - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS:定义控制器集群的投票节点列表,格式为
节点ID@节点地址:端口,示例中配置3个控制器节点以满足高可用需求 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP:映射监听器与安全协议,此处CONTROLLER、INTERNAL、EXTERNAL均使用PLAINTEXT明文协议
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES:指定控制器节点间通信使用
CONTROLLER监听器 - KAFKA_CFG_NODE_ID:当前控制器节点的唯一ID,需与
CONTROLLER_QUORUM_VOTERS中的对应ID一致 - KAFKA_CFG_LISTENERS:配置控制器节点的监听地址与端口,示例中CONTROLLER监听器监听49090端口
- KAFKA_JMX_PORT / KAFKA_JMX_HOSTNAME:配置JMX监控的端口与主机名,用于节点状态监控
二、健康检查配置说明
使用Kafka自带的kafka-broker-api-versions工具实现健康检查,该工具可验证控制器节点的API响应状态,具体参数如下:
- test:执行健康检查的命令,通过连接控制器的CONTROLLER端口(49090)验证API版本可用性
- interval:健康检查的执行间隔,每30秒检查一次
- timeout:单次检查的超时时间,10秒内无响应则判定为检查失败
- retries:连续3次检查失败后,标记节点为不健康状态
完整配置示例
environment: KAFKA_KRAFT_CLUSTER_ID: ulBKTl3BSeOGO3Hn8SOu-Q KAFKA_CFG_PROCESS_ROLES: controller KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 50000@kafka_controller_0:49090,60000@kafka_controller_1:49091,70000@kafka_controller_2:49092 KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: true KAFKA_CFG_AUTO_LEADER_REBALANCE_ENABLE: true KAFKA_CFG_UNCLEAN_LEADER_ELECTION_ENABLE: true KAFKA_CFG_REPLICATION_QUOTA_WINDOW_NUM: 11 KAFKA_CFG_REPLICATION_QUOTA_WINDOW_SIZE_SECONDS: 1 KAFKA_CFG_NODE_ID: 50000 KAFKA_CFG_LISTENERS: CONTROLLER://:49090 KAFKA_JMX_PORT: 49190 KAFKA_JMX_HOSTNAME: kafka_controller_0 healthcheck: test: ["CMD", "kafka-broker-api-versions", "--bootstrap-server", "kafka_controller_0:49090"] interval: 30s timeout: 10s retries: 3
内容的提问来源于stack exchange,提问作者Mahajan Kashish
相关产品推荐
相关产品推荐

