13.10. 批准优化提议
如果您对最近生成的优化器满意,您可以指示 Cruise Control 启动集群重新平衡并开始重新分配分区。
在生成优化提议并启动集群重新平衡之间尽可能少的时间。如果因为您生成了原始优化提议,集群状态可能会改变。因此,启动的集群重新平衡可能与您检查的不同。如果有疑问,首先要生成新的优化方案。
一个集群会重新平衡,状态为"Active",一次才能进行。
先决条件
- 您已从 Cruise 控制中生成了优化的提议。
流程
使用
dryrun=false
参数向/rebalance
、/add_broker
或/remove_broker
端点发送 POST 请求:如果您使用
/add_broker
或/remove_broker
端点来生成包含或排除代理的提议,请使用同一端点来执行使用或不使用指定代理进行重新平衡。对
/rebalance
的请求示例curl -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance?dryrun=false'
对
/add_broker
的请求示例curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/add_broker?dryrun=false&brokerid=3,4'
对
/remove_broker
的请求示例curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/remove_broker?dryrun=false&brokerid=3,4'
Cruise Control 启动集群重新平衡并返回优化建议。
- 检查优化提议中总结的更改。如果更改不是您期望的 ,您可以停止重新平衡。
使用
/user_tasks
端点检查集群重新平衡的进度。集群重新平衡状态为 "Active"。查看 Cruise Control 服务器上执行的所有集群重新平衡任务:
curl 'cruise-control-server:9090/kafkacruisecontrol/user_tasks' USER TASK ID CLIENT ADDRESS START TIME STATUS REQUEST URL c459316f-9eb5-482f-9d2d-97b5a4cd294d 0:0:0:0:0:0:0:1 2020-06-01_16:10:29 UTC Active POST /kafkacruisecontrol/rebalance?dryrun=false 445e2fc3-6531-4243-b0a6-36ef7c5059b4 0:0:0:0:0:0:0:1 2020-06-01_14:21:26 UTC Completed GET /kafkacruisecontrol/state?json=true 05c37737-16d1-4e33-8e2b-800dee9f1b01 0:0:0:0:0:0:0:1 2020-06-01_14:36:11 UTC Completed GET /kafkacruisecontrol/state?json=true aebae987-985d-4871-8cfb-6134ecd504ab 0:0:0:0:0:0:0:1 2020-06-01_16:10:04 UTC
要查看特定集群重新平衡任务的状态,请提供
user-task-ids
参数和任务 ID:curl 'cruise-control-server:9090/kafkacruisecontrol/user_tasks?user_task_ids=c459316f-9eb5-482f-9d2d-97b5a4cd294d'
(可选)在缩减时删除代理
成功重新平衡后,您可以停止排除的任何代理来缩减 Kafka 集群。
检查正在删除的每个代理是否没有任何实时分区(
log.dirs
)。ls -l <LogDir> | grep -E '^d' | grep -vE '[a-zA-Z0-9.-]+\.[a-z0-9]+-delete$'
如果日志目录与正则表达式
\.[a-z0-9]-delete$
不匹配,则活动分区仍然存在。如果您有活跃的分区,请检查重新平衡已完成,或配置优化建议。您可以再次运行提议。在继续下一步之前,请确保没有活动的分区。停止代理。
su - kafka /opt/kafka/bin/kafka-server-stop.sh
确认代理已停止。
jcmd | grep kafka