步骤 3:创建 Amazon MSK 复制器 - Amazon Managed Streaming for Apache Kafka

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

步骤 3:创建 Amazon MSK 复制器

在创建 Amazon MSK Replicator 之前,请确保已创建MSK复制器所需的权限创建。

使用创建复制器 AWS 目标集群区域中的控制台

  1. 在 AWS 目标MSK集群所在的区域,在https://console.aws.amazon.com/msk/家中打开 Amazon MSK 控制台? region=us-east-1#/home/。

  2. 选择复制器以显示账户中的复制器列表。

  3. 选择创建复制器

  4. 复制器详细信息窗格中,为新的复制器指定一个唯一的名称。

选择源集群

源集群包含要复制到目标集MSK群的数据。

  1. 源集群窗格中,选择 AWS 源集群所在的区域。

    您可以通过前往集群并查看集MSK群详细信息来查找集群的区域ARN。区域名称嵌入在ARN字符串中。在以下示例中ARN,ap-southeast-2是集群区域。

    arn:aws:kafka:ap-southeast-2:123456789012:cluster/cluster-11/eec93c7f-4e8b-4baf-89fb-95de01ee639c-s1
  2. 输入您的源集群或浏览以选择您的源集群。ARN

  3. 为您的源集群选择子网。

    控制台显示源集群区域中可用的子网供您选择。必须至少选择两个子网。对于同区域 MSK Replicator,您选择的用于访问源集群的子网和用于访问目标集群的子网必须位于同一个可用区中。

  4. 选择安全组让 MSK Replicator 访问您的源集群。

    • 对于跨区域复制 (CRR),您无需为源集群提供安全组。

    • 对于相同区域的复制 (SRR),请访问位于的 Amazon EC2 控制台, https://console.aws.amazon.com/ec2/并确保您将为 Replicator 提供的安全组具有出站规则,允许流量进入源集群的安全组。此外,请确保源集群的安全组具有入站规则,允许来自为源提供的 Replicator 安全组的流量。

      要向源集群的安全组添加入站规则,请执行以下操作:
      1. 在 AWS 控制台,通过选择集群名称转到源集群的详细信息。

      2. 选择属性选项卡,然后向下滚动到网络设置窗格,以选择所应用的安全组名称。

      3. 转到入站规则,然后选择编辑入站规则

      4. 选择添加规则

      5. 在新规则的 “类型” 列中,选择 “自定义” TCP。

      6. 在 “端口范围” 列中,键入9098。MSKReplicator 使用IAM访问控制连接到使用端口 9098 的集群。

      7. 列中,键入您将在为源集群创建 Replicator 期间提供的安全组的名称(这可能与MSK源集群的安全组相同),然后选择保存规则

      要向 Replicator 为源提供的安全组中添加出站规则,请执行以下操作:
      1. 在 AWS 适用于 Amazon 的控制台EC2,请转到您在为源创建 Replicator 期间将提供的安全组。

      2. 转到出站规则,然后选择编辑出站规则

      3. 选择添加规则

      4. 在新规则的 “类型” 列中,选择 “自定义” TCP。

      5. 在 “端口范围” 列中,键入9098。MSKReplicator 使用IAM访问控制连接到使用端口 9098 的集群。

      6. 列中,键入MSK源集群安全组的名称,然后选择保存规则

注意

或者,如果您不想使用安全组限制流量,则可以添加允许所有流量的入站和出站规则。

1. 选择添加规则

2. 选择类型列中的所有流量

3. 在“源”列中,键入 0.0.0.0/0,然后选择保存规则

选择目标集群

目标集群是将源数据复制到MSK的已配置集群或无服务器集群。

注意

