在 VPC 中使用数据库集群 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在 VPC 中使用数据库集群

您的数据库集群位于虚拟私有云(VPC)内。Amazon VPC 是一个虚拟网络,在逻辑上与Amazon云中的其他虚拟网络相互隔离。使用 Amazon VPC,您可能能够将 Amazon 资源(例如,Amazon Aurora 数据库集群或 Amazon EC2 实例),启动到 VPC 中。VPC 可以是您的账户附带的默认 VPC,也可以是您创建的 VPC。所有 VPC 均与您的 Amazon 账户关联。

原定设置 VPC 具有可用来隔离 VPC 内资源的三个子网。默认 VPC 还具有一个互联网网关,可用来从 VPC 外部访问 VPC 内部的资源。

有关涉及 VPC 内的 Amazon Aurora 数据库集群的场景的列表,请参阅在 VPC 中访问数据库集群的场景

在以下教程中,您可以学习创建可用于常见 Amazon Aurora 场景的 VPC:

在 VPC 中使用数据库集群

下面是一些有关在 VPC 中使用数据库集群的提示:

  • 您的 VPC 必须至少有两个子网。这些子网必须位于要部署数据库集群的 Amazon Web Services 区域中两个不同的可用区。子网 是 VPC 的 IP 地址范围段,您可以指定子网,利用子网并根据安全和操作需要对数据库集群进行分组。

  • 如果要让 VPC 中的数据库集群实现公开访问,请确保开启 VPC 属性 DNS hostnames(DNS 主机名)和 DNS resolution(DNS 解析)。

  • 您的 VPC 必须具有您创建的数据库子网组。您可通过指定创建的子网来创建数据库子网组。Amazon Aurora 选择子网和该子网中的 IP 地址,以与数据库集群中的主数据库实例关联。主数据库实例使用包含该子网的可用区。

  • 您的 VPC 必须具有允许访问数据库集群的 VPC 安全组。

    有关更多信息,请参阅在 VPC 中访问数据库集群的场景

  • 每个子网必须包含足够大的 CIDR 数据块,以便在维护活动(包括故障转移和扩展计算)期间有可供 Amazon Aurora 使用的备用 IP 地址。例如,诸如 10.0.0.1.0/24 和 10.0.1.0/24 的范围通常足够大。

  • VPC 的 instance tenancy 属性可能为 defaultdedicated。所有默认 VPC 的“instance tenancy”属性设置为“default”,则默认的 VPC 可支持任何数据库实例类。

    如果您选择将数据库集群放在“instance tenancy”属性设置为“dedicated”的专用 VPC 中,则数据库集群的数据库实例类必须是已批准的 Amazon EC2 专用实例类型之一。例如,r5.large EC2 专用实例对应于 db.r5.large 数据库实例类。有关 VPC 中实例租期的信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的专用实例

    注意

    当您将实例租赁属性设置为专用于数据库集群时,它不能保证数据库集群将在专属主机上运行。

使用数据库子网组

子网 是您指定的用来根据安全和操作需要对资源进行分组的 VPC 的 IP 地址范围段。数据库子网组 是您在 VPC 中创建并随后指定给数据库集群的子网(通常为私有子网)的集合。使用数据库子网组,您可以在使用 Amazon CLI 或 RDS API 创建数据库集群时指定特定的 VPC。如果您使用控制台,则可以选择要使用的 VPC 和子网组。

每个数据库子网组应包含给定 Amazon Web Services 区域中至少两个可用区的子网。在 VPC 中创建数据库集群时,为其选择数据库子网组。从数据库子网组中,Amazon Aurora 会选择子网和该子网中的 IP 地址(与数据库集群中的数据库实例相关联)。数据库使用包含该子网的可用区。

数据库子网组中的子网要么是公有子网,要么是私有子网。根据您为网络访问控制列表(网络 ACL)和路由表设置的配置,这些子网是公有子网或私有子网。要使数据库集群可公开访问,其数据库子网组中的所有子网必须均为公有子网。如果与可公开访问的数据库集群关联的子网从公有更改为私有,则可能会影响数据库集群的可用性。

要创建支持双堆栈模式的数据库子网组,请确保添加到该数据库子网组的每个子网都有一个与之关联的 Internet 协议版本 6 (IPv6) CIDR 块。有关更多信息,请参阅 Amazon VPC 用户指南中的 Amazon Aurora IP 寻址迁移到 IPv6

