迁移背景
将单节点的Kafka服务迁移至新的环境,并升级为集群模式
迁移思路
通过扩种/缩减集群节点,以及Kafka自带的迁移功能,将旧节点数据迁移至新节点。
迁移步骤
1、在新节点部署Kafka服务,主要配置config目录下server.properties文件以下参数:
broker.id=ID号 //集群内代表节点的唯一号码,如原有三个旧节点是0~2,新的三个节点就是3~5
listeners=PLAINTEXT://本机IP:9092 //本机监听地址
2、启动新节点,没有启动顺序,也不需要对旧节点做任何操作,启动命令如下:
bin/kafka-server-start.sh -daemon ../config/server.properties //启动kafka
bin/kafka-server-stop.sh //停止kafka
3、确认节点加入集群,并确认要移动的topics
bin/kafka-topics.sh --list --zookeeper zookeeper地址:端口 //列出当前kafka集群的topics,在新节点上执行此命令也变相确认节点是否加入集群
4、在新节点上复制topics,并参考下面的格式写入到后缀名为json的文件,文件名可以随意起,此处名字暂且命名为topics-to-move.json
{"topics": [
{"topic": "name1"},
{"topic": "name2"},
{"topic": "fortest3"}
],
"version":1
}
5、执行如下命令,生成移动脚本
//生成迁移方案
bin/kafka-reassign-partitions.sh --zookeeper 10.16.221.27:2181/kafka-prod --topics-to-move-json-file topics-to-move.json --broker-list "3,4,5" --generate
6、将生成的方案结果复制出来,粘贴到一个新建的json文件中,文件名随意,此处名字暂且命名为topics-move.json
//执行迁移动作
bin/kafka-reassign-partitions.sh --zookeeper 10.16.221.27:2181/kafka-prod --reassignment-json-file topics-move.json --execute
//查看迁移进度
bin/kafka-reassign-partitions.sh --zookeeper 10.16.221.27:2181/kafka-prod --reassignment-json-file topics-move.json --verify
7、数据迁移完后,切换生产者和消费者服务kafka连接地址
8、全部连接迁移完后,停掉旧节点服务。