005-kafka基本维护

阅读量: zyh 2019-03-03 17:01:58
Categories: > Tags:

分区重新分配工具

bin/kafka-reassign-partitions.sh 可以用来调整分区副本的重新分布,包括增加副本,迁移副本等。

此工具有三大选项:

扩展集群

集群扩展意味着增加一个新的broker。

kafka不会自动平衡数据。

需要手动启动分区重新分配工具(bin/kafka-reassign-partitions.sh)来进行自动化分配。

创建分配计划

编写【指定要迁移】的topic列表文件topics-to-move.json

 {"topics": [{"topic": "foo1"},
              {"topic": "foo2"}],
  "version":1
  }

将topic列表里的topic迁移到broker.id为"5和6"的节点上.

bin/kafka-reassign-partitions.sh \
--command-config config/my.tools.properties \
--bootstrap-server kafka1:8123 \
--topics-to-move-json-file topics-to-move.json \
--broker-list "5,6" \
--generate

输出如下:先输出当前topic分区的分布配置,然后输出调整后的分布配置

Current partition replica assignment  
{"version":1,
  "partitions":[{"topic":"foo1","partition":2,"replicas":[1,2]},
                {"topic":"foo1","partition":0,"replicas":[3,4]},
                {"topic":"foo2","partition":2,"replicas":[1,2]},
                {"topic":"foo2","partition":0,"replicas":[3,4]},
                {"topic":"foo1","partition":1,"replicas":[2,3]},
                {"topic":"foo2","partition":1,"replicas":[2,3]}]
  }

Proposed partition reassignment configuration
  {"version":1,
  "partitions":[{"topic":"foo1","partition":2,"replicas":[5,6]},
                {"topic":"foo1","partition":0,"replicas":[5,6]},
                {"topic":"foo2","partition":2,"replicas":[5,6]},
                {"topic":"foo2","partition":0,"replicas":[5,6]},
                {"topic":"foo1","partition":1,"replicas":[5,6]},
                {"topic":"foo2","partition":1,"replicas":[5,6]}]
  }

将上面输出的两部分配置,分别保存为当前topic分区落点配置topics-current-plan.json和预期topic分区落点配置topics-expect-plan.json

执行分配计划

bin/kafka-reassign-partitions.sh \
--command-config config/my.tools.properties \
--bootstrap-server kafka1:8123 \
--reassignment-json-file topics-expect-plan.json \
--execute

ℹ️自定义分配计划只需要满足上面分配计划的文件格式即可.

添加限速:–throttle 50000000 限速50MB/s 你可以多次重复执行上述命令并通过新的限速值来动态调整限速.

检查分配计划

bin/kafka-reassign-partitions.sh \
--command-config config/my.tools.properties \
--bootstrap-server kafka1:8123 \
--reassignment-json-file topics-expect-plan.json \
--verify

ℹ️如果–execute期间添加了–throttle,则–verify会在迁移完成后清空–throttle

分区副本因子调整

调整副本因子,其实就是自定义分区配置,参考上面的配置,仅针对需要调整的topic的分区自定义配置并执行即可。

问题点

限速带来的问题

使用限速可能会导致复制速度过慢,以至于复制速度低于生产者写入速度。这会导致复制数据滞后越来越大。因此,应该在复制期间,监控滞后状态。这里的复制速度,就是消费速度。

滞后指标如下:

kafka.server:type=FetcherLagMetrics,name=ConsumerLag,clientId=([-.\w]+),topic=([-.\w]+),partition=([0-9]+)

如果发现指标没有降低,则应该放宽限速。

关于消费速度滞后监控,可以采取prometheus+grafana。