迁移Kafka集群的最佳方式

时间:2015-03-16 21:31:52

标签: apache-kafka

我有一个包含2个节点的kafka集群。我的卡夫卡版本是0.8.1 我需要将它迁移到另一组服务器。

迁移的最佳方式是什么,不保持停机时间和数据丢失?

2 个答案:

答案 0 :(得分:1)

假设新服务器和旧服务器位于同一数据中心,最简单的方法是将新服务器作为所有现有分区的副本添加。卡夫卡将使他们同步,使他们成为ISR。一个他们是同步的你应该能够安全地关闭旧节点。

这当然取决于您的消费者配置方式(他们会自动找到新节点吗?)以及您所使用的Kafka版本。

看看:

您需要使用 kafka-reassign-partitions.sh 工具来实现这一目标。首先在非生产环境中进行测试。

答案 1 :(得分:0)

我建议你使用kafka mirror maker。请查看https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27846330https://kafka.apache.org/documentation.html#basic_ops_mirror_maker

基本上你运行这样的东西:

cp /usr/lib/kafka/config/consumer.properties oldCluster.consumer.properties
cp /usr/lib/kafka/config/producer.properties newCluster.producer.properties

比你设置旧集群的东西,例如:

bootstrap.servers=clusterOldServer1.full.name:9092
auto.offset.reset=earliest
#zookeeper.connect=commentedOutZookeeperForOlderKafka

然后运行migrate命令,它将作为“守护进程”运行:

time kafka-run-class kafka.tools.MirrorMaker --consumer.config oldCluster.consumer.properties --producer.config newCluster.producer.properties --whitelist="topic.*regexp"