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

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

VPC 中的文档数据库集群

您的亚马逊 DocumentDB 集群位于虚拟私有云 (VPC) 中。VPC 是一种在逻辑上与中的其他虚拟网络隔离的虚拟网络 Amazon Web Services 云。借助 Amazon VPC,您可以在 VPC 中启动 Amazon 资源,例如亚马逊文档数据库集群或亚马逊 EC2 实例。VPC 可以是您的账户附带的默认 VPC,也可以是您创建的 VPC。所有这些 VPCs 都与您的 Amazon 账户相关联。

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

有关涉及 VPC 内和 VPC 外部的 Amazon DocumentDB 集群的场景,请参阅。访问 VPC 中的亚马逊文档数据库集群

在 VPC 中使用集群

以下是在 VPC 中使用集群的一些技巧:

  • 您的 VPC 必须至少有两个子网。这些子网必须位于您要部署集群 Amazon Web Services 区域 的两个不同可用区中。子网是 VPC 的 IP 地址范围中的一部分,您可以指定该范围,也可以根据自己的安全和运营需求使用该地址对集群进行分组。

  • 如果您希望 VPC 中的集群可以公开访问,请务必启用 VPC 属性和DNS hostnamesDNS resolution

  • 您的 VPC 必须拥有您创建的子网组。您可以通过指定您创建的子网来创建子网组。Amazon DocumentDB 在该子网组中选择一个子网和一个 IP 地址,以便与集群中的主实例关联。主实例使用包含子网的可用区。

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

    有关更多信息,请参阅 访问 VPC 中的亚马逊文档数据库集群

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

  • VPC 的instance tenancy属性可以是defaultdedicated。所有默认 VPC 的instance tenancy属性 VPCs 都设置为默认,默认 VPC 可以支持任何实例类别。

    如果您选择将集群置于instance tenancy属性设置为的专用 VPC 中dedicated,则集群的实例类必须是已批准的 Amazon EC2 专用实例类型之一。例如,r5.large EC2 专用实例对应于db.r5.large实例类。有关 VPC 中实例租赁的信息,请参阅亚马逊弹性计算云用户指南中的亚马逊 EC2 例。

    有关可用在专用实例中的实例类型的更多信息,请参阅 Amazon EC2 定价页面上的亚马逊 EC2 专用实例

    注意

    当您将集群的instance tenancy属性设置dedicated为时,它并不能保证该集群将在专用主机上运行。

使用子网组

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

每个子网组应在给定 Amazon Web Services 区域区域中的至少两个可用区中拥有子网。在 VPC 中创建集群时,您需要为其选择子网组。Amazon DocumentDB 从子网组中选择一个子网和该子网内的 IP 地址,以与集群中的主实例关联。数据库使用包含子网的可用区。DocumentDB 总是从具有可用 IP 地址空间的子网中分配 IP 地址。

子网组中的子网可以是公有或私有的,具体取决于您为其网络访问控制列表(网络 ACLs)和路由表设置的配置。要使集群可公开访问,其子网组中的所有子网都必须是公有的。如果与可公开访问的集群关联的子网从公有变为私有子网,则可能会影响集群的可用性。

要创建支持双栈模式的子网组,请确保添加到子网组的每个子网都有一个与之关联的 Internet 协议版本 6 (IPv6) CIDR 块。有关更多信息,请参阅亚马逊 DocumentDB IP 地址Amazon Virtual Private Cloud 用户指南》中对您的 VPC 的IPv6 支持

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

注意

对于您在 VPC 中运行的每个集群,请确保在子网组的每个子网中至少保留一个地址,以供 Amazon DocumentDB 用于恢复操作。

共享子网

您可以在共享 VPC 中创建集群。

使用共享时要记住的一些注意事项 VPCs:

  • 您可以将集群从共享 VPC 子网移动到非共享 VPC 子网,反之亦然。

  • 共享 VPC 的参与者必须在 VPC 中创建安全组才能创建集群。

  • 共享 VPC 中的所有者和参与者可以通过使用 DocumentDB 查询访问数据库。但是,只有资源的创建者才能对该资源进行任何 API 调用。

亚马逊 DocumentDB IP 地址

