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

配置Kafka间的数据复制

本章节介绍如何创建Kafka数据复制的Smart Connect任务,通过Smart Connect任务可以在两个Kafka实例之间,实现数据的单向或双向复制。

  • 2022年7月1日前已开启Smart Connect的实例,如果没有Kafka数据复制,请先关闭Smart Connect,然后再重新开启Smart Connect。
  • 源Kafka实例中的数据会实时同步到目标Kafka实例中。

约束与限制

  • 单机实例不支持创建Kafka数据复制的Smart Connect任务。
  • 一个实例最多创建18个Smart Connect任务。
  • 使用Kafka数据复制时,两个Kafka实例间只能通过内网连接。如果两个Kafka实例处于不同的VPC中,请先参考使用VPCEP实现跨VPC访问Kafka或者对等连接打通网络。
  • Smart Connect任务创建成功后,不支持修改任务参数。

前提条件

配置Kafka间的数据复制

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

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

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例名称,进入实例详情页面。
  5. 在左侧导航栏单击“Smart Connect”,进入Smart Connect任务列表页面。
  6. 单击“创建Smart Connect任务”,进入“创建smart connect”页面。
  7. 在“connect任务名称”中,输入Smart Connect任务的名称,用于区分不同的Smart Connect任务。任务名称需要符合命名规则:长度为4~64个字符,只能由英文字母、数字、中划线、下划线组成。
  8. 在“预置类型”中,选择“Kafka数据复制”。
  9. 在“立即执行”中,选择任务创建后是否立即执行任务,默认开启立即执行。如果关闭,在需要执行此任务时,您可以在Smart Connect任务列表中手动开启任务。
  10. 在“当前kafka”区域,设置实例别名。实例别名需要符合命名规则:长度为1~20个字符,只能由英文字母、数字、中划线、下划线组成。

    实例别名用于以下两个场景中:

    • 开启“重命名Topic”,且“同步方式”为“推送”/“双向”时,当前Kafka实例的别名作为前缀添加到对端Kafka实例的Topic名称前,形成Topic新的名称。例如当前Kafka实例别名为A,对端Kafka实例的Topic名称为test,重命名后的Topic为A.test。
    • Kafka数据复制的Smart Connect任务创建成功后,当前Kafka实例会自动创建“mm2-offset-syncs.对端Kafka实例别名.internal”的Topic。如果Smart Connect任务开启了“同步消费进度”功能,且“同步方式”为“拉取”/“双向”时,当前Kafka实例还会自动创建“对端Kafka实例别名.checkpoints.internal”的Topic。这两个Topic用于存储内部数据,如果删除,会导致同步数据失败。

  11. 在“对端kafka”区域,设置以下参数。

    表1 对端Kafka实例参数说明

    参数

    参数说明

    实例别名

    设置实例别名,实例别名需要符合命名规则:长度为1~20个字符,只能由英文字母、数字、中划线、下划线组成。

    实例别名用于以下两个场景中:

    • 开启“重命名Topic”,且“同步方式”为“拉取”/“双向”时,对端Kafka实例的别名作为前缀添加到当前Kafka实例的Topic名称前,形成Topic新的名称。例如对端Kafka实例别名为B,当前Kafka实例的Topic名称为test01,重命名后的Topic为B.test01。
    • Kafka数据复制的Smart Connect任务创建成功后,如果Smart Connect任务开启了“同步消费进度”功能,且“同步方式”为“推送”/“双向”时,对端Kafka实例会自动创建“当前Kafka实例别名.checkpoints.internal”的Topic。此Topic用于存储内部数据,如果删除,会导致同步数据失败。

    配置类型

    支持以下两种配置类型:

    • Kafka地址:输入Kafka实例的连接信息。
    • 实例名称:选择已创建的Kafka实例。

    实例名称

    “配置类型”为“实例名称”时,需要设置。

    在下拉列表中,选择已创建的Kafka实例。

    对端Kafka实例必须和当前Kafka实例处于相同的VPC下,否则无法识别。

    Kafka地址

    “配置类型”为“Kafka地址”时,需要设置。

    输入Kafka实例的连接地址和端口号。

    使用Kafka数据复制时,两个Kafka实例间只能通过内网连接。如果两个Kafka实例处于不同的VPC中,请先参考使用VPCEP实现跨VPC访问Kafka或者对等连接打通网络。

    认证方式

    支持以下认证方式:

    • SASL_SSL:表示实例已开启SASL_SSL认证,客户端连接Kafka实例时采用SASL认证,数据通过SSL证书进行加密传输。
    • SASL_PLAINTEXT:表示实例开启SASL_PLAINTEXT认证,客户端连接Kafka实例时采用SASL认证,数据通过明文传输。
    • PLAINTEXT:表示实例未开启认证。

    认证机制

    “认证方式”为“SASL_SSL”/“SASL_PLAINTEXT”时,需要设置。

    • SCRAM-SHA-512:采用哈希算法对用户名与密码生成凭证,进行身份校验的安全认证机制,比PLAIN机制安全性更高。
    • PLAIN:一种简单的用户名密码校验机制。

    用户名

    “认证方式”为“SASL_SSL”/“SASL_PLAINTEXT”时,需要设置。

    首次开启密文接入时设置的用户名,或者创建用户时设置的用户名。

    密码

    “认证方式”为“SASL_SSL”/“SASL_PLAINTEXT”时,需要设置。

    首次开启密文接入时设置的密码,或者创建用户时设置的密码。

    Smart Connect任务创建成功后,如果您修改了对端实例的认证方式、认证机制或者密码,会导致同步任务失败。您需要删除当前Smart Connect任务,然后重新创建新的Smart Connect任务。

  12. 在“规则配置”区域,设置以下参数。

    表2 复制数据规则参数说明

    参数

    参数说明

    同步方式

    支持以下三种同步方式:

    • 拉取:把对端Kafka实例数据复制到当前Kafka实例中。
    • 推送:把当前Kafka实例数据复制到对端Kafka实例中。
    • 双向:两端Kafka实例数据进行双向复制。

    Topics

    设置需要进行数据复制的Topic。

    • 正则表达式:通过正则表达式匹配Topic。
    • 输入/选择:输入Topic名称,如果需要输入多个Topic名称,先输入一个Topic名称,按“Enter”,然后再输入下一个,按“Enter”,依次输入。或者在下拉列表中,选择Topic。最多输入/选择20个Topic。
    说明:

    Topic名称以internal结尾时(例如:topic.internal),此Topic的数据不会被同步。

    任务数

    数据复制的任务数。默认值为2,建议保持默认值。

    如果“同步方式”为“双向”,实际任务数=设置的任务数*2。

    重命名Topic

    在目标Topic名称前添加源端Kafka实例的别名,形成目标Topic新的名称。例如源端实例别名为A,目标Topic名称为test,重命名后的目标Topic为A.test。

    两端实例数据双向复制时,开启“重命名Topic”,防止循环复制。

    添加来源header

    目标Topic接收复制的消息,此消息header中包含消息来源。

    两端实例数据双向复制时,默认开启“添加来源header”,防止循环复制。

    同步消费进度

    开启“同步消费进度”后,将消费者消费进度同步到目标Kafka实例。

    须知:

    开启“同步消费进度”后,您需要注意以下几点:

    • 源端Kafka实例和目标端Kafka实例不能同时消费,否则会导致同步的消费进度异常。
    • 同步消费进度的频率为每分钟一次,因此会导致目标端的消费进度可能会略小于源端,造成部分消息被重复消费,所以需要消费者客户端业务逻辑兼容重复消费的场景。
    • 从源端同步的offset与目标端的offset并非一致关系,而是映射关系,如果消费进度由消费者客户端自行维护,消费者客户端从消费源端Kafka实例变为消费目标端Kafka实例后,不向目标端Kafka实例获取消费进度,可能会导致offset错误或消费进度重置。

    副本数

    在对端实例中自动创建Topic时,指定Topic的副本数,此参数值不能超过对端实例的代理数。

    如果对端实例中设置了“default.replication.factor”,此参数的优先级高于“default.replication.factor”。

    启动偏移量

    支持两种偏移量:

    • 最早:最小偏移量,即获取最早的数据。
    • 最新:最大偏移量,即获取最新的数据。

    压缩算法

    复制消息所使用的压缩算法。

    topic映射

    通过Topic映射,您可以自定义目标端Topic名称。

    最多新增20个Topic映射。不能同时设置“重命名Topic”和“topic映射”。

    • 创建双向数据复制任务时,为了防止循环复制,控制台限定必须开启“重命名Topic”或者“添加来源header”。如果您在两个实例间,对同一个Topic分别创建拉取和推送的任务,即形成双向数据复制,且两个任务都未开启“重命名Topic”和“添加来源header”,此时会导致数据循环复制。
    • 如果创建两个或以上配置完全相同的任务,即重复创建任务,且任务已开启“同步消费进度”,此时会导致数据重复复制,且目标Topic消费进度异常。
    图1 复制数据规则配置

  13. (可选)在页面右下角单击“开始检测”,测试两端Kafka实例的连通性。

    显示“连通性检测成功”时,表示两端Kafka实例可以正常连接。

  14. 单击“立即创建”,跳转到Smart Connect任务列表页面,页面右上角显示“创建xxx任务成功”。

    • Kafka数据复制的Smart Connect任务创建成功后,当前Kafka实例会自动创建“mm2-offset-syncs.对端Kafka实例别名.internal”的Topic。如果Smart Connect任务开启了“同步消费进度”功能,且“同步方式”为“拉取”/“双向”时,当前Kafka实例还会自动创建“对端Kafka实例别名.checkpoints.internal”的Topic。这两个Topic用于存储内部数据,如果删除,会导致同步数据失败。
    • Kafka数据复制的Smart Connect任务创建成功后,如果Smart Connect任务开启了“同步消费进度”功能,“同步方式”为“推送”/“双向”时,对端Kafka实例会自动创建“当前Kafka实例别名.checkpoints.internal”的Topic。此Topic用于存储内部数据,如果删除,会导致同步数据失败。