自建Kafka集群迁移上云
阿里云:Alibaba Cloud Help Center - Cloud Definition and Explanation of Cloud based Services - Alibaba Cloud
腾讯云:消息队列 CKafka 方案1:单写双消费迁移 - 消息平台操作指南 - 文档中心 - 腾讯云
自建Kafka集群迁移
迁移前准备
1、kafka集群规划,主要考虑磁盘容量以及扩展性,如果数据量比较大,可以考虑部署5个broker节点,每个节点挂载4块数据盘;
2、创建topic,分区数和副本数建议与旧集群一致;
注意点
1、由于新集群没有旧集群的消费组信息,切换之前请确认代码配置消费组策略是latest(从最新消费)还是earliest(从头消费),以下针对不同方案提供不同的处理方式
2、kafka自带的kafka-mirror-maker.sh数据同步工具,迁移数据速度比较慢,并且新旧topic消息的分区和offset不一致
方案一:不迁移数据
注意:
如果消费组策略是earliest(从头消费),切换消费者之前不需要做任何配置;
如果消费组策略是latest(从最新消费),切换消费者之前需要在新集群手动创建消费组并把消费组策略调为earliest
1、切换生产流,生产者将数据生产到新的Kafka 实例;
2、等待消费者持续消费旧Kafka集群的数据,直到消费完成(kafdrop或者grafana可以观察);
3、切换消费者,消费新kafka集群数据;
4、观察数据,生产和消费正常,旧集群没有对应TCP连接,即迁移完毕。
方案二:迁移数据
注意:
如果消费组策略是latest(从最新消费),切换消费者之前不需要做任何配置;
如果消费组策略是earliest(从头消费),切换消费者之前需要在新集群手动创建消费组并把消费组策略调为latest
1、配置kafka集群数据同步;
2、停止生产流;
3、等待消费者持续消费旧Kafka集群的数据,直到消费完成(kafdrop或者grafana可以观察);
4、切换消费者到新kafka集群;
5、启动生产流,生产者将数据生产到新的Kafka 实例;
6、观察数据,生产和消费正常,旧集群没有对应TCP连接,即迁移完毕。
方案三:迁移数据特殊情况(消费者做幂等处理或者offset不提交到kafka)
注意:
如果消费组策略是earliest(从头消费),切换消费者之前不需要做任何配置;
如果消费组策略是latest(从最新消费),切换消费者之前需要在新集群手动创建消费组并把消费组策略调为earliest
1、配置kafka集群数据同步;
2、切换生产流,生产者将数据生产到新的Kafka 实例;
3、切换消费者,消费新kafka集群数据;
4、观察数据,生产和消费正常,旧集群没有对应TCP连接,即迁移完毕。
迁移建议
1、如果旧集群topic设置了数据过期时间,建议使用方案一,迁移后等数据过期后即可回收旧集群;
2、如果旧集群topic数据永久保存,建议使用方案一,旧集群数据使用nifi同步到冷备集群即可回收旧机器;
3、如果对消息的分区和offset有要求,建议使用方案二