

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

# 什么是 MSK Serverless？
<a name="serverless"></a>

**注意**  
MSK Serverless 在以下区域提供：美国东部（俄亥俄州）、美国东部（弗吉尼亚州北部）、美国西部（俄勒冈州）、加拿大（中部）、亚太地区（孟买）、亚太地区（新加坡）、亚太地区（悉尼）、亚太地区（东京）、亚太地区（首尔）、欧洲地区（法兰克福）、欧洲地区（斯德哥尔摩）、欧洲地区（爱尔兰）、欧洲地区（巴黎）和欧洲地区（伦敦）区域。

MSK Serverless 是 Amazon MSK 的一种集群类型，能让您无需管理和扩展集群容量即可运行 Apache Kafka。它可以在管理主题中的分区的同时自动配置和扩展容量，因此您可以流式传输数据，而无需考虑调整集群大小或扩展集群。MSK Serverless 提供基于吞吐量的定价模式，因此您只需为实际使用量付费。如果您的应用程序需要可自动向上和向下扩展的按需流式传输容量，请考虑使用无服务器集群。

MSK Serverless 与 Apache Kafka 完全兼容，因此您可以使用任何兼容的客户端应用程序来生成和使用数据。它还集成了以下服务：
+ AWS PrivateLink 提供私有连接
+ AWS Identity and Access Management (IAM)，用于使用 Java 和非 Java 语言进行身份验证和授权。有关为 IAM 配置客户端的说明，请参阅[配置客户端以进行 IAM 访问控制](configure-clients-for-iam-access-control.md)。
+ AWS Glue 用于架构管理的架构注册表
+ 适用于 Apache Flink 的亚马逊托管服务，用于基于 Apache Flink 的流处理
+  AWS Lambda 用于事件处理