IP 地址使 VPC 中的资源能够相互通信以及与 Internet 上的资源进行通信。Amazon DocumentDB 同时支持 IPv4 和 IPv6 寻址协议。默认情况下,亚马逊 DocumentDB 和亚马逊 VPC 使用 IPv4 寻址协议。您无法关闭这种行为。创建 VPC 时,请务必指定 IPv4 CIDR 块(私有 IPv4 地址范围)。您可以选择为您的 VPC 和子网分配 IPv6 CIDR 块,并将该区块中的 IPv6 地址分配给子网中的集群。

注意

只有亚马逊 DocumentDB 版本 4.0 和 5.0 支持双栈模式(IPv6 寻址)。

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

IPv4 地址

创建 VPC 时,必须以 CIDR 块的形式为 VPC 指定 IPv4 地址范围,例如10.0.0.0/16。子网组定义了集群可以在此 CIDR 块中使用的 IP 地址范围。这些 IP 地址可以是私有地址,也可以是公有地址。

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

公有 IP IPv4 地址是可以从互联网访问的地址。您的文档数据库集群不允许使用公有 IP 地址。任何公有 IP 地址都应由 Internet 网关和公 EC2 有子网解析。

要了解如何创建仅包含可用于常见的 Amazon DocumentDB 场景的私有 IPv4 地址的 VPC,请参阅。创建 IPv4仅供文档数据库集群使用的 VPC

IPv6 地址

您可以选择将 IPv6 CIDR 块与您的 VPC 和子网关联,并将该区块中的 IPv6 地址分配给您的 VPC 中的资源。每个 IPv6 地址都是全球唯一的。

您的 VPC 的 IPv6 CIDR 块是从亚马逊 IPv6 的地址池中自动分配的。您不能自行选择范围。

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

  • 对客户端进行了配置,以便允许客户端到数据库 IPv6 的流量。

  • 集群使用的 DocumentDB 安全组配置正确,因此允许客户端到数据库的流 IPv6 量。

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

有关更多信息 IPv6,请参阅《Amazon Virtual Private Cloud 用户指南》中的 IP 地址

双堆栈模式

当集群可以通过 IPv4 和 IPv6 寻址协议进行通信时,它将在双堆栈模式下运行。因此,资源可以通过 IPv4、 IPv6或两者兼而有之地与群集通信。DocumentDB 禁止私有双堆栈模式集群的 IPv6 终端节点访问 Internet Gateway。DocumentDB 这样做是为了确保您的 IPv6 终端节点是私有的,并且只能从您的 VPC 内部进行访问。

双栈模式和子网组

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

如果子网组因子网删除或 CIDR 解除关联而停止支持双栈模式,则与该子网组关联的集群可能会出现网络状态不兼容的风险。此外,在创建新的双堆栈模式集群时,您不能使用子网组。

要使用确定子网组是否支持双栈模式 Amazon Web Services 管理控制台,请在子网组的详细信息页面上查看网络类型。要使用确定子网组是否支持双栈模式 Amazon CLI,请运行describe-db-subnet-groups命令并在输出SupportedNetworkTypes中查看。

只读副本被视为独立集群,其网络类型可以与主群集不同。如果您更改只读副本的主集群的网络类型,则只读副本不会受到影响。恢复集群时,可以将其恢复到任何支持的网络类型。

使用双堆栈模式集群

创建或修改集群时,您可以指定双堆栈模式,以允许您的资源通过 IPv4 IPv6、或两者兼而有之与群集通信。

使用创建或修改集群时,可以在网络类型部分指定双堆栈模式。 Amazon Web Services 管理控制台 下图显示了控制台中的 “网络类型” 部分:

控制台中的网络类型部分,已选中双堆栈模式。

使用创建或修改集群时,请将--network-type选项设置DUAL为使用双堆栈模式。 Amazon CLI 当您使用 DocumentDB API 创建或修改集群时,请将NetworkType参数设置为DUAL以使用双堆栈模式。如果指定的 DocumentDB 引擎版本或子网组不支持双栈模式,则NetworkTypeNotSupported会返回错误。

有关创建集群的更多信息,请参阅创建 Amazon DocumentDB 集群。有关修改集群的更多信息,请参阅修改 Amazon DocumentDB 集群