Amazon Aurora 在 VPC 中创建数据库集群时,它使用数据库子网组中的 IP 地址将网络接口分配给数据库集群。不过,我们强烈建议您使用域名系统(DNS)名称来连接数据库集群。之所以建议这样做,是因为底层 IP 地址在失效转移期间会发生变化。

注意

对于在 VPC 中运行的每个数据库集群,请确保数据库子网组的每个子网中预留至少一个地址,以供 Amazon Aurora 用来执行恢复操作。

Amazon Aurora IP 寻址

IP 地址使 VPC 中的资源能够相互通信以及与 Internet 上的资源进行通信。Amazon Aurora 支持 Internet 协议版本 4 (IPv4) 和 IPv6 寻址协议。默认情况下,Amazon Aurora 和 Amazon VPC 使用 IPv4 寻址协议。您无法关闭这种行为。创建 VPC 时,请确保指定 IPv4 CIDR 块 (一系列私有 IPv4 地址)。您可以选择将 IPv6 CIDR 块分配给您的 VPC 和子网,并将来自该块的 IPv6 地址分配给您子网中的数据库集群

对 IPv6 协议的支持扩展了支持的 IP 地址数量。通过使用 IPv6 协议,您可以确保有足够的可用地址来应对 Internet 的未来发展。新的和现有 RDS 资源可以在 Amazon VPC 内使用 IPv4 和 IPv6 地址。在应用程序不同部分使用的两个协议之间配置、保护和转换网络流量可能会产生运营开销。您可以对 Amazon RDS 资源的 IPv6 协议进行标准化,以简化网络配置。

IPv4 地址

创建 VPC 时,您必须以 CIDR 块(如 10.0.0.0/16)的形式为 VPC 指定一个 IPv4 地址范围。数据库子网组 定义此 CIDR 块中可供数据库集群使用的 IP 地址范围。这些 IP 地址可以是私有地址,也可以是公有地址。

私有 IPv4 地址是指无法通过 Internet 访问的 IP 地址。您可以使用私有 IPv4 地址在同一 VPC 中的数据库集群和其他资源(如 Amazon EC2 实例)之间进行通信。每个数据库集群都有一个用于在 VPC 中通信的私有 IP 地址。

公有 IP 地址是指可通过 Internet 访问的 IPv4 地址。您可以使用公有地址在数据库集群和 Internet 上的资源(如 SQL 客户端)之间进行通信。您可以控制数据库集群是否接收公有 IP 地址。

有关说明如何创建可用于常见 Amazon Aurora 场景的 VPC(只有私有 IPv4 地址)的教程,请参阅 教程:创建 VPC 以用于数据库集群(仅限 IPv4)

IPv6 地址

您可以选择向 VPC 和子网关联 IPv6 CIDR 块,然后将此块中的 IPv6 地址分配给 VPC 中的资源。每个 IPv6 地址都是全局唯一的。

我们将自动从 Amazon 的 IPv6 地址池中为您的 VPC 分配 IPv6 CIDR 块。您不能自行选择范围。

连接到 IPv6 地址时,请确保满足以下条件:

  • 客户端配置为允许通过 IPv6 进行客户端到数据库的通信。

  • 数据库实例使用的 RDS 安全组已正确配置,允许通过 IPv6 进行客户端到数据库的通信。

  • 客户端操作系统堆栈允许 IPv6 地址上有流量,操作系统驱动程序和库已配置为选择正确的默认数据库实例终端节点(IPv4 或 IPv6)。

有关 IPv6 的更多信息,请参阅 Amazon VPC 用户指南中的 IP 寻址

双堆栈模式

当数据库集群可以通过 IPv4 和 IPv6 寻址协议进行通信时,它在双堆栈模式下运行。因此,资源可以通过 IPv4 和/或 IPv6 与数据库集群进行通信。RDS 禁用互联网网关访问私有双堆栈模式数据库实例的 IPv6 端点。RDS 这样做是为了确保您的 IPv6 端点是私有的,并且只能从您的 VPC 内部对其进行访问。

有关说明如何创建您可用于常见 Amazon Aurora 场景的 VPC(具有 IPv4 和 IPv6 地址)的教程,请参阅 教程:创建 VPC 以用于数据库集群(双堆栈模式)

双堆栈模式和数据库子网组

