

# 教程：创建 VPC 以用于数据库集群（双堆栈模式）
<a name="CHAP_Tutorials.CreateVPCDualStack"></a>

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

在本教程中，您将为此场景创建 VPC，该 VPC 与在双堆栈模式下运行的数据库一起使用。双堆栈模式，用于启用基于 IPv6 寻址协议的连接。有关 IP 地址的更多信息，请参阅 [Amazon Aurora IP 寻址](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing)。

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

下图说明了此情形。

 

![\[双堆栈模式的 VPC 场景\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/con-VPC-sec-grp-dual-stack-aurora.png)


有关其他方案的信息，请参阅[在 VPC 中访问数据库集群的场景](USER_VPC.Scenarios.md)。

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

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

要创建使用双堆栈模式的数据库集群，请为 **Network type**（网络类型）设置指定 **Dual-stack mode**（双堆栈模式）。您也可以使用相同的设置修改数据库集群。有关创建数据库集群的更多信息，请参阅[创建 Amazon Aurora 数据库集群](Aurora.CreateInstance.md)。有关修改数据库集群的更多信息，请参阅 [修改 Amazon Aurora 数据库集群](Aurora.Modifying.md)。

本教程介绍为 Amazon Aurora 数据库集群配置 VPC。有关 Amazon VPC 的更多信息，请参阅 [Amazon VPC 用户指南](https://docs.aws.amazon.com/vpc/latest/userguide/)。

## 创建包含公有子网和私有子网的 VPC
<a name="CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets"></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 设置），请设置这些值：
   + **Name tag auto-generation**（名称标签自动生成）– **tutorial-dual-stack**
   + **IPv4 CIDR block**（IPv4 CIDR 块）– **10.0.0.0/16**
   + **IPv6 CIDR block**（IPv6 CIDR 块）– **Amazon-provided IPv6 CIDR block**（Amazon 提供的 IPv6 CIDR 块）
   + **Tenancy**（租赁）– **Default**（原定设置）
   + **Number of Availability Zones (AZs)** [可用区（AZ）数量] – **2**
   + **Customize AZs**（自定义可用区）– 保留原定设置值。
   + **Number of public subnet**（公有子网的数量）– **2**
   + **Number of private subnets**（私有子网的数量）– **2**
   + **Customize subnets CIDR blocks**（自定义子网 CIDR 块）– 保留原定设置值。
   + **NAT gateways (\$1)** [NAT 网关（\$1）]– **None**（无）
   + **Egress only internet gateway**（仅限出口的互联网网关）– **No**（否）
   + **VPC endpoints**（VPC 端点）– **None**（无）
   + **DNS options**（DNS 选项）– 保留原定设置值。
**注意**  
Amazon RDS 至少需要位于两个不同可用区中的两个子网，才能支持多可用区数据库实例部署。本教程创建了单可用区部署，但这项要求使得将来可以轻松转换为多可用区数据库实例部署。

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

## 为公有 Amazon EC2 实例创建 VPC 安全组
<a name="CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2"></a>

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

**创建 VPC 安全组**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

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

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称：****tutorial-dual-stack-securitygroup**
   + **说明：****Tutorial Dual-Stack Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-dual-stack-vpc)** 

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

   1. 确定要用来通过 Secure Shell（SSH）连接到 VPC 中的 EC2 实例的 IP 地址。

      互联网协议版本 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 实例来安装 SQL 客户端和其他应用程序。指定一个 IP 地址，以便您可以访问 EC2 实例：
      + **类型：****SSH**
      + **Source**（源）：步骤 a 中的 IP 地址或范围。IPv4 IP 地址的一个示例为 **203.0.113.25/32**。IPv6 IP 地址的一个示例为 **2001:DB8::/32**。

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

   请记下安全组 ID，因为本教程的后面将需要它。

## 为私有数据库集群创建 VPC 安全组
<a name="CHAP_Tutorials.CreateVPCDualStack.SecurityGroupDB"></a>

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

**创建 VPC 安全组**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

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

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称：****tutorial-dual-stack-db-securitygroup**
   + **说明：****Tutorial Dual-Stack DB Instance Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-dual-stack-vpc)**

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

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

   1. 为新入站规则设置以下值，以允许 Amazon EC2 实例中端口 3306 上的 MySQL 流量。如果这样做，您就可以从 EC2 实例连接到您的数据库集群。这样做意味着您可以将数据从 EC2 实例发送到数据库。
      + **Type**（类型）：**MySQL/Aurora**
      + **Source**（源）：您在本教程的前面部分创建的 **tutorial-dual-stack-securitygroup** 安全组的标识符，例如 **sg-9edd5cfb**。

1. 要创建安全组，请选择**创建安全组**。

## 创建数据库子网组
<a name="CHAP_Tutorials.CreateVPCDualStack.DBSubnetGroup"></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. 记下名为 **tutorial-dual-stack-subnet-private1-us-west-2a** 和 **tutorial-dual-stack-subnet-private2-us-west-2b** 的子网的子网 ID。

      创建数据库子网组时需要子网 ID。

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

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

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

1. 选择 **Create DB subnet group**（创建数据库子网组）。

1. 在**创建数据库子网组**页面的**子网组详细信息**中设置以下值：
   + **名称：****tutorial-dual-stack-db-subnet-group**
   + **说明：****Tutorial Dual-Stack DB Subnet Group**
   + **VPC**：**tutorial-dual-stack-vpc (vpc-*identifier*)** 

1. 在 **Add subnets**（添加子网）部分中，选择 **Availability Zones**（可用区）和 **Subnets**（子网）选项的值。

   对于本教程，请为 **Availability Zones**（可用区）选择 **us-east-2a** 和 **us-east-2b**。对于 **Subnets**（子网），选择您在上一步中确定的私有子网。

