ubuntu上kafka迁移步骤是什么
导读:Ubuntu上Kafka迁移步骤(以自建集群迁移为例) 一、迁移前准备 环境检查:确认源Kafka集群(Ubuntu上的现有集群)运行正常,目标Kafka集群(Ubuntu上的新集群)已完成基础部署(安装Java环境、Kafka软件,配置...
Ubuntu上Kafka迁移步骤(以自建集群迁移为例)
一、迁移前准备
- 环境检查:确认源Kafka集群(Ubuntu上的现有集群)运行正常,目标Kafka集群(Ubuntu上的新集群)已完成基础部署(安装Java环境、Kafka软件,配置
server.properties
等核心参数,如broker.id
、listeners
、zookeeper.connect
)。 - 版本兼容性验证:检查源端与目标端Kafka版本是否兼容(如Kafka 3.x与2.x可能存在协议差异),避免因版本不匹配导致迁移失败。
- 网络连通性保障:确保源集群与目标集群的Ubuntu服务器之间网络稳定,开放Kafka所需的端口(默认9092、ZooKeeper默认2181),避免迁移过程中中断。
- 数据备份:备份源集群的关键数据(如
/var/lib/kafka/data
目录下的消息数据)、配置文件(server.properties
、zookeeper.properties
)及Topic元数据(可通过kafka-topics.sh --describe
导出),防止迁移失败无法恢复。
二、元数据迁移(可选但推荐)
若需迁移Topic配置(分区数、副本数、ACL权限等),可使用Kafka自带的MirrorMaker 2工具(支持元数据同步)。
- 配置MirrorMaker:
- 编辑
consumer.properties
(源集群配置):设置bootstrap.servers
为源集群Broker地址(如source-broker1:9092,source-broker2:9092
),group.id
为迁移组ID(如migration-group
),auto.offset.reset
为earliest
(从最早偏移量读取)。 - 编辑
producer.properties
(目标集群配置):设置bootstrap.servers
为目标集群Broker地址(如target-broker1:9092,target-broker2:9092
)。
- 编辑
- 执行元数据同步:运行命令
./kafka-mirror-maker.sh --consumer.config config/consumer.properties --producer.config config/producer.properties --whitelist=".*"
(--whitelist
指定需迁移的Topic(支持正则,如topic1,topic2
或.*
表示全部)),同步完成后,目标集群将拥有与源集群一致的Topic结构。
三、数据迁移
方案1:停机迁移(简单但影响业务)
- 停止生产流:通知业务方暂停向源集群发送消息(如修改生产者配置,指向目标集群前,停止生产者应用)。
- 消费旧集群剩余数据:使用Kafka自带的
kafka-consumer-groups.sh
工具监控消费进度,确保旧集群中所有Topic的消息被消费完毕(如./kafka-consumer-groups.sh --bootstrap-server source-broker:9092 --describe --group my-group
,查看CURRENT-OFFSET
与LOG-END-OFFSET
是否一致)。 - 切换消费者到新集群:修改消费者配置(
bootstrap.servers
指向目标集群地址),重启消费者应用,开始从目标集群消费消息。 - 启动生产流:修改生产者配置(
bootstrap.servers
指向目标集群地址),重启生产者应用,开始向目标集群发送消息。
方案2:双写迁移(业务影响小)
- 配置双写:修改线上生产者代码,在原有写源集群的逻辑基础上,增加写目标集群的代码(如使用Kafka Producer API同时向两个集群发送消息),确保数据同步。
- 启动双写:上线修改后的生产者应用,此时源集群与目标集群均会收到相同数据。
- 切换消费者:待目标集群数据积累到足够量(如与源集群数据量偏差小于1%),修改消费者配置(
bootstrap.servers
指向目标集群地址),重启消费者应用,开始从目标集群消费消息。 - 停止源集群生产流:确认消费者已完全切换至目标集群后,停止生产者向源集群发送消息,后续可逐步下线源集群。
四、数据校验
- 元数据校验:使用
kafka-topics.sh
工具对比源集群与目标集群的Topic配置(分区数、副本数、ACL权限等),例如:- 源集群:
./kafka-topics.sh --describe --zookeeper source-zk:2181 --topic my-topic
- 目标集群:
./kafka-topics.sh --describe --bootstrap-server target-broker:9092 --topic my-topic
确保两者输出一致。
- 源集群:
- 数据内容校验:使用
kafka-console-consumer.sh
工具抽样检查源集群与目标集群的消息内容是否一致(如从两个集群消费同一Topic的相同偏移量消息,对比内容),或使用第三方工具(如Confluent Control Center)进行自动化校验。 - 消费进度校验:确认目标集群的消费组偏移量与源集群一致(如
./kafka-consumer-groups.sh --bootstrap-server target-broker:9092 --describe --group my-group
,查看CURRENT-OFFSET
是否等于源集群的LOG-END-OFFSET
)。
五、切换与清理
- 切换生产与消费流量:完成数据校验后,将所有生产者与消费者的
bootstrap.servers
配置永久修改为目标集群地址,确保业务完全运行在新集群上。 - 监控集群状态:迁移后持续监控目标集群的性能指标(如CPU、内存、磁盘IO、网络带宽)及业务指标(如消息延迟、吞吐量),确保集群稳定运行。
- 清理旧集群资源:确认业务运行正常后,可清理源集群的Ubuntu服务器上的Kafka数据目录(
/var/lib/kafka/data
)、日志目录(/var/log/kafka
)及备份文件,释放存储空间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu上kafka迁移步骤是什么
本文地址: https://pptw.com/jishu/716797.html