要使用双堆栈模式,请确保与数据库集群关联的数据库子网组中的每个子网都具有与之关联的 IPv6 CIDR 块。您可以创建新的数据库子网组或修改现有数据库子网组来满足此要求。当数据库集群处于双堆栈模式后,客户端可以与它正常连接。确保准确配置客户端安全防火墙和 RDS 数据库实例安全组,以允许通过 IPv6 的流量。要进行连接,客户端使用数据库集群主实例的终端节点。客户端应用程序可以指定连接到数据库时首选哪种协议。在双堆栈模式下,数据库集群会检测客户端的首选网络协议(IPv4 或 IPv6),并使用该协议进行连接。

如果某数据库子网组因子网删除或 CIDR 断开关联而停止支持双堆栈模式,则与该数据库子网组关联的数据库实例存在网络状态不兼容的风险。此外,创建新的双堆栈模式数据库集群时,您不能使用该数据库子网组。

要使用 Amazon Web Services Management Console 确定数据库子网组是否支持双堆栈模式,请查看数据库子网组的详细信息页面上的 Network type(网络类型)。要使用 Amazon CLI 确定数据库子网组是否支持双堆栈模式,请调用 describe-db-subnet-groups 命令并查看输出中的 SupportedNetworkTypes

只读副本被视为独立的数据库实例,并且可以具有与主数据库实例不同的网络类型。如果您更改只读副本的主数据库实例的网络类型,则只读副本不会受到影响。当您还原数据库实例时,可以将其还原为支持的任何网络类型。

使用双堆栈模式数据库实例

创建或修改数据库集群时,您可以指定双堆栈模式,以允许您的资源通过 IPv4 和/或 IPv6 与数据库集群进行通信。

当您使用 Amazon Web Services Management Console 创建或修改数据库实例时,可以在 Network type(网络类型)部分中指定双堆栈模式。下图显示了控制台中的 Network type(网络类型)部分。


							控制台中的 Network type(网络类型)部分,已选中 Dual-stack mode(双堆栈模式)

当您使用 Amazon CLI 创建或修改数据库集群时,请将 --network-type 选项设置为 DUAL 以使用双堆栈模式。当您使用 RDS API 创建或修改数据库集群时,请将 NetworkType 参数设置为 DUAL 以使用双堆栈模式。当您修改数据库实例的网络类型时,可能会出现停机。如果指定的数据库引擎版本或数据库子网组不支持双堆栈模式,则返回 NetworkTypeNotSupported 错误。

有关创建数据库集群的更多信息,请参阅创建 Amazon Aurora 数据库集群。有关修改数据库集群的更多信息,请参阅 修改 Amazon Aurora 数据库集群

要使用控制台确定数据库集群是否处于双堆栈模式,请查看数据库集群Connectivity & security(连接和安全)选项卡上的 Network type(网络类型)。

修改仅限 IPv4 的数据库集群以使用双堆栈模式

您可以修改仅限 IPv4 的数据库集群以使用双堆栈模式。为此,请更改数据库集群的网络类型。修改可能会导致停机。

修改数据库集群以使用双堆栈模式之前,请确保其数据库子网组支持双堆栈模式。如果与数据库集群关联的数据库子网组不支持双堆栈模式,请在修改数据库集群时指定支持该模式的其他数据库子网组。如果在将数据库集群更改为使用双堆栈模式之前,修改数据库集群的数据库子网组,请确保该数据库子网组在更改前后对数据库集群有效。

如果更改后无法连接到数据库集群,请确保已准确配置客户端和数据库安全防火墙和路由表,以允许跨流量到选定网络(IPv4 或 IPv6)上的数据库。您可能还需要修改操作系统参数、库或驱动程序才能使用 IPv6 地址进行连接。

以下限制适用于修改数据库集群以使用双堆栈模式:

  • 双堆栈模式数据库集群不可公开访问。

  • 数据库集群不能具有仅限 IPv6 的端点。