**注意**  
MSK Serverless 需要对所有集群进行 IAM 访问控制。不支持 Apache Kafka 访问控制列表 (ACLs)。有关更多信息，请参阅 [IAM 访问控制](iam-access-control.md)。  
有关适用于 MSK Serverless 的服务限额的信息，请参阅 [MSK Serverless 限额](limits.md#serverless-quota)。

为了帮助您开始使用无服务器集群，并详细了解无服务器集群的配置和监控选项，请参阅以下内容。

**Topics**
+ [使用 MSK Serverless 集群](serverless-getting-started.md)
+ [MSK Serverless 集群的配置属性](serverless-config.md)
+ [配置双栈网络类型](serverless-config-dual-stack.md)
+ [监控 MSK Serverless 集群](serverless-monitoring.md)

# 使用 MSK Serverless 集群
<a name="serverless-getting-started"></a>

本教程向您展示了一个示例，说明如何创建 MSK Serverless 集群，创建可以访问该集群的客户端，以及使用客户端在集群上创建主题并向这些主题写入数据。该练习并未提供您在创建无服务器集群时可以选择的所有选项。为了简单起见，我们在本练习的各个部分均选择默认选项。这并不意味着它们是可用于设置无服务器集群的唯一选项。您也可以使用 AWS CLI 或 Amazon MSK API。有关更多信息，请参阅 [Amazon MSK API Reference 2.0](https://docs.aws.amazon.com/MSK/2.0/APIReference/what-is-msk.html)。

**Topics**
+ [创建 MSK Serverless 集群](create-serverless-cluster.md)
+ [为 MSK Serverless 集群上的主题创建 IAM 角色](create-iam-role.md)
+ [创建客户端计算机以访问 MSK Serverless 集群](create-serverless-cluster-client.md)
+ [创建 Apache Kafka 主题](msk-serverless-create-topic.md)
+ [在 MSK Serverless 中生成和使用数据](msk-serverless-produce-consume.md)
+ [删除您为 MSK Serverless 创建的资源](delete-resources.md)

# 创建 MSK Serverless 集群
<a name="create-serverless-cluster"></a>

在此步骤中，您需执行两个任务。首先，使用默认设置创建一个 MSK Serverless 集群。然后，收集有关集群的信息。这是您在后续步骤中创建可向集群发送数据的客户端时所需的信息。

**要创建无服务器集群**

1. 登录并在[https://console.aws.amazon.com/msk/家](https://console.aws.amazon.com/msk/home)中打开 Amazon MSK 控制台。 AWS 管理控制台

1. 选择**创建集群**。

1. 对于**创建方法**，将**快速创建**选项保持为选中状态。**快速创建**选项允许您使用默认设置创建无服务器集群。

1. 对于**集群名称**，输入一个描述性名称，例如 **msk-serverless-tutorial-cluster**。

1. 对于**常规集群属性**，请选择**无服务器**作为**集群类型**。对于其余的**常规集群**属性，使用默认值。

1. 请注意**所有集群设置**下的表。此表列出了网络和可用性等重要设置的默认值，并指明了在创建集群后是否可以更改每项设置。要在创建集群之前更改设置，应在**创建方法**下选择**自定义创建**选项。
**注意**  
使用 MSK Serverless 集群，您最多可以连接五 VPCs 个不同的客户端。为了帮助客户端应用程序在发生中断时切换到另一个可用区，您必须在每个 VPC 中至少指定两个子网。

1. 选择**创建集群**。

**要收集有关集群的信息**

1. 在**集群摘要**部分，选择**查看客户端信息**。在 Amazon MSK 完成集群创建之前，此按钮将一直处于灰色状态。您可能需要等待几分钟直到按钮变为活动状态，然后才能使用。

1. 复制**端点**标签下的字符串。这是您的引导服务器字符串。

1. 选择**属性**选项卡。

1. 在 **“网络设置”** 部分下，复制子网和安全组的并保存它们，因为稍后需要这些信息来创建客户机。 IDs 

1. 选择任意子网。这将打开 Amazon VPC 控制台。查找与子网关联的 Amazon VPC 的 ID。保存此 Amazon VPC ID 以供将来使用。

**下一步**

[为 MSK Serverless 集群上的主题创建 IAM 角色](create-iam-role.md)

# 为 MSK Serverless 集群上的主题创建 IAM 角色
<a name="create-iam-role"></a>

在此步骤中，您需执行两个任务。第一个任务是创建 IAM policy，以授予在集群上创建主题以及向这些主题发送数据的访问权限。第二个任务是创建 IAM 角色并将此策略与其关联。在后面的步骤中，我们将创建代入此角色的客户端计算机，使用它在集群上创建主题并向该主题发送数据。

**创建允许创建主题并写入主题的 IAM policy**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 选择 **JSON** 选项卡，然后将编辑器窗口中的 JSON 替换为以下 JSON。

   在以下示例中，替换以下内容：
   + *region*使用您创建集群的 AWS 区域 位置的代码。
   + 带有您的 ID 的账户 AWS 账户 ID 示例。*123456789012*
   + *msk-serverless-tutorial-cluster*/*c07c74ea-5146-4a03-add1-9baa787a5b14-s3**msk-serverless-tutorial-cluster*以及您的无服务器集群 ID 和主题名称。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kafka-cluster:Connect",
                   "kafka-cluster:DescribeCluster"
               ],
               "Resource": [
                   "arn:aws:kafka:us-east-1:123456789012:cluster/msk-serverless-tutorial-cluster/c07c74ea-5146-4a03-add1-9baa787a5b14-s3"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kafka-cluster:CreateTopic",
                   "kafka-cluster:WriteData",
                   "kafka-cluster:DescribeTopic"
               ],
               "Resource": [
               "arn:aws:kafka:us-east-1:123456789012:topic/msk-serverless-tutorial-cluster/*"
               ]
           }
       ]
   }
   ```

------

   有关如何写入安全策略的说明，请参阅[IAM 访问控制](iam-access-control.md)。

1. 选择**下一步：标签**。

1. 选择**下一步：审核**。

1. 对于策略名称，输入一个描述性名称，例如 **msk-serverless-tutorial-policy**。

1. 选择**创建策略**。

**创建 IAM 角色并向其附加此策略**

1. 在导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 在**常见用例**下，选择 **EC2**，然后选择**下一步：权限**。

1. 在搜索框中，输入您之前为本教程创建的策略的名称。然后，选中策略左侧的复选框。

1. 选择**下一步：标签**。

1. 选择**下一步：审核**。

1. 对于角色名称，输入一个描述性名称，例如 **msk-serverless-tutorial-role**。

1. 选择**创建角色**。

**下一步**

[创建客户端计算机以访问 MSK Serverless 集群](create-serverless-cluster-client.md)

# 创建客户端计算机以访问 MSK Serverless 集群
<a name="create-serverless-cluster-client"></a>

在此步骤中，您将执行两个任务。第一项任务是创建一个用作 Apache Kafka 客户端计算机的 Amazon EC2 实例。第二项任务是在计算机上安装 Java 和 Apache Kafka 工具。

**创建客户端计算机**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 选择**启动实例**。

1. 为客户端计算机输入一个描述性**名称**，例如 **msk-serverless-tutorial-client**。

1. 对于**亚马逊机器映像（AMI）类型**，始终选中 **Amazon Linux 2 AMI（HVM）– 内核 5.10，SSD 卷类型**。

1. 保留 **t2.micro** 实例类型为选中状态。

1. 在**密钥对（登录）**下，选择**创建新密钥对**。对于**密钥对名称**，输入 **MSKServerlessKeyPair**。然后，选择 **Download Key Pair (下载密钥对)**。此外，您还可使用现有密钥对。

1. 对于**网络设置**，选择**编辑**。

1. 在 **VPC** 下，输入无服务器集群的虚拟私有云（VPC）的 ID。它是基于 Amazon VPC 服务的 VPC，您创建集群后保存了其 ID。

1. 对于**子网**，请选择您创建集群后保存了其 ID 的子网。

1. 在**防火墙（安全组）**中，选择与集群关联的安全组。如果该安全组有允许流量从安全组流向自身的入站规则，则此值有效。通过这样的规则，同一个安全组的成员可以相互通信。有关更多信息，请参阅《Amazon VPC 开发者指南》中的[安全组规则](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules)。

1. 展开**高级详细信息**部分，然后选择您在 [为 MSK Serverless 集群上的主题创建 IAM 角色](create-iam-role.md) 中创建的 IAM 角色。

1. 选择**启动**。

1. 在左侧导航窗格中，选择 **Instances (实例)**。然后选中代表您新创建的 Amazon EC2 实例的行中的复选框。从此时开始，我们称这个实例为*客户端计算机*。

1. 选择**连择**并按照说明连接到客户端计算机。

**要在客户端计算机上设置 Apache Kafka 客户端工具**

1. 要安装 Java，请在客户端计算机上运行以下命令：

   ```
   sudo yum -y install java-11
   ```

1. 要获取创建主题和发送数据所需的 Apache Kafka 工具，请运行以下命令：

   ```
   wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz
   ```

   ```
   tar -xzf kafka_2.12-2.8.1.tgz
   ```
**注意**  
提取 Kafka 档案后，请确保 `bin` 目录中的脚本具有适当的执行权限。为此，请运行以下命令。  

   ```
   chmod +x kafka_2.12-2.8.1/bin/*.sh
   ```

1. 转到 `kafka_2.12-2.8.1/libs` 目录，然后运行以下命令以下载 Amazon MSK IAM JAR 文件。Amazon MSK IAM JAR 让客户端计算机可以访问集群。

   ```
   wget https://github.com/aws/aws-msk-iam-auth/releases/download/v2.3.0/aws-msk-iam-auth-2.3.0-all.jar
   ```

   使用此命令，您还可以[下载其他版本或更新版本的](https://github.com/aws/aws-msk-iam-auth/releases) Amazon MSK IAM JAR 文件。

1. 转到 `kafka_2.12-2.8.1/bin` 目录。复制以下属性设置并将其粘贴到新文件中。为文件 `client.properties` 命名并保存文件。

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

**下一步**

[创建 Apache Kafka 主题](msk-serverless-create-topic.md)

# 创建 Apache Kafka 主题
<a name="msk-serverless-create-topic"></a>

在此步骤中，您将使用先前创建的客户端计算机在无服务器集群上创建主题。

**Topics**
+ [设置环境以创建主题](#msk-serverless-create-topic-prerequisites)
+ [创建主题并向主题写入数据](#msk-serverless-create-topic-procedure)

## 设置环境以创建主题
<a name="msk-serverless-create-topic-prerequisites"></a>
+ 在创建主题之前，请确保您已将 AWS MSK IAM JAR 文件下载到 Kafka 安装的`libs/`目录中。如果还没有这样做，请在 Kafka 的 `libs/` 目录中运行以下命令。

  ```
  wget https://github.com/aws/aws-msk-iam-auth/releases/download/v2.3.0/aws-msk-iam-auth-2.3.0-all.jar
  ```

  该 JAR 文件是 MSK Serverless 集群的 IAM 身份验证所必需的。
+ 运行 Kafka 命令时，你可能需要确保`classpath`包含 AWS MSK IAM JAR 文件。为此，请执行以下操作之一：
  + 将环境变量 `CLASSPATH` 设置为您的 Kafka 库，如下例所示。

    ```
    export CLASSPATH=<path-to-your-kafka-installation>/libs/*:<path-to-your-kafka-installation>/libs/aws-msk-iam-auth-2.3.0-all.jar
    ```
  + 使用带有显式 `classpath` 的完整 Java 命令运行 Kafka 命令，如下例所示。

    ```
    java -cp "<path-to-your-kafka-installation>/libs/*:<path-to-your-kafka-installation>/libs/aws-msk-iam-auth-2.3.0-all.jar" org.apache.kafka.tools.TopicCommand --bootstrap-server $BS --command-config client.properties --create --topic msk-serverless-tutorial --partitions 6
    ```

## 创建主题并向主题写入数据
<a name="msk-serverless-create-topic-procedure"></a>

1. 在以下`export`命令中，*my-endpoint*替换为在创建集群后保存的 bootstrap-server 字符串。然后，转到客户端计算机上的 `kafka_2.12-2.8.1/bin` 目录并运行 `export` 命令。

   ```
   export BS=my-endpoint
   ```

1. 运行以下命令以创建名为 `msk-serverless-tutorial` 的主题。

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --bootstrap-server $BS --command-config client.properties --create --topic msk-serverless-tutorial --partitions 6
   ```

**下一步**

[在 MSK Serverless 中生成和使用数据](msk-serverless-produce-consume.md)

# 在 MSK Serverless 中生成和使用数据
<a name="msk-serverless-produce-consume"></a>

在此步骤中，您将使用在先前步骤中创建的主题生成和使用数据。

**生成和使用消息**

1. 运行以下命令以创建控制台生成器。

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list $BS --producer.config client.properties --topic msk-serverless-tutorial
   ```

1. 输入所需的任何消息，然后按 **Enter**。重复执行此步骤两次或三次。每次输入一行并按 **Enter** 时，该行会作为单独的消息发送到集群。

1. 将与客户端计算机的连接保持打开状态，然后在新窗口中打开与该计算机的第二个单独连接。

1. 使用客户端计算机的第二个连接，通过以下命令创建控制台使用器。*my-endpoint*替换为在创建集群后保存的引导服务器字符串。

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server my-endpoint --consumer.config client.properties --topic msk-serverless-tutorial --from-beginning
   ```

   您开始看到之前使用控制台生成器命令时输入的消息。

1. 在生成器窗口中输入更多消息，并观察消息显示在使用器窗口中。

如果在运行这些命令遇到 `classpath` 问题，请确保从正确的目录运行命令。此外，请确保 AWS MSK IAM JAR 位于`libs`目录中。或者，也可以使用带有显式 `classpath` 的完整 Java 命令运行 Kafka 命令，如下例所示。

```
java -cp "kafka_2.12-2.8.1/libs/*:kafka_2.12-2.8.1/libs/aws-msk-iam-auth-2.3.0-all.jar" org.apache.kafka.tools.ConsoleProducer —broker-list $BS —producer.config client.properties —topic msk-serverless-tutorial
```

**下一步**

[删除您为 MSK Serverless 创建的资源](delete-resources.md)

# 删除您为 MSK Serverless 创建的资源
<a name="delete-resources"></a>

在此步骤中，您将删除在本教程中创建的资源。

**要删除集群**

1. 在[https://console.aws.amazon.com/msk/家](https://console.aws.amazon.com/msk/home)中打开亚马逊 MSK 控制台。

1. 在集群列表中，选择为此教程创建的集群。

1. 对于**操作**，选择**删除集群**。

1. 在字段中输入 `delete`，然后选择**删除**。

**要停止客户端计算机**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在 Amazon EC2 实例列表中，选择您为本教程创建的客户端计算机。

1. 选择**实例状态**，然后选择**终止实例**。

1. 选择**终止**。

**删除 IAM policy 和角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在搜索框中，输入您为本教程创建的 IAM 角色的名称。

1. 选择角色 。然后选择**删除角色**并确认删除。

1. 在导航窗格中，选择**策略**。

1. 在搜索框中，输入您为本教程创建的策略的名称。

1. 选择策略，打开其摘要页面。在策略的**摘要**页面上，选择**删除策略**。

1. 选择**删除**。

# MSK Serverless 集群的配置属性
<a name="serverless-config"></a>

Amazon MSK 会为无服务器集群设置代理配置属性。您无法更改这些代理配置属性设置。但是，您可以设置或修改以下主题级别的配置属性。所有其他主题级别的配置属性均不可配置。


****  

| 配置属性 | 默认 | 可编辑 | 允许的最大值 | 
| --- | --- | --- | --- | 
| [cleanup.policy](https://kafka.apache.org/documentation/#topicconfigs_cleanup.policy) | Delete | 是，但仅限于主题创建时 |  | 
|  [compression.type](https://kafka.apache.org/documentation/#topicconfigs_compression.type)  | Producer | 是 |  | 
|  [max.message.bytes](https://kafka.apache.org/documentation/#topicconfigs_max.message.bytes)  | 1048588 | 是 | 8388608 (8MiB) | 
|  [message.timestamp.difference.max.ms](https://kafka.apache.org/documentation/#topicconfigs_message.timestamp.difference.max.ms)  | long.max | 是 |  | 
|  [message.timestamp.type](https://kafka.apache.org/documentation/#topicconfigs_message.timestamp.type)  | CreateTime | 是 |  | 
|  [retention.bytes](https://kafka.apache.org/documentation/#topicconfigs_retention.bytes)  | 250GiB | 是 | 无限制；设置为 -1 可实现无限制保留 | 
|  [retention.ms](https://kafka.apache.org/documentation/#topicconfigs_retention.ms)  | 7 days | 是 | 无限制；设置为 -1 可实现无限制保留 | 

要设置或修改这些主题级别的配置属性，您可以使用 Apache Kafka 命令行工具。有关更多信息和如何设置它们的示例，请参阅官方 Apache Kafka 文档中的 [3.2 主题级配置](https://kafka.apache.org/documentation/#topicconfigs)。

**注意**  
在 MSK Serverless 中无法修改主题的 seg.bytes 配置。但是，Kafka Streams 应用程序可能会尝试创建一个 segment.bytes 配置值与 MSK Serverless 许可值不同的内部主题。有关使用 MSK Serverless 配置 Kafka Streams 的信息，请参阅[Kafka Streams 与 MSK 快速代理和 MSK Serverless 结合使用](use-kafka-streams-express-brokers-msk-serverless.md)。

将 Apache Kafka 命令行工具与 Amazon MSK Serverless 结合使用时，请确保已完成 [Amazon MSK Serverless 入门文档](https://docs.aws.amazon.com/msk/latest/developerguide/create-serverless-cluster-client.html)的*在客户端计算机上设置 Apache Kafka 客户端工具*部分中的步骤 1-4。此外，您必须在命令中包含 `--command-config client.properties` 参数。

例如，以下命令可用于修改r etention.bytes 主题配置属性以设置无限制保留：

```
<path-to-your-kafka-client-installation>/bin/kafka-configs.sh —bootstrap-server <bootstrap_server_string> —command-config client.properties --entity-type topics --entity-name <topic_name> --alter --add-config retention.bytes=-1
```

在此示例中，*<bootstrap server string>*替换为您的 Amazon MSK Serverless 集群的引导服务器终端节点，以及*<topic\$1name>*您要修改的主题名称。

`--command-config client.properties` 参数确保 Kafka 命令行工具使用适当的配置设置与您的 Amazon MSK Serverless 集群进行通信。

# 配置双栈网络类型
<a name="serverless-config-dual-stack"></a>

 对于使用 Kafka 版本 3.6.0 或更高版本的现有 MSK 无服务器集群，Amazon MSK 支持双栈网络类型，无需支付额外费用。通过双堆栈网络，您的集群可以同时使用 IPv4 和 IPv6 地址。双栈端点还支持， IPv4 从而保持向后兼容性。Amazon MSK 通过双栈网络类型提供 IPv6 支持，而不是仅限于 IPv6双栈网络类型。

 默认情况下，客户端使用 IPv4 网络类型连接到 Amazon MSK 集群。默认情况下，您创建的所有新集群也会使用 IPv4 。要将集群的网络类型更新为双堆栈，请确保您已满足下一节中描述的先决条件。然后，使用 [UpdateConnectivity](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html#UpdateConnectivity)API 更新双堆栈的连接。

**注意**  
将集群更新为使用双栈网络类型后，就无法将其切换回 IPv4 网络类型。

**Topics**
+ [使用双栈网络类型的先决条件](#msks-ipv6-prerequisites)
+ [MSK 无服务器的 IAM 权限](#msks-ipv6-iam-permissions)
+ [为集群使用双栈网络类型](#update-msks-network-type)
+ [使用双栈网络类型的注意事项](#msks-dual-stack-considerations)

## 使用双栈网络类型的先决条件
<a name="msks-ipv6-prerequisites"></a>

在为集群配置双栈网络类型之前，请确保在集群创建期间提供的所有子网都必须支持双栈网络类型。即使您的集群中的一个子网不支持双堆栈，您也无法将集群的网络类型更新为双堆栈。

## MSK 无服务器的 IAM 权限
<a name="msks-ipv6-iam-permissions"></a>

您必须具有以下 IAM 权限：
+  `ec2:DescribeSubnets` 
+  `ec2:ModifyVpcEndpoint` 

有关执行所有 Amazon MSK 操作所需的权限的完整列表，请参阅 AWS 托管策略：A [mazon A MSKFull cces](https://docs.aws.amazon.com/msk/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonMSKFullAccess) s。

## 为集群使用双栈网络类型
<a name="update-msks-network-type"></a>

您可以使用 AWS 管理控制台、 AWS CLI或 AWS SDK 更新 MSK 无服务器集群的网络类型。

------
#### [ Using AWS 管理控制台 ]

1. 在[https://console.aws.amazon.com/msk/家打开亚马逊 MSK 控制台？ region=us](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)-east-1\$1/home/。

1. 选择要为其配置双栈网络类型的 MSK 无服务器集群。

1. 在集群详细信息页面上，选择**属性**。

1. 在**网络设置**中，选择**编辑网络类型**。

1. 对于**网络类型**，请选择**双堆栈**。

1. 选择**保存更改**。

------
#### [ Using AWS CLI ]

您可以使用[更新连接 API 将现有 MSK Serverless 集](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-connectivity.html)群的网络类型更新为双堆栈。以下示例使用` update-connectivity`命令将集群的网络类型设置为双堆栈。

在以下示例中，将示例集群 ARN、arn: aws: kafka::: clu *us-east-1* ster* 123456789012*/替换为实际的 MSK 集群 ARN。*myCluster* *12345678-1234-1234-1234-123456789012 -1*要获取当前的集群版本，请使用 desc [ribe-](https://docs.aws.amazon.com/cli/latest/reference/kafka/describe-cluster.html) cluster 命令。

```
aws kafka update-connectivity \
    --cluster-arn "arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/12345678-1234-1234-1234-123456789012-1" \
    --current-version "KTVPDKIKX0DER" \
    --connectivity-info '{
        "networkType": "DUAL"
    }
```

------
#### [ Using AWS SDK ]

以下示例使用 [UpdateConnectivity](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html#UpdateConnectivity)API 将集群的网络类型设置为双堆栈。

在以下示例中，将示例集群 ARN、arn: aws: kafka::: clu *us-east-1* ster*123456789012*/替换为实际的 MSK 集群 ARN。*myCluster* *12345678-1234-1234-1234-123456789012-1*要获取当前集群版本，请使用 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API。

```
import boto3

client = boto3.client("kafka")

response = client.update_connectivity(
    ClusterArn="arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/12345678-1234-1234-1234-123456789012-1",
    CurrentVersion="KTVPDKIKX0DER",
    ConnectivityInfo={
        "NetworkType": "DUAL"
    }
)
print("Connectivity update initiated:", response)
```

------

## 使用双栈网络类型的注意事项
<a name="msks-dual-stack-considerations"></a>
+ IPv6 支持目前仅在双堆栈模式 (IPv4 \$1 IPv6) 下可用，不支持仅在双栈模式 (\$1) 下 IPv6可用。
+ 双栈网络类型不适用于多 VPC 私有连接。
+ 只有在现有集群的所有子网都支持双栈网络类型时，您才能 IPv4 将现有集群的网络类型从双栈更改为双堆栈。
+ 启用双堆栈后，您将无法恢复到 IPv4 网络类型。要切换回去，必须删除并重新创建集群。
+ 您必须具有以下 IAM 权限：
  + `ec2:DescribeSubnets` 和 ` ec2:ModifyVpcEndpoint`

# 监控 MSK Serverless 集群
<a name="serverless-monitoring"></a>

Amazon MSK 与亚马逊集成， CloudWatch 因此您可以收集、查看和分析 MSK 无服务器集群的指标。下表所示为适用于所有无服务器集群的指标。由于这些指标是作为主题中每个分区的单独数据点发布的，因此我们建议将它们作为“SUM”统计数据进行查看，以获得主题级别的视图。

Amazon MSK 以 CloudWatch 每分钟一次的频率向发布`PerSec`指标。这意味着，一分钟的“SUM”统计数据可以准确地表示 `PerSec` 指标的每秒数据。要收集超过一分钟的每秒数据，请使用以下 CloudWatch 数学表达式：`m1 * 60/PERIOD(m1)`。


**默认监控级别可用的指标**  

| Name | 可见时间 | Dimensions | 说明 | 
| --- | --- | --- | --- | 
| BytesInPerSec | 在生成器写入主题之后 | 集群名称、主题 |  每秒从客户端接收的字节数。此指标对每个主题都可用。  | 
| BytesOutPerSec | 在使用器组使用某个主题之后。 | 集群名称、主题 |  每秒发送到客户端的字节数。此指标对每个主题都可用。  | 
| FetchMessageConversionsPerSec | 在使用器组使用某个主题之后。 | 集群名称、主题 |  主题每秒提取消息转换的次数。  | 
| EstimatedMaxTimeLag | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题  | 该 MaxOffsetLag 指标的时间估计值。 | 
| MaxOffsetLag | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题  | 主题中所有分区之间的最大偏移延迟。 | 
| MessagesInPerSec | 在生成器写入主题之后 | 集群名称、主题 | 主题每秒传入消息数。 | 
| ProduceMessageConversionsPerSec | 在生成器写入主题之后 | 集群名称、主题 | 主题每秒生成的消息转换数。 | 
| SumOffsetLag | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题  | 主题中所有分区的聚合偏移延迟。 | 

**要查看 MSK Serverless 指标**

1. 登录 AWS 管理控制台 并打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，依次选择**指标**、**所有指标**。

1. 在指标中搜索 **kafka** 一词。

1. 选择 **AWS/Kafka/集群名称、主题**或 **AWS/Kafka/集群名称、使用器组、主题**以查看不同的指标。