You need to enable JavaScript to run this app.
导航

Kafka 迁移上云(方案二)

最近更新时间2023.06.27 15:34:21

首次发布时间2022.06.28 10:45:27

本文介绍通过方案二将开源 Kafka 集群迁移到火山引擎消息队列 Kafka版的操作步骤。

注意事项

  • 业务迁移只迁移消息生产、消费链路和业务流量,并不会迁移 Kafka 旧集群上的消息数据。
  • 创建 Kafka 实例、迁移消息收发链路之前,请先确定 Kafka 实例可正常访问,以免因访问异常造成迁移失败。您可以访问 Kafka 实例详情页中的接入点,确认实例的网络连通性。
  • 业务迁移之前,请确认您已根据业务需求选择了正确的迁移方案。迁移方案对比请参考概述

1 环境准备

迁移之前,您需要根据业务量合理评估资源需求,并创建 Kafka 实例及相关的依赖资源。

1.1 迁移评估

根据现有业务量和消息量估算所需的消息队列 Kafka版资源,例如业务读写流量峰值、磁盘容量和分区数等。不同规格的 Kafka 实例代表不同的计算能力及存储空间,请根据业务量合理评估资源需求。

1.2 准备相关资源

确认资源需求之后,还需要准备相关资源,例如私有网络和子网、ECS云服务器和 Kafka 实例。

  1. 搭建环境。
    您需要创建私有网络和子网、购买 ECS 云服务器。迁移后您的服务需要和 Kafka 实例处于相同的区域(Region)和 VPC 内,才能正常访问实例。详细说明请参考 准备环境
  2. 购买 Kafka 实例。
    请根据业务量评估结果合理选择 Kafka 实例的计算规格和存储规格,保证资源充足。 详细操作步骤请参考 创建 Kafka 实例

2 迁移元数据

迁移元数据的步骤主要是在新的 Kafka 实例中创建与原 Kafka 集群相同的 Topic 和 Group 配置,包括 Topic 名称、分区数、副本数、消息保留时长等参数配置等。关于 Group 配置迁移,您可以根据需求选择在控制台创建 Group 或在使用 SDK 的过程中按需创建 Group。

  1. 在原 Kafka 集群中收集 Topic 和 Group 的基本信息。
    其中,核心配置如下:

    配置

    说明

    Topic 名称

    Topic 的名称。

    Topic 分区数

    此 Topic 的分区数量。分区数量越大,消费的并发度越大。

    分区副本数

    分区的副本个数,用于保障分区的高可用。当其中一个 Broker 故障时仍可保障数据可用性,副本数越大可靠性越高。

    Group ID

    Group 的 ID,即生产和消费时指定的消费组 Group ID。

  2. 在火山引擎消息队列 Kafka版控制台中创建同样数量和配置的 Topic。
    您可以根据业务需要选择手动创建 Topic 或通过配置文件批量创建 Topic。操作步骤请参考 创建 Topic批量导入 Topic

    说明

    Topic 名称和分区数等核心配置需要和原 Kafka 集群的 Topic 配置相同,消息保留时长等参数可以根据业务需求自行配置。

  3. 创建同样数量和配置的 Group。
    消息队列 Kafka版通过自由使用 Group 功能控制 Kafka 实例支持的 Group 创建方式,该功能默认为开启状态。您可以根据需求选择是否开启自由使用 Group 功能,并且创建和迁移源端同样数量和 ID 的 Group。

    • 开启时,不仅可通过控制台创建 Group,还可以通过消费 SDK 解析获取并展示 Group 的信息。使用 SDK 时按需创建 Group 的方式请参考2 消费时指定 Group
    • 关闭后,只能通过控制台创建 Group。通过控制台创建 Group 的操作步骤请参考通过控制台创建 Group

3 迁移消息服务

方案二先迁移新的生产端,但不消费,待旧的消息在旧消费端消费完成后再启动新的消费端开始消费。适用于消息消费时序敏感型或对有序消息有依赖的业务场景。
迁移步骤如下:

  1. 迁移生产端至消息队列 Kafka版实例。
    在旧集群停止生产端之后,在新集群中启动新的生产端业务。此时新集群中无消费端,所以产生的新消息暂时不会被消费。
  2. 在旧消息全部被旧消费者消费完毕后,下线旧消费者以及旧 Kafka 集群。
    停止旧集群的生产业务之后,旧消费者仍在持续消费存量的旧消息。您可以参考 查看迁移进度和结果 ,观察消费组的处理进度,待消费组处理完成后,继续进行后续操作。
  3. 为消息队列 Kafka版实例启动新的消费端,开始消费消息。
    成功启动新集群的生产业务后,说明您已通过火山引擎消息队列 Kafka版在云端搭建了消息生产和消费链路,您可以根据业务自身的运行逻辑判断当前服务的健康度,确认火山引擎 Kafka 实例是否正常运行,也可以参考 查看迁移进度和结果 根据云监控数据判断实例的生产和消费是否正常。