1. 选择**创建**。

您的新数据库子网组显示在 RDS 控制台的数据库子网组列表中。您可以选择数据库子网组以查看其详细信息。其中包括支持的寻址协议、与该组关联的所有子网以及数据库子网组支持的网络类型。

## 在双堆栈模式下创建 Amazon EC2 实例
<a name="CHAP_Tutorials.CreateVPCDualStack.CreateEC2Instance"></a>

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

在 **Configure Instance Details**（配置实例详细信息）页面上，设置以下值并将其他值保留为其原定设置值：
+ **网络** – 选择同时具有公有子网和私有子网的现有 VPC，如在[创建包含公有子网和私有子网的 VPC](#CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets)中创建的 **tutorial-dual-stack-vpc**（vpc-*identifier*）。
+ **Subnet**（子网）– 选择一个现有的公有子网，如在[为公有 Amazon EC2 实例创建 VPC 安全组](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2)中创建的 **subnet-*identifier* \$1 tutorial-dual-stack-subnet-public1-us-east-2a \$1 us-east-2a**。
+ **Auto-assign Public IP**（自动分配公有 IP）– 选择 **Enable**（启用）。
+ **Auto-assign IPv6 IP**（自动分配 IPv6 IP）– 选择 **Enable**（启用）。
+ **Firewall (security groups)** [防火墙（安全组）] – 选择 **Select an existing security group**（选择现有安全组）。
+ **Common security groups**（常用安全组）– 选择一个现有的安全组，例如在[为公有 Amazon EC2 实例创建 VPC 安全组](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2)中创建的 `tutorial-securitygroup`。确保您选择的安全组包括 Secure Shell (SSH) 和 HTTP 访问的入站规则。

## 在双堆栈模式下创建数据库集群
<a name="CHAP_Tutorials.CreateVPCDualStack.CreateDBInstance"></a>

在此步骤中，您将创建在双堆栈模式下运行的数据库集群。

**创建数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

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

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择**创建数据库**。

1. 在 **Create database**（创建数据库）页面上，确保选择了 **Standard Create**（标准创建）选项，然后选择 Aurora MySQL 数据库引擎类型。

1. 在 **Connectivity**（连接）部分中，设置以下值：
   + **Network type**（网络类型）– 选择 **Dual-stack mode**（双堆栈模式）。  
![\[控制台中的 Network type（网络类型）部分，已选中 Dual-stack mode（双堆栈模式）\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/dual-stack-mode.png)
   + **Virtual Private Cloud (VPC)** [虚拟私有云（VPC）]– 选择具有公有子网和私有子网的现有 VPC，如在[创建包含公有子网和私有子网的 VPC](#CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets)中创建的 **tutorial-dual-stack-vpc** (vpc-*identifier*)。

     VPC 的子网必须位于不同的可用区中。
   + **DB subnet group**（数据库子网组）– VPC 的数据库子网组，如在[创建数据库子网组](#CHAP_Tutorials.CreateVPCDualStack.DBSubnetGroup)中创建的 **tutorial-dual-stack-db-subnet-group**。
   + **Public access**（公有访问权限）– 选择 **No**（否）。
   + **VPC security group (firewall)** [VPC 安全组（防火墙）] – 选择 **Choose existing**（选择现有）。
   + **Existing VPC security groups**（现有 VPC 安全组）– 选择为私有访问配置的现有 VPC 安全组，如 [为私有数据库集群创建 VPC 安全组](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupDB) 中创建的 **tutorial-dual-stack-db-securitygroup**。

     通过选择与其他每个安全组关联的 **X** 来删除该安全组，如默认安全组。
   + **Availability Zone**（可用区）– 选择 **us-west-2a**。

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

1. 对于其余部分，请指定数据库集群设置。有关每项设置的信息，请参阅 [Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

## 连接到 Amazon EC2 实例和数据库集群
<a name="CHAP_Tutorials.CreateVPCDualStack.Connect"></a>

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

要从 Aurora MySQL 实例连接到 Aurora MySQL 数据库集群，请按照[连接到 Aurora MySQL 数据库集群](CHAP_GettingStartedAurora.CreatingConnecting.Aurora.md#CHAP_GettingStartedAurora.Aurora.Connect)中的说明进行操作。

## 删除 VPC
<a name="CHAP_Tutorials.CreateVPCDualStack.Delete"></a>

为本教程创建 VPC 和其他资源后，如果不再需要 VPC 和其他资源，可以将其删除。

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

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

1. 删除数据库子网组：

   1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

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

   1. 选择要删除的数据库子网组，例如 **tutorial-db-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，例如 **tutorial-dual-stack-vpc**。

   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 RDS 数据库实例的安全组，例如 **tutorial-dual-stack-db-securitygroup**。

   1. 对于 **Actions**（操作），请选择 **Delete security groups**（删除安全组），然后在确认页面上选择 **Delete**（删除）。

   1. 在 **Security Groups**（安全组）页面上，选择 Amazon EC2 实例的安全组，例如 **tutorial-dual-stack-securitygroup**。

   1. 对于 **Actions**（操作），请选择 **Delete security groups**（删除安全组），然后在确认页面上选择 **Delete**（删除）。

1. 删除 NAT 网关：

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

   1. 选择 **VPC 控制面板**，然后选择 **NAT 网关**。

   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，例如 **tutorial-dual-stack-vpc**。

   1. 对于 **Actions (操作)**，请选择 **Delete VPC (删除 VPC)**。

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

   1. 在确认页面上，输入 **delete** 并选择 **Delete (删除)**。

1. 释放弹性 IP 地址：

   1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

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

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

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

   1. 在确认页面上，请选择**释放**。