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

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

创建 Amazon MSK 集群

重要

创建集群之后便不能更改 Amazon MSK 集群的 VPC。

在创建 Amazon MSK 集群之前,您必须拥有一个 Amazon Virtual Private Cloud (VPC),并在该 VPC 内设置子网。

您需要在美国西部(北加利福尼亚)区域的两个不同可用区中使用两个子网。在提供 Amazon MSK 的其余区域中,您可以指定两到三个子网。您的子网必须位于不同的可用区中。在创建集群时,Amazon MSK 在您指定的子网之间平均分配代理节点。

经纪人规模

创建 Amazon MSK 集群时,您需要指定您希望它拥有的代理的大小。Amazon MSK 支持以下代理规模:

  • kafka.t3.small

  • kafka.m5.large、kafka.m5.xlarge、kafka.m5.2xlarge、kafka.m5.4xlarge、kafka.m5.8xlarge、kafka.m5.12xlarge、kafka.m5.16xlarge、kafka.m5.24xlarge

  • kafka.m7g.large、kafka.m7g.xlarge、kafka.m7g.2xlarge、kafka.m7g.4xlarge、kafka.m7g.8xlarge、kafka.m7g.8xlarge、kafka.m7g.12xlarge、kafka.m7g.16xlarge

M7g 经纪商使用 G Amazon raviton 处理器(由 Amazon Web Services 构建的基于 ARM 的定制处理器)。与同类的 M5 实例相比,M7g 经纪商的价格表现更高。M7g 代理比同类 M5 实例消耗的电量更少。

以下地区不提供m7g Graviton经纪商:CDG(巴黎)、CGK(雅加达)、CPT(开普敦)、DXB(迪拜)、HKG(香港)、KIX(大阪)、LHR(伦敦)、MEL(墨尔本)、MEL(墨尔本)、MXP(米兰)、俄勒冈州立大学(美国东部)、太平洋夏令时(美国西部)、TLV(特拉维夫)、YYC(卡尔加里),ZRH(苏黎世)。

MSK 在运行以下 Kafka 版本之一的集群上支持 m7g 代理:

  • 2.8.2. 分层

  • 3.3.2

  • 3.4.0

  • 3.5.1

  • 3.6.0 带有分层存储

  • 3.7.x

  • 3.7.x.kraft

M7g 和 M5 代理的基准吞吐量性能比 T3 代理高,建议用于生产工作负载。M7g 和 M5 经纪商的每个代理也可以比 T3 经纪商拥有更多的分区。如果您正在运行较大的生产级工作负载或需要更多分区,请使用 M7g 或 M5 代理。要了解有关 M7g 和 M5 实例大小的更多信息,请参阅 Amazon EC2 通用型实例。

T3 代理可以使用 CPU 积分来临时提高性能。如果您正在测试中小型流式处理工作负载,或者您的低吞吐量流式处理工作负载会临时出现吞吐量高峰,则可以使用 T3 代理进行低成本开发。我们建议您 proof-of-concept 进行测试,以确定 T3 代理是否足以应对生产或关键工作负载。要了解有关 T3 代理规模的更多信息,请参阅亚马逊 EC2T3 实例

有关如何选择经纪商规模的更多信息,请参阅最佳实践

使用创建集群 Amazon Web Services Management Console

此过程描述了使用自定义创建选项创建已配置集群的常见任务。您可以在 MSK 控制台中选择其他选项来创建无服务器集群。

  1. https://console.amazonaws.cn/msk/ 打开 Amazon MSK 控制台。

  2. 选择创建集群

  3. 对于集群创建方法,请选择自定义创建

  4. 指定唯一且不超过 64 个字符的集群名称

  5. 对于集群类型,选择 Provisioned,它允许您指定代理数量、代理大小和集群存储容量。

  6. 选择要在代理上运行的 Apache Kafka 版本。要查看每个 Apache Kafka 版本支持的 MSK 功能的比较,请选择查看版本兼容性。

  7. 根据您选择的 Apache Kafka 版本,您可以选择集群的元数据模式ZooKeeper 或 KraFT。

  8. 根据集群的计算、内存和存储需求,为集群选择要使用的代理大小。请参阅经纪人规模

  9. 选择代理分布的区域数量

  10. 指定您希望 MSK 在每个可用区中创建的代理数量。每个可用区的最小代理是每个可用区一个代理,对于基于 Kraft 的集群,每个集群的最小代理数是每个集群 30 个代理,对于 ZooKeeper基于 Kraft 的集群,每个集群最多可以有 60 个

  11. 选择您希望集群拥有的初始存储量。创建集群后,您无法减少存储容量。

  12. 根据您选择的代理大小(实例大小),您可以指定每个代理的预配置存储吞吐量。要启用此选项,请为 x86 选择代理大小(实例大小)kafka.m5.4xlarge 或更大,对于基于 Graviton 的实例,选择 kafka.m7g.2xlarge 或更大。请参阅 预置存储吞吐量

  13. 选择集群存储模式选项,要么仅限 EBS 存储,要么选择分层存储和 EBS 存储。

  14. 如果要创建和使用自定义集群配置(或者您已经保存了群集配置),请选择一个配置。否则,您可以使用 Amazon MSK 默认集群配置创建集群。有关 Amazon MSK 配置的信息,请参阅 Amazon MSK 配置

  15. 选择下一步

  16. 在网络设置中,选择要用于集群的 VPC。

  17. 根据您之前选择的区域数量,指定将在其中部署代理的可用区和子网。这些子网必须位于不同的可用区中。

  18. 您可以选择一个或多个要授予集群访问权限的安全组(例如,客户端计算机的安全组)。如果您指定与您共享的安全组,则必须确保您有权使用它们。具体来说,您需要 ec2:DescribeSecurityGroups 权限。正在连接亚马逊 MSK 集群

  19. 选择下一步

  20. 选择集群的访问控制方法加密设置,以便在数据在客户端和代理之间传输时对其进行加密。有关更多信息,请参阅 传输中加密

  21. 选择要用于加密静态数据的 KMS 密钥类型。有关更多信息,请参阅 静态加密

  22. 选择下一步

  23. 选择所需的监控和标签。此选择决定您获得的指标集。有关更多信息,请参阅 监控 Amazon MSK 集群亚马逊 CloudWatchPrometheus 、Broker 日志传输或集群标签,然后选择下一步。

  24. 查看集群的设置。您可以返回并更改设置,方法是选择 “上一步” 返回上一个控制台屏幕,或者选择 “编辑” 以更改特定的集群设置。如果设置正确,请选择创建集群

  25. 集群摘要页面上,选中集群状态。在 Amazon MSK 预置集群时,状态从正在创建变为活动。当状态为活动时,您可连接到集群。有关集群状态的更多信息,请参阅 集群状态

