更新时间:2024-10-10 GMT+08:00

变更Kafka实例规格

Kafka实例创建成功后,您可以根据业务需要,扩容或者缩容实例规格,Kafka实例支持的变更配置如表1所示。代理数量、基准带宽、存储空间和代理规格不能同时变更,每次变更只支持一种配置类型的变更。

表1 变更配置列表

实例规格类型

变更配置类型

是否支持扩容

是否支持缩容

新规格实例

代理数量

×

存储空间

×

代理规格

老规格实例

基准带宽

×

存储空间

×

代理规格

×

×

单机实例不支持变更实例规格。

怎样判断老规格实例和新规格实例?

  • 老规格实例:在实例列表中,“规格”显示为带宽(如100MB/s)的实例。
  • 新规格实例:在实例列表中,“规格”显示为ECS规格和代理个数(如kafka.2u4g.cluster*3 broker)的实例。
图1 实例列表

变更实例规格的影响

变更实例规格的时长和代理数量有关,单个代理的变更时长一般在5~10分钟,代理数量越多,规格变更时间越长。

表2 变更实例规格的影响

变更配置类型

影响

基准带宽/代理数量

  • 扩容基准带宽/代理数量不会影响原来的代理,业务也不受影响。
  • 扩容基准带宽/代理数量时,系统会根据当前磁盘大小进行相应比例的存储空间扩容。例如扩容前实例的代理数为3,每个代理的磁盘大小为200GB,扩容后实例的代理数为10,此时代理的磁盘大小依旧为200GB,但是总磁盘大小为2000GB。
  • 新创建的Topic才会分布在新代理上,原有Topic还分布在原有代理上,造成分区分布不均匀。通过修改分区平衡,实现将原有Topic分区的副本迁移到新代理上。

存储空间

  • 扩容存储空间有次数限制,只能扩容20次。
  • 扩容存储空间不会影响业务。

代理规格

  • 若Topic为单副本,扩容/缩容期间无法对该Topic生产消息或消费消息,会造成业务中断。
  • 若Topic为多副本,扩容/缩容代理规格不会造成服务中断,但可能会导致消费的分区消息发生乱序,请谨慎评估业务影响,建议您在业务低峰期扩容/缩容。
  • 扩容/缩容代理规格的过程中,节点滚动重启造成分区Leader切换,会发生秒级连接闪断,在用户网络环境稳定的前提下,Leader切换时长一般为1分钟以内。多副本的Topic需要在生产客户端配置重试机制,方法如下:
    • 生产客户端为Kafka开源客户端时,检查是否配置retries参数,建议此参数值设置为3~5。
    • 生产客户端为Flink客户端时,检查是否配置重启策略,配置重启策略可以参考如下代码。
      StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
      env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3, Time.seconds(20)));
  • 若实例已创建的分区数总和大于待缩容规格的实例分区数上限,此时无法缩容。不同规格配置的实例分区数上限不同,具体请参见产品规格

    例如:kafka.4u8g.cluster*3的实例,已创建800个分区,您想把此实例的规格缩容为kafka.2u4g.cluster*3,kafka.2u4g.cluster*3规格的实例分区数上限为750,此时无法缩容。

扩容/缩容代理规格的过程

在扩容/缩容代理规格的过程中,代理采用滚动重启的方式进行实例变更,具体过程如下(以3个代理为例介绍):

  1. 停止Broker 0的Kafka进程
  2. 扩容/缩容Broker 0的规格
  3. 重启Broker 0的Kafka进程
  4. 重复1~3,扩容/缩容Broker 1的规格。
  5. 重复1~3,扩容/缩容Broker 2的规格。
图2 扩容/缩容代理规格过程

