topic副本扩缩容

kafka并没有提供一个专门的脚本来支持副本的扩缩,不像kafka-topic.sh脚本一样,是可以扩分区的。想要对副本进行扩缩,只能是曲线救国了,利用kafka-reassign-partitions.sh来重新分配副本。

查看主题的详情

./kafka-topics.sh --command-config ../config/sasl.properties --bootstrap-server kafka01:9092,kafka02:9092,kafka03:9092 --describe --topic jiaxzeng

img

扩容副本数

  1. 生成推荐配置脚本

    在进行分区副本重分配之前,最好是用下面方式获取一个合理的分配文件,编写 /tmp/topic-generate.json 文件; 这个文件就是告知想对哪些Topic进行重新分配的计算

    {
      "topics": [
        {
          "topic": "jiaxzeng"
        }
      ],
      "version": 1
    }
    

    生成重分配方案

    zk_conn=$(awk -F= '/^zookeeper.connect=/ {print $2}' /app/kafka/config/server.properties) 
    ./kafka-reassign-partitions.sh --zookeeper ${zk_conn} --topics-to-move-json-file /tmp/topic-generate.json --broker-list "1,2,3" --generate
    

    img

  2. 迁移副本

    先将上面截图生成新的分区方案复制到 /tmp/reassignment-file.json 文件

    {"version":1,"partitions":[{"topic":"jiaxzeng","partition":2,"replicas":[2],"log_dirs":["any"]},{"topic":"jiaxzeng","partition":1,"replicas":[1],"log_dirs":["any"]},{"topic":"jiaxzeng","partition":0,"replicas":[3],"log_dirs":["any"]}]}
    

    修改 /tmp/reassignment-file.json 文件

    注意

    • 每个 partition 中的 replicas 不能再同一台 broker 主机上。replicas 参数有几个节点,则说明该partition有几个副本数
    • log_dirs 参数的个数需要与 replicas 个数一致,或者直接删除该参数。
    {"version":1,"partitions":[{"topic":"jiaxzeng","partition":2,"replicas":[3, 2]},{"topic":"jiaxzeng","partition":1,"replicas":[2, 1]},{"topic":"jiaxzeng","partition":0,"replicas":[1, 3]}]}
    
    zk_conn=$(awk -F= '/^zookeeper.connect=/ {print $2}' /app/kafka/config/server.properties)
    ./kafka-reassign-partitions.sh --zookeeper ${zk_conn} --reassignment-json-file /tmp/reassignment-file.json --execute
    

    img

  3. 验证迁移副本

    该选项用于检查分区重新分配的状态,同时 --throttle 流量限制也会被移除掉。固迁移过程有做限流则必须执行

    zk_conn=$(awk -F= '/^zookeeper.connect=/ {print $2}' /app/kafka/config/server.properties)
    ./kafka-reassign-partitions.sh --zookeeper ${zk_conn} --reassignment-json-file /tmp/reassignment-file.json --verify
    

    img

检查主题副本数

./kafka-topics.sh --command-config ../config/sasl.properties --bootstrap-server kafka01:9092,kafka02:9092,kafka03:9092 --describe --topic jiaxzeng

img

posted @ 2023-04-16 18:19  jiaxzeng  阅读(144)  评论(0)    收藏  举报