我有一个包含2个节点的kafka集群。我的卡夫卡版本是0.8.1 我需要将它迁移到另一组服务器。
迁移的最佳方式是什么,不保持停机时间和数据丢失?
答案 0 :(得分:1)
假设新服务器和旧服务器位于同一数据中心,最简单的方法是将新服务器作为所有现有分区的副本添加。卡夫卡将使他们同步,使他们成为ISR。一个他们是同步的你应该能够安全地关闭旧节点。
这当然取决于您的消费者配置方式(他们会自动找到新节点吗?)以及您所使用的Kafka版本。
看看:
您需要使用 kafka-reassign-partitions.sh 工具来实现这一目标。首先在非生产环境中进行测试。
答案 1 :(得分:0)
我建议你使用kafka mirror maker。请查看https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27846330或https://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"