MSK集群水平扩容

MSK支持水平扩容(增加broker节点数量)和垂直扩容(调大实例类型)。本节将介绍水平扩容

集群水平扩容—理论

  • 当集群的producer、consumer数量增加时,要对集群进行扩容。方式是增加broker节点数量

  • 在添加完broker后,需要集群进行rebalance,将partition和replica迁到新broker上,否则这些新添加的broker上没有工作负载


例如,下面的图中有三个broker,其中某个topic有10个partition,分布在3个broker上:

img 在每个az各添加一个broker后,partition并没有重新分布,新添加的broker上没有partition:

img 对partition进行reassignment后,会将原来的partition一部分转移到新的broker上: img

注意的点:

  • MSK一次只能添加和az数量相等的broker节点,例如上图中一次只能添加3个。
  • 在添加完broker后,注意要reassign partition或创建新的topic,否则它们上面没有负载。
  • 迁移partition需要时间,因为数据需要复制到新的broker,并且可能会影响到集群的性能。在生产环境高负载下,要谨慎运行这个命令。

集群扩容 - 实践

在扩容之前,我们先创建一个topic,有10个partition,3个replica:

# 获取kafka broker地址
export KAFKA=$(aws kafka get-bootstrap-brokers --cluster-arn <cluster-arn-here> --query BootstrapBrokerString --output text)

kafka-topics --bootstrap-server $KAFKA --create --replication-factor 3 --partitions 10 --topic topic10  # 创建topic

image-20211230094421359

集群水平扩容有两种方式:通过控制台操作或cli,任选一种即可。本节只介绍通过控制台页面操作。

通过控制台操作

在MSK集群的Brokers页面上,有Edit number of brokers选项:

image-20211230095631190

原有集群有3个broker节点,我们将其扩为6个(每个az两个):

image-20211230095653290

当点击确定后,集群的状态变为Updating,等大概十分钟后,扩容完成。

image-20211230095723377

扩容完成后会有提示

image-20211230101040284