本文介绍如何将自建Kafka集群上的消费者程序平滑地迁移到云消息队列 Kafka 版

背景信息

云消息队列 Kafka 版控制台提供迁移实例功能,您可以使用该功能将自建Kafka集群或其他云Kafka集群的元数据(Topic和Group配置信息)和消息数据同步到目标集群,迁移完成后目标集群的元数据与源集群的元数据保持一致并且持续更新。

本文以开源Apache Kafka为例介绍使用实例迁移功能将自建集群上的消费者程序迁移到云消息队列 Kafka 版

前提条件

创建迁移任务

  1. 登录云消息队列 Kafka 版控制台,在概览页面的资源分布区域,选择地域。
  2. 在左侧菜单栏单击迁移路由,然后从实例列表的下拉列表选择目标实例,单击创建任务
  3. 创建任务配置向导页面,完成以下操作。
    1. 配置基本信息页签,设置任务名称,选择任务类型迁移,然后单击下一步
    2. 配置源服务页签,配置以下参数,然后单击下一步
      参数说明示例
      接入点配置源Apache Kafka集群的接入点信息。192.168.XX.XX:9092
      安全协议选择创建Apache Kafka集群时设置的安全协议。PLAINTEXT
      任务数选择同步数据的线程并发数。12
      同步sasl用户迁移数据时是否同步SASL用户。单击配置运行环境显示该参数。
      同步topic acls迁移数据时是否同步Topic ACLS。单击配置运行环境显示该参数。
      同步消费组迁移数据时是否同步创建消费组。单击配置运行环境显示该参数。
      同步消费位点迁移数据时是否同步消费位点。单击配置运行环境显示该参数。
      Topic源实例的Topic是否需要同步到目标实例,不填写则同步所有Topic。单击配置运行环境显示该参数。test-topic
      创建为Local引擎 Topic迁移到目标实例的非Compact类型的Topic如果想保持为Local引擎,则在此填写。不填写则被创建为云引擎。单击配置运行环境显示该参数。test-topic
    3. 配置目标服务页签,单击创建
  4. 创建完成后,在迁移路由页面,从实例列表的下拉列表选择目标实例,在目标实例列表中找到创建的任务,单击其操作列的部署
    迁移路由页面,您可以看到创建的任务状态运行中,则说明任务创建成功。您可以在左侧导航栏的实例列表页面查看迁移到云消息队列 Kafka 版上的Apache Kafka集群。

在创建的迁移任务右侧操作列,您可以查看任务详情、查看同步进度、修改任务参数配置、暂停任务和删除任务。

启动消费者程序

通过实例迁移功能,目标实例将源实例的全量数据追平并开始追加增量后:

  • 若您创建消费者程序时使用Subscribe方式消费消息,可以直接在目标实例启动新的消费者程序。新消费者程序启动后,目标实例会阻止迁移组件继续同步消费位点。当确认新消费者程序没有问题后,再在源集群停止旧消费者程序。如果不停止旧消费者程序,那么当新消费者程序全部停止后,迁移组件会继续同步消费位点,产生不可预知的问题,例如覆盖新消费者程序提交的位点。
  • 若您创建消费者程序时使用Assign方式消费消息,请先在源集群停止旧消费者程序,旧消费者程序停止后,迁移组件也会停止同步旧消费者程序所用的消费组的消费位点,然后再在目标实例启动新消费者程序。
  • 若您无法确定消费者程序使用哪种消费方式,请先在源集群停止旧消费者程序,旧消费者程序停止后,迁移组件也会停止同步旧消费者程序所用的消费组的消费位点,然后再在目标实例启动新消费者程序。