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

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

创建 Amazon MSK 集群

在创建Amazon MSK 集群之前,您需要拥有一个 VPC,并在该 VPC 内设置子网。您需要 美国西部(加利福尼亚北部) 区域中两个不同可用区中的两个子网。在提供 Amazon MSK 的所有其他区域中,您可以指定两个或三个子网。您的子网必须位于不同的可用区中。创建集群时,Amazon MSK 将代理节点平均分布到您指定的子网中。有关如何为 MSK 集群设置 VPC 和子网的示例,请参阅第1步: 为您的MSK群集创建VPC第2步: 启用高可用性和容错

代理实例类型

创建 Amazon MSK 集群时,您可以指定您希望代理采用的 Amazon EC2 实例类型。创建集群后,您将无法更改其代理的 EC2 实例类型。Amazon MSK 支持以下实例类型:

  • t3.small

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

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

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

有关如何选择代理实例类型的更多信息,请参阅将集群设置为正确大小

使用 AWS 管理控制台 创建集群

  1. Open the Amazon MSK console at https://console.aws.amazon.com/msk/.

  2. 选择 Create cluster.

  3. 指定集群的名称。

  4. 在 VPC 列表中,选择要用于集群的 VPC。您还可以指定 Amazon MSK 创建集群要使用的 Apache Kafka 版本。

  5. 如果您使用以下区域之一,请指定两个子网:南美洲(圣保罗)、加拿大 (中部)和美国西部(加利福尼亚北部)。在提供 Amazon MSK 的其他区域中,您可以指定两个或三个子网。指定的子网必须位于不同的可用区中。

  6. 选择所需配置类型。有关 MSK 配置的信息,请参阅 Amazon MSK 配置

  7. 指定您希望 MSK 在每个可用区中创建的代理类型和数量。每个可用区最少一个代理,最多 30 个代理。

  8. (可选)为您的集群分配标签。标签是可选的。有关更多信息,请参阅为 Amazon MSK 集群 添加标签

  9. 您可以调整每个代理的存储量。创建集群后,您可以增加每个代理的存储量,但不能减少它。

  10. 选择对传输中的数据进行加密所需的设置。默认情况下,MSK 会在集群中的代理之间传输数据时对数据进行加密。如果您希望在代理之间传输数据时不要对数据进行加密,请清除带有 Enable encryption within the cluster (在集群内启用加密) 标签的复选框。

  11. 选择用于在客户端和代理之间传输数据时加密数据的三种设置之一。有关更多信息,请参阅传输中加密

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

  13. 如果要验证客户端身份,请通过选择 Enable TLS client authentication (启用 TLS 客户端身份验证) 旁边的方框来选择该选项。有关身份验证的更多信息,请参阅客户端身份验证

  14. 选择所需的监控级别。此选择决定您获得的指标集。有关更多信息,请参阅监控 Amazon MSK 集群

  15. (可选) 选择 Advanced settings (高级设置),然后选择 Customize settings, 您可以指定一个或多个要向其提供集群访问权限的安全组(例如,客户端计算机的安全组)。如果您指定与您共享的安全组,则必须确保您拥有对它们的权限。具体来说,您需要 ec2:DescribeSecurityGroups 权限。有关示例,请参阅 Amazon EC2:。 允许以编程方式和在控制台中管理与特定 VPC 关联的 EC2 安全组

  16. 选择 Create cluster.

使用 AWS CLI 创建集群

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

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

    如果您使用以下区域之一,请仅指定两个子网:南美洲(圣保罗)、加拿大 (中部)和美国西部(加利福尼亚北部)。对于提供 Amazon MSK 的其他区域中,您可以指定两个或三个子网。指定的子网必须位于不同的可用区中。创建集群时,Amazon MSK 将代理节点平均分布到您指定的子网中。

  2. 在保存 AWS CLI 文件的目录中运行以下 brokernodegroupinfo.json 命令,同时替换 "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.2.1" --number-of-broker-nodes 3 --enhanced-monitoring "Monitoring-Level"

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

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

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

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

使用 AWS CLI 创建带有自定义 MSK 配置的集群

有关自定义 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 "1.1.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