修改仅限 IPv4 的数据库集群以使用双堆栈模式

  1. 修改数据库子网组以支持双堆栈模式,或者创建支持双堆栈模式的数据库子网组:

    1. 将 IPv6 CIDR 块与 VPC 关联。

      有关说明,请参阅 Amazon VPC 用户指南中的将 IPv6 CIDR 块与 VPC 关联

    2. 将 IPv6 CIDR 块附加到数据库子网组中的所有子网。

      有关说明,请参阅 Amazon VPC 用户指南中的将 IPv6 CIDR 块与子网关联

    3. 确认数据库子网组支持双堆栈模式。

      如果您使用 Amazon Web Services Management Console,请选择数据库子网组,并确保 Supported network types(支持的网络类型)值为 Dual, IPv4(双,IPv4)。

      如果您使用 Amazon CLI,请调用 describe-db-subnet-groups 命令,并确保数据库实例的 SupportedNetworkType 值为 Dual, IPv4

  2. 修改与数据库集群关联的安全组以允许与数据库建立 IPv6 连接,或者新建允许 IPv6 连接的安全组。

    有关说明,请参阅 Amazon VPC 用户指南中的安全组规则

  3. 修改数据库集群以支持双堆栈模式。为此,请将 Network type(网络类型)设置为 Dual-stack mode(双堆栈模式)。

    如果您使用控制台,请确保以下设置正确:

    • Network type(网络类型)– Dual-stack mode(双堆栈模式)

      
											控制台中的 Network type(网络类型)部分,已选中 Dual-stack mode(双堆栈模式)
    • DB subnet group(数据库子网组)– 在上一步中配置的数据库子网组

    • Security group(安全组)– 在上一步中配置的安全组

    如果您使用 Amazon CLI,请确保以下设置正确:

    • --network-typedual

    • --db-subnet-group-name – 在上一步中配置的数据库子网组

    • --vpc-security-group-ids – 在上一步中配置的 VPC 安全组

  4. 确认数据库集群支持双堆栈模式。

    如果您使用控制台,请对于数据库集群选择 Configuration(配置)选项卡。在该选项卡上,确保 Network type(网络类型)值为 Dual-stack mode(双堆栈模式)。

    如果您使用 Amazon CLI,请调用 describe-db-clusters 命令,并确保数据库集群的 NetworkType 值为 dual

    写入器数据库实例端点上运行 dig 命令,以标识与其关联的 IPv6 地址。

    dig db-instance-endpoint AAAA

    使用写入器数据库实例端点(而不是 IPv6 地址)连接到数据库集群

双堆栈网络数据库集群的可用性

以下数据库引擎版本支持双堆栈网络数据库集群,但中东(阿联酋)区域除外:

  • Aurora MySQL 版本 3.02.0 及更高版本

    有关 Aurora MySQL 版本的更多信息,请参阅 Aurora MySQL 版本注释

  • Aurora PostgreSQL 版本:

    • 14.3 及更高的 14 版本

    • 13.7 及更高的 13 版本

    有关 Aurora PostgreSQL 版本的更多信息,请参阅 Aurora PostgreSQL 版本注释

双堆栈网络数据库集群的限制

以下限制适用于双堆栈网络数据库集群

  • 数据库集群不能仅使用 IPv6 协议。它们可以仅使用 IPv4,也可以同时使用 IPv4 和 IPv6 协议(双堆栈模式)。

  • Amazon RDS 不支持本机 IPv6 子网。

  • 使用双堆栈模式的数据库集群必须是私有的。它们不可公开访问。

  • 双堆栈模式不支持 db.r3 数据库实例类。

  • 不能将 RDS 代理与双堆栈模式数据库集群一起使用。

对互联网隐藏 VPC 中的数据库集群

一个常见的 Amazon Aurora 场景是具有一个 VPC,其中有一个带有面向公众的 Web 应用程序的 EC2 实例以及一个带有不能公开访问的数据库的数据库集群。例如,您可创建包含公有子网和私有子网的 VPC。可将充当 Web 服务器的 Amazon EC2 实例部署在公有子网中。数据库集群部署在私有子网中。在此部署方案中,只有 Web 服务器才能访问数据库集群。有关此方案的说明,请参阅 VPC 中的数据库集群由同一 VPC 中的 EC2 实例访问

当您在 VPC 中启动数据库集群时,该数据库集群具有用于 VPC 内流量的私有 IP 地址。此私有 IP 地址不可公开访问。您可以使用 Public access(公有访问)选项指定数据库集群除了私有 IP 地址之外是否还具有公有 IP 地址。如果将数据库集群指定为可公开访问,则其 DNS 端点解析为 VPC 内部的私有 IP 地址。它从 VPC 外部解析为公有 IP 地址。对数据库集群的访问最终由它使用的安全组控制。如果分配给数据库集群的安全组不包含允许公有访问的入站规则,则不允许该公有访问。此外,要使数据库集群可公开访问,其数据库子网组中的子网必须具有互联网网关。有关更多信息,请参阅无法连接到 Amazon RDS 数据库实例