变更Kafka实例规格

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 在Kafka实例所在行,单击“更多 > 变更规格”,进入“分布式消息服务Kafka版变更规格”页面。
  5. 根据实际情况选择扩容存储空间、代理数量、代理规格、基准带宽,或者缩容代理规格。

    • 扩容基准带宽(老规格实例
      1. 在“规格”中,选择扩容后的带宽,单击“下一步”。
      2. 确认扩容信息无误后,单击“提交”。
      3. 在实例列表页面,查看变更是否成功?
        • 实例状态从“变更中”变为“运行中”时,表示变更成功,在“规格”中查看扩容后的带宽大小。
          图3 查看扩容后的带宽
        • 实例状态从“变更中”变为“变更失败”时,表示变更失败,把鼠标放在“变更失败”上,显示变更失败的原因。

          实例状态为“变更失败”时,无法对实例进行重启、修改和删除等操作。等一段时间实例状态会自动从“变更失败”变为“运行中”,此时可以继续对实例进行操作。如果未变为“运行中”,请联系客服处理。

      扩容基准带宽后,为了提高可靠性,需要在客户端连接配置中增加新扩容代理的IP地址。

    • 扩容存储空间(老规格实例
      1. 在“存储空间”中,选择扩容后的存储空间大小,单击“下一步”。
      2. 确认扩容信息无误后,单击“提交”。
      3. 在实例列表页面,查看变更是否成功?
        • 实例状态从“变更中”变为“运行中”时,表示变更成功,在“已用/可用存储空间”中查看扩容后的存储空间大小。
          图4 查看扩容后的存储空间
        • 实例状态从“变更中”变为“变更失败”时,表示变更失败,把鼠标放在“变更失败”上,显示变更失败的原因。

          实例状态为“变更失败”时,无法对实例进行重启、修改和删除等操作。等一段时间实例状态会自动从“变更失败”变为“运行中”,此时可以继续对实例进行操作。如果未变为“运行中”,请联系客服处理。

    • 扩容存储空间(新规格实例
      1. 在“变更类型”中,选择“存储空间”,在“单个代理存储空间”中,选择扩容后的单个代理的存储空间大小,不同实例规格对应的存储空间范围不同,具体请参考产品规格,单击“下一步”。
      2. 确认扩容信息无误后,单击“提交”。
      3. 在实例列表页面,查看变更是否成功?
        • 实例状态从“变更中”变为“运行中”时,表示变更成功,在“已用/可用存储空间”中查看扩容后的存储空间大小(即扩容后的单个代理的存储空间*代理数量)。
        • 实例状态从“变更中”变为“变更失败”时,表示变更失败,把鼠标放在“变更失败”上,显示变更失败的原因。

          实例状态为“变更失败”时,无法对实例进行重启、修改和删除等操作。等一段时间实例状态会自动从“变更失败”变为“运行中”,此时可以继续对实例进行操作。如果未变为“运行中”,请联系客服处理。

      图5 扩容存储空间
    • 扩容代理数量(新规格实例
      1. 在“变更类型”中,选择“代理数量”。
      2. 在“代理数量”中,选择扩容后的代理数量。不同实例规格对应的代理数量范围不同,具体请参考产品规格
      3. 如果已开启公网访问,在“弹性IP地址”中,选择新扩容代理的公网IP地址。
      4. “子网”保持默认设置。
      5. 在“内网IP地址”中,选择“自动分配”或者“手动选择”。
        • 自动分配:系统自动分配子网中可用的IP地址。
        • 手动选择:在下拉框中为新扩容代理勾选指定的IP地址。如果指定的IP地址数量少于代理数量时,系统会自动为剩余代理分配IP地址。
      6. 单击“下一步”,进入变更信息确认页面。
      7. 确认扩容信息无误后,单击“提交”。
      8. 在实例列表页面,查看变更是否成功?
        • 实例状态从“变更中”变为“运行中”时,表示变更成功,在“规格”中查看扩容后的代理数量。
        • 实例状态从“变更中”变为“变更失败”时,表示变更失败,把鼠标放在“变更失败”上,显示变更失败的原因。

          实例状态为“变更失败”时,无法对实例进行重启、修改和删除等操作。等一段时间实例状态会自动从“变更失败”变为“运行中”,此时可以继续对实例进行操作。如果未变为“运行中”,请联系客服处理。

      图6 扩容代理数量

      扩容代理数量后,为了提高可靠性,需要在客户端连接配置中增加新扩容代理的IP地址。

    • 扩容/缩容代理规格(新规格实例
      1. 在“变更类型”中,选择“代理规格”。
      2. 在“代理规格”中,选择扩容/缩容后的代理规格。
      3. 在“风险检查”区域,查看扩容/缩容前的检查项是否正常。

        如果检查项有异常,请先根据提示信息修改,然后单击“重新检查”。如果确认异常的检查项无需修改,请勾选“我已知晓风险。”。

      4. 单击“下一步”,确认扩容/缩容信息无误后,单击“提交”。
      5. 在实例列表页面,查看变更是否成功?
        • 实例状态从“变更中”变为“运行中”时,表示变更成功,在“规格”中查看扩容/缩容后的代理规格。
        • 实例状态从“变更中”变为“变更失败”时,表示变更失败,把鼠标放在“变更失败”上,显示变更失败的原因。

          实例状态为“变更失败”时,无法对实例进行重启、修改和删除等操作。等一段时间实例状态会自动从“变更失败”变为“运行中”,此时可以继续对实例进行操作。如果未变为“运行中”,请联系客服处理。

      图7 扩容/缩容代理规格