示例:验证秒级分区迁移
本文档介绍使用 Kafka CLI 工具验证 AutoMQ 的秒级分区迁移功能。其中 Kafka CLI 工具通过 AutoMQ 提供的 docker 镜像运行。
首先,创建一个分区数为 1 的新 Kafka 主题,并启动一个生产者往其中写入一定量的数据。然后,尝试在不同的 AutoMQ broker 之间通过 reassign 命令迁移分区,观察分区迁移完成所需要的耗时。
前置条件
进行分区迁移测试前,需要满足如下条件:
完成 AutoMQ 集群的安装部署 ,您可以参考以下方式安装部署 AutoMQ:
此外,运行测试程序的主机 需要满足如下条件:
-
Linux/Mac/Windows Subsystem for Linux
-
Docker
如果下载容器镜像速度慢,请参照 Docker Hub 镜像加速▸
- Deploy Multi-Nodes Test Cluster on Docker
- Deploy Multi-Nodes Cluster on Linux
如果此前的 AutoMQ 集群参考Docker 部署多节点测试集群▸ 部署,则获取的集群 Bootstrap 地址是类似 “server1:9092,server2:9092,server3:9092 ”,且 AutoMQ 集群位于“automq_net ” Docker 网络下。
请根据部署的实际配置,将下方的 bootstrap-server 地址更换成实际集群的地址。
创建 Topic
docker run --network automq_net automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-topics.sh --create --topic reassign-topic --bootstrap-server server1:9092,server2:9092,server3:9092"
发送消息
执行以下命令发送如干数量的数据。
docker run --network automq_net automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-producer-perf-test.sh --topic reassign-topic --num-records=1024000 --throughput 5120 --record-size 1024 --producer-props bootstrap.servers=server1:9092,server2:9092,server3:9092 linger.ms=100 batch.size=524288 buffer.memory=134217728 max.request.size=67108864"
查看分区分布
docker run --network automq_net automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-topics.sh --topic reassign-topic --describe --bootstrap-server server1:9092,server2:9092,server3:9092"
在 Broker 之间迁移分区
当前步骤,假设测试的 “reassign-topic” 主题的分区 0 位于节点 1,将该分区迁移到节点 2。实际测试过程根据分区的分布情况,可以选择迁移到其他节点。
- 创建分区迁移计划。
echo '{
"partitions": [
{
"topic": "reassign-topic",
"partition": 0,
"replicas": [
2
]
}
],
"version": 1
}' > move.json
- 执行分区迁移计划。
docker run --network automq_net -v $(pwd)/move.json:/move.json automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server server1:9092,server2:9092,server3:9092 --reassignment-json-file /move.json --execute"
查看是否迁移完成
docker run --network automq_net -v $(pwd)/move.json:/move.json automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server server1:9092,server2:9092,server3:9092 --reassignment-json-file /move.json --verify"
如果此前的 AutoMQ 集群参考Linux 主机部署多节点集群▸部署,则获取的集群 Bootstrap 地址是类似 “192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092 ”。
请根据部署的实际配置,将下方的 bootstrap-server 地址更换成实际集群的地址。