

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

# 创建双堆栈 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 与在双堆栈模式下运行的数据库一起使用。双栈模式允许通过 IPv6 寻址协议进行连接。有关 IP 地址的更多信息，请参阅 [Amazon DocumentDB IP 寻址](vpc-clusters.md#vpc-docdb-ip-addressing)。

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

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

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

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

要创建使用双堆栈模式的集群，请为**网络类型**设置指定**双堆栈模式**。您也可以使用相同的设置修改集群。有关创建集群的更多信息，请参阅 [创建 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 上打开亚马逊 VPC](https://console.aws.amazon.com//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 CIDR 块** — **亚马逊 IPv6 **提供的 CIDR 块
   + **租赁** – **默认值**
   + **可用区数量 (AZs)** — **2**
   + **自定义 AZs**-保留默认值
   + **公有子网的数量** – **2**
   + **私有子网的数量** – **2**
   + **自定义子网 CIDR 数据块** – 保留默认值
   + **NAT 网关（\$1）**– **无**
   + **仅出口互联网网关** – **否**
   + **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 上打开亚马逊 VPC](https://console.aws.amazon.com//vpc) 控制台。

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

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

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

   1. 使用安全外壳 (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 地址范围。
**警告**  
如果您使用 f `0.0.0.0/0` or IPv4 或 `::0` for IPv6，则可以让所有 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 上打开亚马逊 VPC](https://console.aws.amazon.com//vpc) 控制台。

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

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

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

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

   1. 为您的新入站规则设置以下值，以允许来自您的亚马逊实例的端口 27017 上的 DocumentDB 流量。 EC2 完成此操作后，您可以从您的 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 上打开亚马逊 VPC](https://console.aws.amazon.com//vpc) 控制台。

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

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

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](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>

要创建亚马逊 EC2 实例，请按照《*亚马逊弹性计算云用户指南*[》中控制台中的使用启动实例向导](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)启动实例中的说明进行操作。 EC2 

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

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

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

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

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

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

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

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

1. 在**创建 Amazon DocumentDB 集群**页面上，确保选择了**基于实例的集群**选项。

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

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

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

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

     通过选择与其他每个安全组关联的 **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 集群，请按照 “ EC2 手动连接 Amazon” 主题中的[步骤 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。例如，这些资源可能包括亚马逊 EC2 实例或文档数据库集群。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[您的 VPC 的安全性](https://docs.aws.amazon.com/vpc/latest/userguide/delete-vpc.html)。

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

1. 删除子网组：

   1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](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 上打开亚马逊 VPC](https://console.aws.amazon.com//vpc) 控制台。

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

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

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

1. 删除安全组：

   1. 在 [https://console.aws.amazon.com/vpc 上打开亚马逊 VPC](https://console.aws.amazon.com//vpc) 控制台。

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

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

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

   1. 返回**安全组**页面，为 Amazon EC2 实例选择安全组，例如 e **xample-** securitygroup。

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

1. 删除 NAT 网关：

   1. 在 [https://console.aws.amazon.com/vpc 上打开亚马逊 VPC](https://console.aws.amazon.com//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 上打开亚马逊 VPC](https://console.aws.amazon.com//vpc) 控制台。

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

   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 控制面板**，然后选择**弹性 IPs**。

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

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

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