要使用控制台确定集群是否处于双堆栈模式,请在集群的连接和安全选项卡上查看网络类型

修改 IPv4仅限集群以使用双堆栈模式

您可以修改 IPv4仅限集群以使用双堆栈模式。为此,请更改群集的网络类型。

建议您在维护时段内更改 Amazon DocumentDB 集群的网络类型。您可以使用modify-db-cluster命令手动设置网络类型。

在修改群集以使用双栈模式之前,请确保其子网组支持双堆栈模式。如果与集群关联的子网组不支持双栈模式,请在修改集群时指定支持该模式的其他子网组。修改集群的子网组可能会导致停机。

如果在将群集更改为使用双堆栈模式之前修改了群集的子网组,请确保该子网组在更改前后的群集均有效。

我们建议您在仅将NetworkType参数设置为的情况下运行ModifyDBCluster调用,DUAL以将网络更改为双栈模式。在同一 API 调用NetworkType中同时添加其他参数可能会导致停机。要修改多个参数,请确保网络类型修改已成功完成,然后使用其他参数发送另一个 ModifyDBCluster 请求。

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

将 IPv4仅限集群修改为使用双堆栈模式

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

    1. 将 IPv6 CIDR 块与您的 VPC 关联。

      有关说明,请参阅 Amazon VPC 用户指南中的在您的 VPC 中添加或移除 CIDR 块

    2. 将 IPv6 CIDR 块连接到子网组中的所有子网。

      有关说明,请参阅 Amazon Virtual Private IPv6 Cloud 用户指南中的向子网添加或删除 CIDR 块

    3. 确认子网组支持双栈模式。

      如果您使用的是 Amazon Web Services 管理控制台,请选择子网组,并确保 “支持的网络类型” 值为 Dual

      如果您使用的是 Amazon CLI,请运行describe-db-subnet-groups命令,并确保集群的SupportedNetworkType值为Dual

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

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

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

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

    • 网络类型-双栈模式

      控制台中的网络类型部分,已选中双堆栈模式。
    • 子网组-您在上一步中配置的子网组

    • 安全组-您在上一步中配置的安全性

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

    • --network-typedual

    • --db-subnet-group-name— 您在上一步中配置的子网组

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

    例如:

    aws docdb modify-db-cluster --db-cluster-identifier <cluster-name> --network-type "DUAL"
  4. 确认集群支持双堆栈模式。

    如果您使用的是控制台,请为集群选择连接和安全选项卡,并确保网络类型值为双栈模式

    如果您使用的是 Amazon CLI,请运行describe-db-cluster命令,并确保集群的NetworkType值为dual

    在集群终端节点上运行dig命令以识别与其关联 IPv6 的地址:

    dig <db-cluster-endpoint> AAAA

    使用集群终端节点(而不是 IPv6 地址)连接到集群。

双栈模式地区和版本可用性

功能可用性和支持因人而异 Amazon Web Services 区域。

区域支持

以下列表列 Amazon Web Services 区域 出了支持双栈模式的:

  • 美国东部(俄亥俄州)

  • 美国东部(弗吉尼亚州北部)

  • 美国西部(俄勒冈州)

  • 非洲(开普敦)

  • 南美洲(圣保罗)

  • 亚太地区(香港)

  • 亚太地区(海得拉巴)

  • 亚太地区(马来西亚)

  • 亚太地区(孟买)

  • 亚太地区(大阪)

  • 亚太地区(首尔)

  • 亚太地区(新加坡)

  • 亚太地区(悉尼)

  • 亚太地区(泰国)

  • 亚太地区(东京)

  • 加拿大(中部)

  • 中国(北京)

  • 中国(宁夏)

  • 欧洲地区(法兰克福)

  • 欧洲地区(爱尔兰)

  • 欧洲地区(伦敦)

  • 欧洲地区(米兰)

  • 欧洲地区(巴黎)

  • 欧洲地区(西班牙)

  • 欧洲地区(斯德哥尔摩)

  • 以色列(特拉维夫)

  • 墨西哥(中部)

  • 中东(阿联酋)

  • Amazon GovCloud (美国西部)

  • Amazon GovCloud (美国东部)

