温馨提示×

kafka集群扩容ubuntu如何操作

小樊
38
2025-12-23 04:38:48
栏目: 智能运维

Ubuntu 上 Kafka 集群扩容实操指南

一 扩容总体流程

  • 准备并安装新节点:在 Ubuntu 上安装相同版本的 Kafka,并配置唯一的 broker.id、监听地址 listeners、日志目录 log.dirszookeeper.connect
  • 启动新 Broker:确认 Zookeeper 可达后启动新节点,使其加入集群。
  • 迁移分区与副本:使用 kafka-reassign-partitions.sh 生成并执行重分配计划,把部分分区与副本迁移到新节点,实现负载均衡。
  • 验证与观察:执行验证并查看 Topic 分布与 ISR,观察重分配期间的延迟与吞吐变化。

二 新节点加入集群

  • 安装与拷贝(示例)
    • 拷贝现有节点安装包到新机器:
      • scp -r kafka_2.13-3.x.x root@new_node_ip:/opt/
    • 建立软链并赋权:
      • ln -s kafka_2.13-3.x.x /opt/kafka
      • chown -R kafka:kafka /opt/kafka
  • 关键配置 server.properties(示例)
    • broker.id:集群内唯一(如原节点为 0/1/2,新节点用 3
    • listeners:listeners=PLAINTEXT://new_node_ip:9092
    • advertised.listeners:建议显式设置以便客户端直连(与 listeners 一致或对外可达地址)
    • log.dirs:如 /data/kafka-logs(目录需存在且可写)
    • zookeeper.connect:如 10.0.0.10:2181 或 zk1:2181,zk2:2181,zk3:2181/kafka(如使用 chroot)
  • 启动与自检
    • nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /dev/null 2>&1 &
    • 检查进程:jps 应看到 Kafka;查看日志无报错;用现有任一 Broker 执行 kafka-topics.sh --describe 能看到新 broker.id 出现在集群元数据中。

三 迁移分区与副本到新节点

  • 方式 A(推荐,批量迁移指定 Topic)
    1. 生成 topics-to-move.json(示例)
      • {“topics”: [{“topic”: “topicA”},{“topic”: “topicB”}], “version”: 1}
    2. 生成重分配计划(注意把新节点加入 --broker-list)
      • bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --topics-to-move-json-file topics-to-move.json --broker-list “0,1,2,3” --generate
    3. 复制输出中 “Proposed partition reassignment configuration” 内容到 reassignment.json
    4. 执行重分配
      • bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --reassignment-json-file reassignment.json --execute
    5. 验证进度与结果
      • bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --reassignment-json-file reassignment.json --verify
      • 使用 kafka-topics.sh --describe 查看分区与副本是否分布到新节点(如 broker 3)
  • 方式 B(手动编写 reassignment.json,更灵活)
    • 直接按目标分布编写 reassignment.json(包含 version、topic/partition、replicas 列表),然后执行与验证步骤同上。
  • 重要提示
    • 重分配会占用网络和磁盘 IO,建议在业务低峰期执行,并观察生产/消费延迟与 ISR 变化。

四 常用命令与验证要点

  • 查看 Topic 分布与副本:
    • bin/kafka-topics.sh --describe --zookeeper zk1:2181/kafka --topic topicA
  • 重分配状态:
    • bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --reassignment-json-file reassignment.json --verify
  • 监听地址与连通性:
    • 确保 listenersadvertised.listeners 配置正确,客户端(bootstrap.servers)能直连到新增 Broker。

五 注意事项与最佳实践

  • 版本一致:新节点 Kafka 版本尽量与现有集群保持一致,避免元数据/协议不兼容。
  • 唯一性与目录:确保 broker.id 唯一,log.dirs 目录存在且权限正确。
  • 容量规划:新增节点后,按需调整 Topic 的 分区数副本因子,再执行重分配以均衡负载。
  • 稳定性:重分配期间可能出现一定 延迟/抖动,避免同时执行其他高风险变更;不要中断重分配进程。
  • 监控与回滚:持续观察 ISR、请求耗时、生产/消费滞后;如异常可暂停/回滚重分配并排查网络、磁盘与 Zookeeper 状态。

0