您可以通过修改 Public access(公开访问)选项,修改数据库集群来开启或关闭公开可访问性。下图显示了其他连接配置部分中的公开访问选项。要设置此选项,请打开连接部分中的其他连接配置部分。

有关修改数据库实例以设置公开访问选项的信息,请参阅修改数据库集群中的数据库实例

在 VPC 中创建数据库集群

以下过程帮助您在 VPC 中创建数据库集群。要使用原定设置 VPC,可以从步骤 2 开始,并使用已经为您创建的 VPC 和数据库子网组。如果您想创建其他 VPC,则可创建新的 VPC。

注意

如果要让 VPC 中的数据库集群实现公开访问,则必须通过启用 VPC 属性 DNS hostnames(DNS 主机名)和 DNS resolution(DNS 解析)更新 VPC 的 DNS 信息。有关更新 VPC 实例的 DNS 信息的信息,请参阅更新对 VPC 的 DNS 支持

执行以下步骤可在 VPC 中创建数据库实例:

步骤 1:创建 VPC

创建一个 VPC,该 VPC 具有的子网位于至少两个可用区内。您在创建数据库子网组时将使用这些子网。如果您拥有默认 VPC,则系统会在该 Amazon Web Services 区域中的每个可用区中自动为您创建子网。

有关更多信息,请参阅创建包含公有子网和私有子网的 VPC,或参阅《Amazon VPC 用户指南》中的创建 VPC

步骤 2:创建数据库子网组

数据库子网组是您为 VPC 创建、然后为数据库集群指定的子网(通常为私有子网)的集合。数据库子网组可让您在使用 Amazon CLI 或 RDS API 创建数据库集群时指定特定的 VPC。如果您使用控制台,您就只能选择要使用的 VPC 和子网。每个数据库子网组必须至少包含给定 Amazon Web Services 区域中至少两个可用区的一个子网。作为最佳实践,每个数据库子网组应至少包含 Amazon Web Services 区域中每个可用区的一个子网。

为使数据库集群可公开访问,数据库子网组中的子网必须具有互联网网关。有关子网的互联网网关的更多信息,请参阅《Amazon VPC 用户指南》中的使用互联网网关将子网连接到互联网

在 VPC 中创建数据库集群时,您可以选择数据库子网组。Amazon Aurora 会选择要与数据库集群关联的子网和该子网中的 IP 地址。如果不存在数据库子网组,Amazon Aurora 会在您创建数据库集群时创建原定设置子网组。Amazon Aurora 使用该 IP 地址创建弹性网络接口并将其关联到您的数据库集群。数据库集群使用包含该子网的可用区。

在此步骤中,您创建一个数据库子网组,然后添加为 VPC 创建的子网。

创建数据库子网组

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择子网组

  3. 选择创建数据库子网组

  4. 对于名称,键入您的数据库子网组的名称。

  5. 对于描述,键入您的数据库子网组的描述。

  6. 对于 VPC,选择原定设置 VPC 或您创建的 VPC。

  7. 添加子网部分中,从可用区中选择包含子网的可用区,然后从子网中选择子网。

    
							“创建数据库子网组”按钮
  8. 选择 Create (创建)

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

步骤 3:创建 VPC 安全组

创建数据库集群前,您可以创建要与数据库集群相关联的 VPC 安全组。如果您不创建 VPC 安全组,则可以在创建数据库集群时使用原定设置安全组。有关如何为数据库集群创建安全组的说明,请参阅为私有数据库集群创建 VPC 安全组,或参阅《Amazon VPC 用户指南》中的使用安全组控制到资源的流量

步骤 4:在 VPC 中创建数据库实例

在此步骤中,创建一个数据库集群,并使用在之前的步骤中创建的 VPC 名称、数据库子网组和 VPC 安全组。

注意

如果要让 VPC 中的数据库集群实现公开访问,必须启用 VPC 属性 DNS hostnames(DNS 主机名)和 DNS resolution(DNS 解析)。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 的 DNS 属性

有关如何创建数据库集群的详细信息,请参阅创建 Amazon Aurora 数据库集群

Connectivity(连接)部分出现提示时,输入 VPC 名称、数据库子网组和 VPC 安全组。

注意

Aurora 数据库集群当前不支持更新 VPC。