版本支持

亚马逊 DocumentDB 版本 4.0 和 5.0 支持双栈模式。如果您无法在这两个版本中访问双堆栈模式,请确保您的集群上运行的是最新的引擎补丁版本。

双栈网络集群的限制

以下限制适用于双栈网络集群:

  • 集群不能只使用该 IPv6 协议。它们可以 IPv4 专门使用,也可以使用 IPv4 和 IPv6 协议(双栈模式)。

  • 亚马逊 DocumentDB 不支持原生 IPv6 子网。

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

在 VPC 中创建集群

以下过程可帮助您在 VPC 中创建集群。要使用默认 VPC,您可以从步骤 2 开始,使用已经为您创建的 VPC 和子网组。如果需要 VPCs,您还可以创建其他内容。

注意

如果您希望 VPC 中的集群可以公开访问,则必须通过启用 VPC 属DNS hostnames性和来更新 VPC 的 DNS 信息DNS resolution。有关更新 VPC 实例的 DNS 的信息,请参阅 Amazon Virtual Private Cloud 用户指南中的查看和更新 VPC 的 DNS 属性

按照以下步骤在 VPC 中创建集群:

第 1 步:创建 VPC

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

有关更多信息创建 IPv4仅供文档数据库集群使用的 VPC,请参阅或参阅 Amazon Virtual Private Cloud 用户指南中的创建 VPC。

第 2 步:创建一个子网组

子网组是您为 VPC 创建的子网(通常是私有子网)的集合,然后为集群指定这些子网。子网组允许您在使用 Amazon CLI 或 DocumentDB API 创建集群时指定特定 VPC。如果您使用 Amazon Web Services 管理控制台,则只需选择要使用的 VPC 和子网即可。每个子网组在中的至少两个可用区中必须至少有一个子网 Amazon Web Services 区域。作为最佳实践,每个子网组中的每个可用区都应至少有一个子网 Amazon Web Services 区域。

要使集群可公开访问,子网组中的子网必须具有 Internet 网关。有关子网互联网网关的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南中的使用互联网网关为 VPC 启用互联网访问

注意

本地区域的子网组只能有一个子网。

在 VPC 中创建集群时,可以选择子网组。Amazon DocumentDB 会选择一个子网和一个 IP 地址(在该子网内)与您的集群关联。如果不存在子网组,Amazon DocumentDB 会在您创建集群时创建一个默认子网组。DocumentDB 使用该 IP 地址创建弹性网络接口,并将其关联到您的集群。集群使用包含子网的可用区。

在此步骤中,您将创建一个子网组并添加您为 VPC 创建的子网。

创建子网组

  1. 登录 Amazon Web Services 管理控制台,然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com

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

  3. 选择创建

  4. 名称中,键入子网组的名称。

  5. 描述中,键入子网组的描述。

  6. 添加子网部分中,对于 VPC,选择默认 VPC 或您创建的 VPC。然后选择包含可用区子网的可用区,然后从子网中选择子网。

  7. 选择创建。

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

步骤 3:创建 VPC 安全组

在创建集群之前,请创建要与其关联的 VPC 安全组。如果您未创建 VPC 安全组,则可以在创建集群时使用默认安全组。有关如何为您的集群创建安全组的说明,请参阅创建 IPv4仅供文档数据库集群使用的 VPC或参阅 Amazon Virtual Private Cloud 用户指南中的使用安全组控制 Amazon 资源流量

步骤 4:在 VPC 中创建集群

在此步骤中,您将使用在前面步骤中创建的 VPC 名称、子网组和 VPC 安全组创建集群。

注意

如果您希望 VPC 中的集群可以公开访问,则必须启用 VPC 属性和DNS hostnamesDNS resolution。有关更多信息,请参阅 Amazon Virtual Private Cloud 用户指南中的查看和更新 VPC 的 DNS 属性

有关如何创建集群的详细信息,请参阅创建 Amazon DocumentDB 集群

在 “连接” 部分出现提示时,输入 VPC 名称、子网组和 VPC 安全组。

注意

文档DBDocument数据库集群目前 VPCs 不支持更新。