MSKReplicator 在目标集群中创建新主题,并在主题名称中添加自动生成的前缀。例如,MSKReplicator 将 “topic” 中的数据从源集群复制到目标集群中名为的新主题。<sourceKafkaClusterAlias>.topic这是为了将包含从源集群复制的数据的主题与目标集群中的其他主题区分开来,并避免在集群之间循环复制数据。您可以使用MSK控制台上的 Replicator 详细信息页面在 “sourceKafkaCluster别名” 字段下找到将添加到目标集群中主题名称的前缀。DescribeReplicator API目标集群中的前缀是<sourceKafkaClusterAlias>

  1. 目标集群窗格中,选择 AWS 目标集群所在的区域。

  2. 输入目标ARN集群的,或者浏览以选择目标集群。

  3. 为目标集群选择子网。

    控制台显示目标集群区域中可用的子网供您选择。至少选择两个子网。

  4. 选择安全组让 MSK Replicator 访问您的目标集群。

    将显示目标集群区域中可用的安全组供您选择。所选安全组与每个连接相关联。有关使用安全组的更多信息,请参阅控制流向您的安全组的流量 AWS 使用 Amazon VPC 用户指南中的安全组的资源。

    • 对于跨区域复制 (CRR) 和同区域复制 (SRR),请访问位于的 Amazon EC2 控制台,https://console.aws.amazon.com/ec2/并确保您将提供给 Replicator 的安全组具有出站规则,允许流量进入目标集群的安全组。此外,请确保目标集群的安全组具有入站规则,以接受来自为目标提供的复制器安全组的流量。

      要向目标集群的安全组添加入站规则,请执行以下操作:
      1. 在 AWS 控制台,通过选择集群名称转到目标集群的详细信息。

      2. 选择 “属性” 选项卡,然后向下滚动到 “网络设置” 窗格以选择所应用的安全组的名称。

      3. 转到入站规则,然后选择编辑入站规则

      4. 选择添加规则

      5. 在新规则的 “类型” 列中,选择 “自定义” TCP。

      6. 在 “端口范围” 列中,键入9098。MSKReplicator 使用IAM访问控制连接到使用端口 9098 的集群。

      7. 列中,键入您将在为目标集群创建 Replicator 期间提供的安全组的名称(这可能与MSK目标集群的安全组相同),然后选择保存规则

      要向 Replicator 为目标提供的安全组中添加出站规则,请执行以下操作:
      1. 在 AWS 控制台上,转到您将在为目标创建 Replicator 期间提供的安全组。

      2. 选择 “属性” 选项卡,然后向下滚动到 “网络设置” 窗格以选择所应用的安全组的名称。

      3. 转到出站规则,然后选择编辑出站规则

      4. 选择添加规则

      5. 在新规则的 “类型” 列中,选择 “自定义” TCP。

      6. 在 “端口范围” 列中,键入9098。MSKReplicator 使用IAM访问控制连接到使用端口 9098 的集群。

      7. 列中,键入MSK目标集群的安全组的名称,然后选择保存规则

注意

或者,如果您不想使用安全组限制流量,则可以添加允许所有流量的入站和出站规则。

1. 选择添加规则

2. 选择类型列中的所有流量

3. 在“源”列中,键入 0.0.0.0/0,然后选择保存规则

