Kafka KRaft集群新增broker,controller节点及控制器查询问题咨询
KRaft集群扩展Controller Quorum及相关问题解答
一、为什么修改server.properties重启后新节点未加入投票者列表?
KRaft集群的Controller Quorum投票者列表存储在集群元数据中,并非仅依赖节点本地配置文件。修改server.properties仅能让节点具备Controller角色的运行能力,但无法自动更新集群层面的投票者集合,必须通过专门的元数据修改操作完成。
二、所需执行的后续操作
1. 确认节点配置正确性
确保节点4、5的server.properties已完成以下配置:
process.roles=broker,controller(同时开启Broker和Controller双角色)controller.quorum.voters包含所有原Controller节点(1、2、3)和新增节点(4、5),格式示例:controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093,4@node4:9093,5@node5:9093- 已重启节点4、5;若原Controller节点也更新了
controller.quorum.voters配置,也需重启
2. 更新集群元数据中的Controller Quorum投票者
使用kafka-metadata-shell工具连接集群,执行投票者添加操作:
# 替换<bootstrap-server>为任意Broker/Controller节点的地址 kafka-metadata-shell.sh --bootstrap-server node1:9092
进入shell后执行添加命令:
alter-controller-quorum --add-voters 4,5
验证投票者列表是否更新:
alter-controller-quorum --list-voters
三、是否需要重新格式化节点存储?
不需要重新格式化节点4、5的存储:
- 节点已作为Broker运行,已有完整的日志数据,重新格式化会丢失数据;
- 当节点以
broker,controller角色启动时,会自动从现有Controller Quorum同步元数据,无需初始化格式化。若节点未配置controller.log.dir,只需指定一个空目录即可(Controller会自动创建所需的元数据存储文件)。
四、简便查看集群控制器的方法
方法1:使用kafka-metadata-shell查看投票者列表
进入metadata shell后执行:
alter-controller-quorum --list-voters
或直接查看元数据中的Controller Quorum详情:
get /metadata/controllerQuorum
方法2:查看Controller节点日志
任意Controller节点的日志中会包含类似[Controller id=1] Controller is active的记录,但此方法需登录节点查看,不如kafka-metadata-shell便捷。
内容的提问来源于stack exchange,提问作者Jon Phelps
相关产品推荐
相关产品推荐

