Skip to main content

示例:验证秒级分区迁移

本文档介绍使用 Kafka CLI 工具验证 AutoMQ 的秒级分区迁移功能。其中 Kafka CLI 工具通过 AutoMQ 提供的 docker 镜像运行。

首先,创建一个分区数为 1 的新 Kafka 主题,并启动一个生产者往其中写入一定量的数据。然后,尝试在不同的 AutoMQ broker 之间通过 reassign 命令迁移分区,观察分区迁移完成所需要的耗时。

前置条件

进行分区迁移测试前,需要满足如下条件:

完成 AutoMQ 集群的安装部署 ,您可以参考以下方式安装部署 AutoMQ:

此外,运行测试程序的主机 需要满足如下条件:

  • Linux/Mac/Windows Subsystem for Linux

  • Docker

info

如果下载容器镜像速度慢,请参照 Docker Hub 镜像加速▸

如果此前的 AutoMQ 集群参考Docker 部署多节点测试集群▸ 部署,则获取的集群 Bootstrap 地址是类似 “server1:9092,server2:9092,server3:9092 ”,且 AutoMQ 集群位于“automq_net ” Docker 网络下。

tip

请根据部署的实际配置,将下方的 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。实际测试过程根据分区的分布情况,可以选择迁移到其他节点。

  1. 创建分区迁移计划。

echo '{
"partitions": [
{
"topic": "reassign-topic",
"partition": 0,
"replicas": [
2
]
}
],
"version": 1
}' > move.json

  1. 执行分区迁移计划。

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"