步骤 3:创建 Amazon MSK 复制器 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

步骤 3:创建 Amazon MSK 复制器

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

在目标集群区域使用 Amazon 控制台创建复制器

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

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

  3. 选择创建复制器

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

选择源集群

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

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

    您可以通过前往集群并查看集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复制器选择安全组以访问您的源集群。

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

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

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

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

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

      4. 选择添加规则

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

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

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

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

      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控制台上的 “sourceKafkaCluster别名” 字段下使用DescribeReplicatorAPI或 Replicator 详细信息页面找到将添加到目标集群中主题名称的前缀。目标集群中的前缀是 < sourceKafkaCluster Alias>。

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

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

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

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

  4. 为MSK复制器选择安全组以访问您的目标集群。

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

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

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

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

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

      4. 选择添加规则

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

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

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

      要向 Replicator 为目标提供的安全组中添加出站规则,请执行以下操作:
      1. 在 Amazon 控制台中,转到您将在为目标创建 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。如果您需要为每个 Replicator 提供超过 750 个主题的支持,请前往 Amazon 控制台 Support Center 并创建支持案例。您可以使用 “TopicCount” 指标监控正在复制的主题数量。请参阅 亚马逊MSK配额

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

    注意

    MSKReplicator 就像源集群的新使用者一样。根据您要复制的数据量和源集群中消耗的容量,这可能会导致源集群上的其他使用者受到限制。如果您创建设置为最早起始位置的 Rep MSK licator,Replicator 将在开始时读取大量数据,这可能会消耗源集群的所有消耗容量。在您的 Replicator 赶上之后,消耗率应降低,以匹配源集群主题的吞吐量。如果您要从最早的位置进行复制,我们建议您使用 Kafka 配额管理 Replicator 吞吐量,以确保其他使用者不会受到限制。

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

    注意

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

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

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

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

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

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

      1. 创建复制器将用来读取和写入您的源集群和目标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>" } } } ] }
  7. 复制器标签窗格中,您可以选择为MSK复制器资源分配标签。有关更多信息,请参阅 为 Amazon MSK 集群添加标签。对于跨区域MSK复制器,在创建复制器时,标签会自动同步到远程区域。如果在创建复制器后更改标签,则更改不会自动同步到远程区域,因此您需要手动同步本地复制器和远程复制器参考。

  8. 选择创建

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

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

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

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