使用创建集群 Amazon CLI

  1. 复制以下 JSON 并将其保存到文件中。将文件命名为 brokernodegroupinfo.json。将 JSON 中的子网 ID 替换为与子网对应的值。这些子网必须位于不同的可用区中。将 "Security-Group-ID" 替换为客户端 VPC 的一个或多个安全组的 ID。与这些安全组关联的客户端可以访问集群。如果您指定与您共享的安全组,则必须确保您拥有对它们的权限。具体来说,您需要 ec2:DescribeSecurityGroups 权限。有关示例,请参阅 Amazon EC2:允许以编程方式和在控制台中管理与特定 VPC 关联的 EC2 安全组。最后,将更新后的 JSON 文件保存在已 Amazon CLI 安装的计算机上。

    { "InstanceType": "kafka.m5.large", "ClientSubnets": [ "Subnet-1-ID", "Subnet-2-ID" ], "SecurityGroups": [ "Security-Group-ID" ] }
    重要

    如果您使用的是美国西部(北加利福尼亚)区域,请确切指定两个子网。对于提供 Amazon MSK 的其它区域,您可以指定两个或三个子网。指定的子网必须位于不同的可用区中。在创建集群时,Amazon MSK 在您指定的子网之间平均分配代理节点。

  2. 在保存brokernodegroupinfo.json文件的目录中运行以下 Amazon CLI 命令,将 “Your-Cluster-Name” 替换为您选择的名称。对于 "Monitoring-Level",您可以指定以下三个值之一:DEFAULTPER_BROKERPER_TOPIC_PER_BROKER。有关这三个不同监控级别的信息,请参阅监控 Amazon MSK 集群enhanced-monitoring 参数是可选的。如果未在 create-cluster 命令中指定该参数,监控级别即为 DEFAULT

    aws kafka create-cluster --cluster-name "Your-Cluster-Name" --broker-node-group-info file://brokernodegroupinfo.json --kafka-version "2.8.1" --number-of-broker-nodes 3 --enhanced-monitoring "Monitoring-Level"

    该命令的输出如以下 JSON 所示:

    { "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "State": "CREATING" }
    注意

    create-cluster 命令可能会返回错误,指示一个或多个子网所属的可用区不受支持。发生此种情况时,该错误会指示不受支持的可用区。请创建不使用不受支持的可用区的子网,然后重试 create-cluster 命令。

  3. 保存 ClusterArn 键的值,因为您需要该键才能对集群执行其他操作。

  4. 运行以下命令来检查集群的 STATE。在 Amazon MSK 预置集群时,STATE 值从 CREATING 变为 ACTIVE。当状态为 ACTIVE 时,您可连接到集群。有关集群状态的更多信息,请参阅 集群状态

    aws kafka describe-cluster --cluster-arn <your-cluster-ARN>

使用自定义 Amazon MSK 配置创建集群 Amazon CLI

有关自定义 Amazon MSK 配置以及如何创建这些配置的信息,请参阅 Amazon MSK 配置

  1. 将以下 JSON 保存到文件中,并将 configuration-arn 替换为创建集群要使用的配置的 ARN。

    { "Arn": configuration-arn, "Revision": 1 }
  2. 运行 create-cluster 命令并使用 configuration-info 选项指向您在上一步中保存的 JSON 文件。示例如下:

    aws kafka create-cluster --cluster-name ExampleClusterName --broker-node-group-info file://brokernodegroupinfo.json --kafka-version "2.8.1" --number-of-broker-nodes 3 --enhanced-monitoring PER_TOPIC_PER_BROKER --configuration-info file://configuration.json

    以下是运行此命令后的成功响应示例。

    { "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomConfigExampleCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2", "ClusterName": "CustomConfigExampleCluster", "State": "CREATING" }

使用 API 创建集群

要使用 API 创建集群,请参阅CreateCluster