

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

# 创建双堆栈 VPC 以用于 DocumentDB 集群
<a name="docdb-vpc-create-dual-stack"></a>

一种常见的场景包括虚拟私有云（VPC）中基于 Amazon VPC 服务的集群。此 VPC 与在同一 VPC 中运行的公有 Amazon EC2 实例共享数据。在本主题中，针对此场景创建 VPC。

**Topics**
+ [步骤 1：创建包含私有子网和公有子网的 VPC](#ds-vpc-private-public-subnets)
+ [步骤 2：为公有 Amazon EC2 实例创建 VPC 安全组](#ds-vpc-public-security-group)
+ [步骤 3：为私有集群创建 VPC 安全组](#ds-vpc-private-security-group)
+ [步骤 4：创建子网组](#ds-vpc-subnet-group)
+ [步骤 5：在双堆栈模式下创建 Amazon EC2 实例](#ds-vpc-ec2-dual-stack)
+ [步骤 6：在双堆栈模式下创建集群](#ds-vpc-cluster-dual-stack)
+ [步骤 7：连接 Amazon EC2 实例和数据库集群](#ds-vpc-connect-ec2)
+ [删除 VPC](#ds-vpc-delete)

在此过程中，您将为此场景创建 VPC，该VPC适用于在双堆栈模式下运行的数据库。 Dual-stack 模式允许通过 IPv6 寻址协议进行连接。有关 IP 地址的更多信息，请参阅 [Amazon DocumentDB IP 寻址](vpc-clusters.md#vpc-docdb-ip-addressing)。

Dual-stack 大多数区域都支持网络集群。有关更多信息，请参阅 [Dual-stack 模式区域和版本可用性](vpc-clusters.md#dual-stack-availability)。要查看双堆栈模式的限制，请参阅 [双堆栈网络集群的限制](vpc-clusters.md#dual-stack-limitations)。

本主题和 IPv4-only 主题在同一 VPC 中创建公有子网和私有子网。有关在一个 VPC 中创建 Amazon DocumentDB 集群并在另一个 VPC 中创建 Amazon EC2 实例的信息，请参阅 [访问 VPC 中的 Amazon DocumentDB 集群](access-cluster-vpc.md)。

DocumentDB 集群只需对 Amazon EC2 实例可用，而无需对公共互联网可用。因此，请创建包含公有子网和私有子网的 VPC。EC2 实例托管在公有子网中，因此能够访问公共互联网。集群托管在私有子网中。EC2 实例可以连接到集群，因为它托管在同一 VPC 内。但是，集群不可用于公共互联网，从而提高了安全性。

本主题中的此过程在单独的可用区中配置额外的公有子网和私有子网。此过程未使用这些子网。DocumentDB 子网组需要位于至少两个可用区中的一个子网。借助额外的子网，可以轻松地配置多个 DocumentDB 实例。

要创建使用双堆栈模式的集群，请在 “**网络类型**” 设置中指定 **Dual-stack mod** e。您也可以使用相同的设置修改集群。有关创建集群的更多信息，请参阅 [创建 Amazon DocumentDB 集群](db-cluster-create.md)。有关修改数据库集群的更多信息，请参阅 [修改 Amazon DocumentDB 集群](db-cluster-modify.md)。

本主题介绍为 Amazon DocumentDB 集群配置 VPC。有关 Amazon VPC 的更多信息，请参阅 [https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)。

## 步骤 1：创建包含私有子网和公有子网的 VPC
<a name="ds-vpc-private-public-subnets"></a>

使用以下步骤创建包含公有和私有子网的 VPC。

**创建 VPC 和子网**

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

1. 在的右上角 AWS 管理控制台，选择要在其中创建 VPC 的区域。此示例使用 美国西部（俄勒冈） 区域。

1. 在左上角，选择 **VPC Dashboard**（VPC 控制面板）。要开始创建 VPC，请选择 **Create VPC**（创建 VPC）。

1. 对于 **VPC Settings**（VPC 设置）下的 **Resources to create**（要创建的资源），选择 **VPC and more**（VPC 及更多）。

1. 对于 **VPC settings**（VPC 设置），请设置以下值：
   + **名称标签自动生成**：**example-dual-stack**
   + **IPv4 CIDR 数据块**：**10.0.0.0/16**
   + **IPv6 网段—— **Amazon-provided IPv6** 网段封锁**
   + **租赁**：**默认值**
   + **可用区（AZ）的数量**：**2**
   + **自定义可用区**：保留默认值
   + **公有子网的数量**：**2**
   + **私有子网的数量**：**2**
   + **自定义子网 CIDR 数据块**：保留默认值
   + **NAT 网关（$）**：**无**
   + **仅出口互联网网关**：**否**
   + **VPC 端点**：**无**
   + **DNS 选项**：保留默认值

1. 选择**创建 VPC**。

## 步骤 2：为公有 Amazon EC2 实例创建 VPC 安全组
<a name="ds-vpc-public-security-group"></a>

接下来创建安全组以便公共访问。要连接到 VPC 中的公有 EC2 实例，请将入站规则添加到 VPC 安全组，以允许流量从互联网连接。

**创建 VPC 安全组**

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

1. 依次选择 **VPC 控制面板)**、**安全组**和**创建安全组**。

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称**：**example-dual-stack-securitygroup**
   + **描述**：**Dual-stack security group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-example-dual-stack**。

1. 将入站规则添加到安全组。

   1. 确定要用来通过 Secure Shell（SSH）连接到 VPC 中的 EC2 实例的 IP 地址。要确定您的公有 IP 地址，可以在不同的浏览器窗口或选项卡中使用该服务[https://checkip.amazonaws.com](https://checkip.amazonaws.com)。

      互联网协议版本 4 (IPv4) 地址范围的一个示例是`203.0.113.25/32`。互联网协议版本 6（IPv6）地址范围的示例为 `2001:db8:1234:1a00::/64`。

      在许多情况下，您可能通过互联网服务提供商（ISP）进行连接，或者在不使用静态 IP 地址的情况下从防火墙之后进行连接。如果是这样，请找出客户端计算机使用的 IP 地址范围。
**警告**  
如果对 IPv4 使用 `0.0.0.0/0` 或对 IPv6 使用 `::0`，则使所有 IP 地址可能能够使用 SSH 访问您的公有实例。在测试环境下短时间内，此方法尚可接受，但它对于生产环境并不安全。在生产环境中，请仅授权特定 IP 地址或地址范围访问您的实例。

   1. 在**入站规则**部分中，选择**添加规则**。

   1. 为新入站规则设置以下值，以允许 SSH 访问 Amazon EC2 实例。完成此操作后，您就可以连接到 EC2 实例来安装应用程序或其他实用程序。指定一个 IP 地址，以便您可以访问 EC2 实例：
      + **类型**：**SSH**
      + **来源**：您在步骤 a 中创建的 IP 地址或范围。IPv4 地址范围的一个示例为 **203.0.113.25/3**2。IPv6 地址范围的一个示例为 **2001:DB8::/32**。

   1. 选择**添加规则**。

1. 请选择 **Create security group**（创建安全组）以创建安全组。

   请记下安全组 ID，因为稍后在另一个过程中需要使用该 ID。

## 步骤 3：为私有集群创建 VPC 安全组
<a name="ds-vpc-private-security-group"></a>

要保持您的集群为私有，请创建第二个安全组进行私有访问。要连接到 VPC 中的私有集群，请将入站规则添加到 VPC 安全组。它们仅允许来自 Amazon EC2 实例的流量。

**创建 VPC 安全组**

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

1. 依次选择 **VPC 控制面板)**、**安全组**和**创建安全组**。

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称**：**example-dual-stack-cluster-securitygroup**
   + **描述**：**Dual-stack cluster security group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-example-dual-stack**

1. 将入站规则添加到安全组。

   1. 在**入站规则**部分中，选择**添加规则**。

   1. 为新入站规则设置以下值，以允许 Amazon EC2 实例中端口 27017 上的 DocumentDB 流量。完成此操作后，您就可以从 EC2 实例连接到集群。这样您就可以将数据从 EC2 实例发送到数据库。
      + **类型**：**Custom TCP**
      + **来源**：您先前在本主题中创建的 EC2 安全组的标识符，例如：**sg-9edd5cfb**。

1. 请选择 **Create security group**（创建安全组）以创建安全组。

## 步骤 4：创建子网组
<a name="ds-vpc-subnet-group"></a>

子网组是在 VPC 中创建的一组子网，随后可为集群指定这些子网。通过使用子网组，您可以在创建集群时指定特定的 VPC。要创建与 `DUAL` 兼容的子网组，所有子网都必须与 `DUAL` 兼容。要与 `DUAL` 兼容，子网必须具有与之关联的 IPv6 CIDR。

**创建子网组**

1. 在 VPC 中识别数据库的私有子网。

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

   1. 选择 **VPC Dashboard**（VPC 控制面板），然后选择 **Subnets**（子网）。

   1. 记下您在步骤 1 中创建的名为如下的子网的子网 ID：**example-dual-stack-subnet-private1-us-west-2a** 和 **example-dual-stack-subnet-private2-us-west-2b**。创建子网组时需要子网 ID。

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

   确保您连接到 Amazon DocumentDB 控制台，而不是 Amazon VPC 控制台。

1. 在导航窗格中，选择**子网组**。

1. 选择**创建**。

1. 在**创建子网组**页面的**子网组详细信息**部分中设置以下值：
   + **名称**：**example-dual-stack-cluster-subnet-group**
   + **描述**：**Dual-stack cluster subnet group**

1. 在**添加子网**部分中，选择以下值：
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-example-dual-stack**
   + **可用区**：选择在步骤 1 中创建的两个可用区。示例：**us-west-2a** 和 **us-west-2b**
   + **子网**：选择您在步骤 1 中创建的私有子网。

1. 选择**创建**。

您的新子网组显示在 DocumentDB 控制台的子网组列表中。您可以选择子网组以在详细信息窗格中查看详细信息。这些详细信息包括与该组关联的所有子网。

## 步骤 5：在双堆栈模式下创建 Amazon EC2 实例
<a name="ds-vpc-ec2-dual-stack"></a>

要创建 Amazon EC2 实例，请按照《Amazon Elastic Compute Cloud 用户指南》**中的[使用启动实例向导启动 EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)中的说明操作。

在 **Configure Instance Details**（配置实例详细信息）页面上，设置以下值并将其他值保留为其原定设置值：
+ **网络**：选择同时具有公有子网和私有子网的现有 VPC，如在 [步骤 1：创建包含私有子网和公有子网的 VPC](#ds-vpc-private-public-subnets) 中创建的 **vpc-example-dual-stack-vpc**（vpc-*identifier*）。
+ **子网**：选择一个现有的公有子网，如在 [步骤 2：为公有 Amazon EC2 实例创建 VPC 安全组](#ds-vpc-public-security-group) 中创建的 **subnet-*identifier* \| example-dual-stack-subnet-public1-us-east-2a \| us-east-2a**。
+ **Auto-assign 公有 IP**-选择**启用**。
+ **Auto-assign IPv6 IP**-选择**启用**。
+ **防火墙（安全组）**：选择**选择现有安全组**。
+ **常见安全组**：选择现有安全组，例如在 [步骤 2：为公有 Amazon EC2 实例创建 VPC 安全组](#ds-vpc-public-security-group) 中创建的 **example-dual-stack-securitygroup**。确保您选择的安全组包括 Secure Shell (SSH) 和 HTTP 访问的入站规则。

## 步骤 6：在双堆栈模式下创建集群
<a name="ds-vpc-cluster-dual-stack"></a>

在此步骤中，您将创建在双堆栈模式下运行的数据库集群。**！！！注意：在对控制台进行 IPv6 更新后，需要编辑此部分！！！**

**在双堆栈模式下创建集群**

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

1. 在控制台的右上角，选择要 AWS 区域 在哪里创建 DocumentDB 集群。此示例使用美国东部（俄亥俄州）区域。

1. 在导航窗格中，选择**集群**。

1. 在**集群**列表页面上，选择**创建**。

1. 在**创建 Amazon DocumentDB 集群**页面上，确保选择了**Instance-based 集群**选项。

1. 在 “**连接**” 部分的**网络类型**下，选择**Dual-stack 模式**。  
![控制台中的网络类型部分，已选择 Dual-stack 模式。](http://docs.aws.amazon.com/zh_cn/documentdb/latest/devguide/images/nw-type-dual-stack.png)

1. 在页面底部，打开**显示高级设置**。

1. 在**网络设置**部分中，选择以下值：
   + **虚拟私有云（VPC）**：选择同时具有公有子网和私有子网的现有 VPC，如在 [步骤 1：创建包含私有子网和公有子网的 VPC](#ds-vpc-private-public-subnets) 中创建的 **vpc-example-dual-stack**（vpc-*identifier*）。

     VPC 的子网必须位于不同的可用区中。
   + **子网组**：选择 VPC 的子网组，如在 [步骤 4：创建子网组](#ds-vpc-subnet-group) 中创建的 **example-dual-stack-cluster-subnet-group**。
   + **公有访问权限**：选择**否**。
   + **VPC 安全组（防火墙）**：选择**选择现有**。
   + **现有 VPC 安全组**：选择为私有访问配置的现有 VPC 安全组，如在 [步骤 3：为私有集群创建 VPC 安全组](#ds-vpc-private-security-group) 中创建的 **example-dual-stack-cluster-securitygroup**。

     通过选择与其他每个安全组关联的 **X** 来删除该安全组，如默认安全组。
   + **可用区**：选择您在步骤 1 中创建的可用区。示例：**us-west-2a**。

     为避免跨可用区的流量，请确保集群和 EC2 实例位于同一个可用区内。

1. 对于其余部分，请指定集群设置。有关每项设置的信息，请参阅[创建 Amazon DocumentDB 集群](db-cluster-create.md)。

## 步骤 7：连接 Amazon EC2 实例和数据库集群
<a name="ds-vpc-connect-ec2"></a>

在双堆栈模式下创建 Amazon EC2 实例和 DocumentDB 集群后，您可以使用 IPv6 协议连接到每个实例。要使用 IPv6 协议连接到 EC2 实例，请按照《Amazon Elastic Compute Cloud 用户指南》**中的[连接 EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)中的说明操作。

要从 EC2 实例连接到您的 DocumentDB 集群，请按照“手动连接 Amazon EC2”主题中的 [步骤 5：安装 MongoDB Shell](connect-ec2-manual.md#manual-connect-ec2.install-mongo-shell) 中的说明操作（并继续执行此过程中的后续步骤 6 和步骤 7）。

## 删除 VPC
<a name="ds-vpc-delete"></a>

如果不再需要 VPC 及其中使用的其他资源，可以将其删除。

**注意**  
如果您在本主题中创建的 VPC 中添加了资源，则可能需要先删除这些资源，然后才能删除 VPC。例如，这些资源可能包括 Amazon EC2 实例或 DocumentDB 集群。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[您的 VPC 的安全性](https://docs.aws.amazon.com/vpc/latest/userguide/delete-vpc.html)。

**删除 VPC 和相关资源**

1. 删除子网组：

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

   1. 在导航窗格中，选择**子网组**。

   1. 选择要删除的子网组，例如 **example-dual-stack-cluster-subnet-group**。

   1. 选择 **Delete (删除)**，然后在确认窗口中选择 **Delete (删除)**。

1. 记下 VPC ID：

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

   1. 选择 **VPC 控制面板**，然后选择**您的 VPC**。

   1. 在列表中，标识您创建的 VPC，例如 **vpc-example-dual-stack**。

   1. 记下所创建 VPC 的 **VPC ID**。在后面的步骤中，您需要此 VPC ID。

1. 删除安全组：

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

   1. 选择 **VPC 控制面板**，然后选择**安全组**。

   1. 选择 Amazon DocumentDB 集群的安全组，例如 **example-dual-stack-securitygroup**。

   1. 对于**操作**，请选择**删除安全组**，然后在确认对话框中选择**删除**。

   1. 回到**安全组**页面上，选择 Amazon EC2 实例的安全组，例如 **example-securitygroup**。

   1. 对于**操作**，请选择**删除安全组**，然后在确认对话框中选择**删除**。

1. 删除 NAT 网关：

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

   1. 选择 **VPC 控制面板**，然后选择**安全组**。

   1. 选择您创建的 VPC 的 NAT 网关。使用 VPC ID 标识正确的 NAT 网关。

   1. 对于 **Actions**（操作），请选择 **Delete NAT gateway**（删除 NAT 网关）。

   1. 在确认对话框中，输入 **delete**，然后选择**删除**。

1. 删除 VPC：

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

   1. 选择 **VPC 控制面板**，然后选择**您的 VPC**。

   1. 选择要删除的 VPC，例如 **vpc-example-dual-stack**。

   1. 对于**操作**，请选择“删除 VPC”。

      确认页面显示与 VPC 关联的其他资源，这些资源也将被删除，包括与其关联的子网。

   1. 在确认对话框中，输入 **delete**，然后选择**删除**。

1. 释放弹性 IP 地址：

   1. 通过 [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com//ec2) 打开 EC2 控制台。

   1. 选择 **EC2 控制面板**，然后选择**弹性 IP**。

   1. 选择要释放的弹性 IP 地址。

   1. 对于 **Actions**（操作），请选择 **Release Elastic IP addresses**（释放弹性 IP 地址）。

   1. 在确认对话框中，选择**释放**。