配置复制器设置和权限

  1. 复制器设置窗格中,使用允许和拒绝列表中的正则表达式指定要复制的主题。默认情况下会复制所有主题。

    注意

    MSKReplicator 最多只能按排序顺序复制 750 个主题。如果您需要复制更多主题,我们建议您单独创建一个 Replicator。前往 AWS 控制台 Support Cen ter,如果您需要为每个 Replicator 超过 750 个主题提供支持,请创建支持案例。您可以使用 “TopicCount” 指标监控正在复制的主题数量。请参阅 亚马逊MSK配额

  2. 默认情况下,MSKReplicator 从选定主题中的最(最新)偏移量开始复制。或者,如果您要复制主题中的现有数据,则可以从所选主题中最(最旧)的偏移量开始复制。复制器创建后,您就无法更改此设置。此设置对应于CreateReplicator请求和DescribeReplicator响应中的startingPosition字段APIs。

  3. 选择主题名称配置:

    • PREFIXED主题名称复制(在控制台中为主题名称添加前缀):默认设置。MSKReplicator 将 “topic1” 从源集群复制到目标集群中名为的新主题。<sourceKafkaClusterAlias>.topic1

    • 相同的主题名称复制(在控制台中保留相同的主题名称):在目标集群中使用相同的主题名称复制来自源集群的主题。

    此设置对应于CreateReplicator请求和DescribeReplicator响应中的TopicNameConfiguration字段APIs。请参阅 Amazon MSK Replicator 的工作方式

    注意

    默认情况下,MSKReplicator 会在目标集群中创建新主题,并在主题名称中添加自动生成的前缀。这是为了将包含从源集群复制的数据的主题与目标集群中的其他主题区分开来,并避免在集群之间循环复制数据。或者,您可以创建具有相同主题名称复制功能的 MSK Replicator(在控制台中保留相同的主题名称),以便在复制期间保留主题名称。此配置减少了您在设置过程中重新配置客户端应用程序的需求,并简化了多集群流架构的操作。

  4. 默认情况下,MSKReplicator 会复制所有元数据,包括主题配置、访问控制列表 (ACLs) 和使用者组偏移量,以实现无缝故障转移。如果您创建的不是用于失效转移的复制器,则可以选择关闭其他设置部分中提供的一个或多个设置。

    注意

    MSKReplicator 不会复制写入,ACLs因为您的制作者不应直接写入目标集群中已复制的主题。失效转移后,您的生成器应写入目标集群中的本地主题。有关详细信息,请参阅 按计划向辅助服务器执行故障转移 AWS 区域

  5. 使用器组复制窗格中,使用允许和拒绝列表中的正则表达式指定要复制的主题。默认情况下,所有使用器组都会被复制。

  6. 压缩窗格中,您可以选择压缩写入目标集群的数据。如果您要使用压缩,我们建议您使用与源集群中的数据相同的压缩方法。

  7. 访问权限窗格中,执行以下任一操作:

    1. 选择使用所需策略创建或更新IAM角色。MSKconsole 会自动将必要的权限和信任策略附加到读取和写入源集群和目标MSK集群所需的服务执行角色。

      MSK用于创建或更新复制器IAM角色的控制台
    2. 选择从 Amazon MSK 可以担任的IAM角色中选择,提供您自己的IAM角色。我们建议您将AWSMSKReplicatorExecutionRole托管IAM策略附加到您的服务执行角色,而不是自己编写IAM策略。

      1. 创建 Replicator 将用于读取和写入您的源集群和目标MSK集群的IAM角色,并将以下内容JSON作为信任策略的一部分,并AWSMSKReplicatorExecutionRole附加到该角色。在信任策略中,将占位符 < yourAccount ID> 替换为您的实际账户 ID。

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "kafka.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<yourAccountID>" } } } ] }
  8. 复制器标签窗格中,您可以选择为MSK复制器资源分配标签。有关更多信息,请参阅 为 Amazon MSK 集群添加标签。对于跨区域MSK复制器,在创建复制器时,标签会自动同步到远程区域。如果在创建复制器后更改标签,则更改不会自动同步到远程区域,因此您需要手动同步本地复制器和远程复制器参考。

  9. 选择创建

如果您想限制kafka-cluster:WriteData权限,请参阅 Amazon IAM 访问控制MSK的工作原理中的创建授权策略部分。您需要为源集群和目标集群添加kafka-cluster:WriteDataIdempotently权限。

成功创建MSK复制器并过渡到RUNNING状态大约需要 30 分钟。

如果您创建一个新的 MSK Replicator 来替换已删除的复制器,则新的 Replicator 会从最新的偏移量开始复制。

如果您的 MSK Replicator 已过渡到FAILED状态,请参阅故障排除部分 Replicator 故障排除MSK