

# 教程：创建 VPC 以用于数据库实例（仅限 IPv4）
<a name="CHAP_Tutorials.WebServerDB.CreateVPC"></a>

一种常见的场景包括虚拟私有云（VPC）中基于 Amazon VPC 服务的数据库实例。此 VPC 与在同一 VPC 中运行的 Web 服务器共享数据。在本教程中，针对此场景创建 VPC。

下图说明了此情形。有关其他方案的信息，请参阅[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)。

![\[单个 VPC 场景\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


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

本教程在单独的可用区中配置额外的公有和私有子网。本教程未使用这些子网。RDS 数据库子网组需要位于至少两个可用区中的一个子网。额外的子网使将来更容易切换到多可用区数据库实例部署。

本教程介绍为 Amazon RDS 数据库实例配置 VPC。有关向您说明如何为此 VPC 方案创建 Web 服务器的教程，请参阅[教程：创建 Web 服务器和 Amazon RDS 数据库实例](TUT_WebAppWithRDS.md)。有关 Amazon VPC 的更多信息，请参阅 [Amazon VPC 入门指南](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/)和 [Amazon VPC 用户指南](https://docs.aws.amazon.com/vpc/latest/userguide/)。

**提示**  
创建数据库实例时，您可以在 Amazon EC2 实例和数据库实例之间自动设置网络连接。网络配置类似于本教程中描述的配置。有关更多信息，请参阅[配置与 EC2 实例的自动网络连接](USER_CreateDBInstance.md#USER_CreateDBInstance.Prerequisites.VPC.Automatic)。

## 创建包含公有子网和私有子网的 VPC
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.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**
   + **IPv4 CIDR block**（IPv4 CIDR 块）– **10.0.0.0/16**
   + **IPv6 CIDR block**（IPv6 CIDR 块）– **No IPv6 CIDR block**（无 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**（无）
   + **VPC endpoints**（VPC 端点）– **None**（无）
   + **DNS options**（DNS 选项）– 保留原定设置值。
**注意**  
Amazon RDS 至少需要位于两个不同可用区中的两个子网，才能支持多可用区数据库实例部署。本教程创建了单可用区部署，但这项要求使得将来可以更轻松地转换为多可用区数据库实例部署。

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

## 为公共 Web 服务器创建 VPC 安全组
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.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-securitygroup**
   + **说明：****Tutorial Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-vpc)** 

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

   1. 确定要用来通过 Secure Shell（SSH）连接到 VPC 中的 EC2 实例的 IP 地址。要确定您的公有 IP 地址，请在新的浏览器窗口或标签页中，使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 上的服务。IP 地址的一个示例为 `203.0.113.25/32`。

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

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

   1. 为新入站规则设置以下值，以允许 SSH 访问 Amazon EC2 实例。如果这样做，您就可以连接到 Amazon EC2 实例，以便安装 Web 服务器和其他实用程序。您还可以连接到 EC2 实例，以便上载 Web 服务器的内容。
      + **类型：** **SSH**
      + **源：**步骤 a 中的 IP 地址或范围，例如：**203.0.113.25/32**。

   1. 选择 **Add rule**。

   1. 为新入站规则设置以下值以允许针对 Web 服务器的 HTTP 访问：
      + **类型：** **HTTP**
      + **源：****0.0.0.0/0**

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

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

## 为私有数据库实例创建 VPC 安全组
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupDB"></a>

要保持您的数据库实例为私有，请创建第二个安全组进行私有访问。要连接到 VPC 中的私有数据库实例，请将入站规则添加到 VPC 安全组，以仅支持来自 Web 服务器的流量。

**创建 VPC 安全组**

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

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

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

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

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

   1. 为新入站规则设置以下值，以允许 Amazon EC2 实例中端口 3306 上的 MySQL 流量。如果这样做，您就可以从 Web 服务器连接到数据库实例。这样，您就可以从 Web 应用程序将数据存储和检索到数据库。
      + **类型：****MySQL/Aurora**
      + **Source**（源）：您在本教程的前面部分创建的 **tutorial-securitygroup** 安全组的标识符，例如 **sg-9edd5cfb**。

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

## 创建数据库子网组
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.DBSubnetGroup"></a>

*数据库子网组* 是您在 VPC 中创建并随后指定给数据库实例的子网集合。通过数据库子网组，您可能能够在创建数据库实例时指定特定的 VPC。

**创建数据库子网组**

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

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

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

   1. 记下名为 **tutorial-subnet-private1-us-west-2a** 和 **tutorial-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-db-subnet-group**
   + **说明：****Tutorial DB Subnet Group**
   + **VPC**：**tutorial-vpc (vpc-*identifier*)** 

1. 在**添加子网**部分中，选择**可用区**和**子网**。

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

1. 选择**创建**。

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

**注意**  
如果您已创建此 VPC 以完成 [教程：创建 Web 服务器和 Amazon RDS 数据库实例](TUT_WebAppWithRDS.md)，请按照 [创建 Amazon RDS 数据库实例](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) 中的说明创建数据库实例。

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

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

**注意**  
如果您在为本教程创建的 VPC 中添加了资源，则可能需要先删除这些资源，然后才能删除 VPC。例如，这些资源可能包括 Amazon EC2 实例或 Amazon RDS 数据库实例。有关更多信息，请参阅 *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. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

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

   1. 在列表中，确定您创建的 VPC，例如 **tutorial-vpc**。

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

1. 删除安全组。

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

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

   1. 选择 Amazon RDS 数据库实例的安全组，例如 **tutorial-db-securitygroup**。

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

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

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

1. 删除 VPC

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

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

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

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

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

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