创建 Amazon DocumentDB 子网组 - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建 Amazon DocumentDB 子网组

创建 Amazon DocumentDB 集群时,您必须选择一个 Amazon VPC 和该 Amazon VPC 中的对应子网组来启动您的集群。子网确定可用区以及该可用区内要用于启动实例的 IP 范围。

子网组是可让您指定要用于启动 Amazon DocumentDB 实例的子网(或可用区)的命名集。例如,在包含三个实例的集群中,建议在单独的可用区中预置各个实例——这样做优化高可用性。因此,如果单个可用区出现故障,它只会影响单个实例。

目前, Amazon DocumentDB 实例可在多达三个可用区中预置。即使子网组拥有三个以上的子网,您也只能使用这些子网中的三个来创建 Amazon DocumentDB 集群。因此,在创建子网组时,建议仅选择要将实例部署到的三个子网。

例如:创建了一个集群,Amazon DocumentDB 选择可用区 {1A、1B 和 1C}。如果您尝试在可用区 {1D} 中创建实例,API 调用将失败。但是,如果您选择创建实例而不指定特定可用区,则 Amazon DocumentDB 将代表您选择可用区。Amazon DocumentDB 使用一种算法在可用区之间对实例进行负载均衡,以帮助您实现高可用性。如果预置了三个实例,则在默认情况下,将在三个可用区中预置它们,而不会在单一可用区中预置。

最佳实践

  • 除非您有特殊原因,否则请始终创建包含三个子网的子网组。这将确保包含三个或更多实例的集群能够实现更高的可用性,因为将在三个可用区中预置实例。

  • 始终将实例分散在多个可用区中以实现高可用性。切勿将集群的所有实例放在单个可用区中。

  • 由于故障转移事件随时可能发生,您不应假定主实例或副本实例始终位于特定可用区中。

如何创建子网组

您可以使用 Amazon Web Services Management Console 或 Amazon CLI 创建 Amazon DocumentDB 子网组。

Using the Amazon Web Services Management Console

使用以下步骤创建 Amazon DocumentDB 子网组。

创建 Amazon DocumentDB 子网组
  1. 登录到 Amazon Web Services Management Console 并打开 Amazon DocumentDB 控制台,网址:https://console.aws.amazon.com/docdb

  2. 在导航窗格中,选择 Subnet groups (子网组),然后选择 Create (创建)

    提示

    如果您在屏幕左侧没有看到导航窗格,请在页面左上角选择菜单图标 ()。

  3. 创建子网组页面中:

    1. 子网组详细信息部分中:

      1. 名称—为子网组输入有意义的名称。

      2. 描述—输入子网组描述。

    2. 添加子网部分中:

      1. VPC—在列表中,为该子网组选择一个 VPC。

      2. 请执行下列操作之一:

        • 要包括所选的 VPC 中的所有子网,请选择添加与此 VPC 相关的所有子网

        • 要为该子网组指定子网,请为要包含子网的每个可用区执行以下操作。您必须包含至少两个可用区。

          1. Availability zone (可用区)—在列表中,选择一个可用区。

          2. Subnet (子网)—在列表中,从该子网组所选可用区中选择一个子网。

          3. 选择 Add subnet (添加子网)

  4. 选择 Create(创建)。创建子网组后,它将与其他子网组一起列出。

    屏幕截图:显示子网组详细信息。
Using the Amazon CLI

在使用 Amazon CLI 创建子网组之前,您必须先确定可用的子网。运行以下 Amazon CLI 操作以列出可用区及其子网。

参数:

  • --db-subnet-group—可选。如果指定特定的子网组,将列出该组的可用区和子网。如果省略该参数,将列出所有子网组的可用区和子网。如果指定 default 子网组,将列出 VPC 的所有子网。

对于 Linux、macOS 或 Unix:

aws docdb describe-db-subnet-groups \ --db-subnet-group-name default \ --query 'DBSubnetGroups[*].[DBSubnetGroupName,Subnets[*].[SubnetAvailabilityZone.Name,SubnetIdentifier]]'

对于 Windows:

aws docdb describe-db-subnet-groups ^ --db-subnet-group-name default ^ --query 'DBSubnetGroups[*].[DBSubnetGroupName,Subnets[*].[SubnetAvailabilityZone.Name,SubnetIdentifier]]'

此操作的输出将类似于下文(JSON 格式)。

[ [ "default", [ [ "us-east-1a", "subnet-4e26d263" ], [ "us-east-1c", "subnet-afc329f4" ], [ "us-east-1e", "subnet-b3806e8f" ], [ "us-east-1d", "subnet-53ab3636" ], [ "us-east-1b", "subnet-991cb8d0" ], [ "us-east-1f", "subnet-29ab1025" ] ] ] ]

通过使用上一操作中的输出,您可以创建新的子网组。新子网组必须包含至少两个可用区中的子网。

参数:
  • --db-subnet-group-name – 必填项。该子网组的名称。

  • --db-subnet-group-description – 必填项。该子网组的描述。

  • --subnet-ids – 必填项。要包含在该子网组中的子网的列表。示例:subnet-53ab3636

  • --标签—可选。要附加到该子网组的标签(键/值对)的列表。

以下代码创建具有三个子网(subnet-4e26d263subnet-afc329f4subnet-b3806e8f)的子网组 sample-subnet-group

对于 Linux、macOS 或 Unix:

aws docdb create-db-subnet-group \ --db-subnet-group-name sample-subnet-group \ --db-subnet-group-description "A sample subnet group" \ --subnet-ids subnet-4e26d263 subnet-afc329f4 subnet-b3806e8f \ --tags Key=tag1,Value=One Key=tag2,Value=2

对于 Windows:

aws docdb create-db-subnet-group ^ --db-subnet-group-name sample-subnet-group ^ --db-subnet-group-description "A sample subnet group" ^ --subnet-ids subnet-4e26d263 subnet-afc329f4 subnet-b3806e8f ^ --tags Key=tag1,Value=One Key=tag2,Value=2

此操作的输出将类似于下文(JSON 格式)。

{ "DBSubnetGroup": { "DBSubnetGroupDescription": "A sample subnet group", "DBSubnetGroupName": "sample-subnet-group", "Subnets": [ { "SubnetAvailabilityZone": { "Name": "us-east-1a" }, "SubnetIdentifier": "subnet-4e26d263", "SubnetStatus": "Active" }, { "SubnetAvailabilityZone": { "Name": "us-east-1c" }, "SubnetIdentifier": "subnet-afc329f4", "SubnetStatus": "Active" }, { "SubnetAvailabilityZone": { "Name": "us-east-1e" }, "SubnetIdentifier": "subnet-b3806e8f", "SubnetStatus": "Active" } ], "VpcId": "vpc-91280df6", "DBSubnetGroupArn": "arn:aws:rds:us-east-1:123SAMPLE012:subgrp:sample-subnet-group", "SubnetGroupStatus": "Complete" } }