创建 Amazon DocumentDB 子网组

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

子网组是指定的子网集(或AZS),可以指定要用于启动的可用性区域 Amazon DocumentDB 实例。例如,在具有三个实例的群集中,建议每个实例都在单独的AZS中进行调配—这样做可以优化高可用性。因此,如果单个AZ失败,它将仅影响单个实例。

目前, Amazon DocumentDB 可以在最多三个AZS中调配实例。即使子网组拥有三个以上的子网,您也只能使用这三个子网来创建 Amazon DocumentDB集群。因此,建议您在创建子网组时选择要部署实例的三个子网。

例如:。创建群集并且 Amazon DocumentDB 选择AZS{1a、1b和1c}。如果您尝试在可用区 {1D} 中创建实例,API 调用将失败。但是,如果您选择创建一个实例,则不指定特定AZ,然后 Amazon DocumentDB 将代表您选择阿斯利康。 Amazon DocumentDB 使用算法在AZS中加载实例,帮助您实现高可用性。如果调配三个实例,默认情况下,它们将在三个AZS中进行调配,并且不会在单个AZ中进行调配。

最佳实践

  • Unless you have a specific reason, always create a subnet group with three subnets. This ensures that clusters with three or more instances will be able to achieve higher availability as instances will be provisioned across three AZs.
  • Always spread instances across multiple AZs to achieve high availability. Never place all instances for a cluster in a single AZ.
  • Because failover events can happen at any time, you should not assume that a primary instance or replica instances will always be in a particular AZ.

如何创建子网组

您可以使用 AWS 管理控制台 或 AWS CLI 创建 Amazon DocumentDB 子网组。

使用 AWS 管理控制台

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

创建 Amazon DocumentDB 子网组

  1. 通过以下网址登录 AWS 管理控制台并打开 Amazon DocumentDB 控制台:https://console.aws.amazon.com/docdb

  2. 在导航窗格中,选择 子网组,然后选择 创建.

    提示

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

  3. 创建子网组 页面:

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

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

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

    2. 添加子网 部分:

      1. VPC—在列表中,选择此子网组的VPC。

      2. 执行以下任一操作

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

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

          1. 可用区域—在列表中,选择可用区域。

          2. 子网—在列表中,从所选的子网组可用性区域选择子网。

          3. 选择 添加子网.

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

    ![

    1. 屏幕截图 显示子网组的详细信息。
    2. ](/projects/DocumentDB-20201111-zh/563605d91889288dd4e25e60b209cec3.png)

使用 AWS CLI

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

Parameters

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

对于 Linux、macOS 或 Unix:

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

对于 Windows:

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

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

  1. [
  2. [
  3. "default",
  4. [
  5. [
  6. "us-east-1a",
  7. "subnet-4e26d263"
  8. ],
  9. [
  10. "us-east-1c",
  11. "subnet-afc329f4"
  12. ],
  13. [
  14. "us-east-1e",
  15. "subnet-b3806e8f"
  16. ],
  17. [
  18. "us-east-1d",
  19. "subnet-53ab3636"
  20. ],
  21. [
  22. "us-east-1b",
  23. "subnet-991cb8d0"
  24. ],
  25. [
  26. "us-east-1f",
  27. "subnet-29ab1025"
  28. ]
  29. ]
  30. ]
  31. ]

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

Parameters

  • --db-subnet-group-name—要求。该子网组的名称。

  • --db-subnet-group-description—要求。该子网组的描述。

  • --subnet-ids—要求。要包含在该子网组中的子网的列表。示例:subnet-53ab3636.

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

以下代码创建子网组 sample-subnet-group 三个子网 subnet-4e26d263subnet-afc329f4,和 subnet-b3806e8f.

对于 Linux、macOS 或 Unix:

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

对于 Windows:

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

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

  1. {
  2. "DBSubnetGroup": {
  3. "DBSubnetGroupDescription": "A sample subnet group",
  4. "DBSubnetGroupName": "sample-subnet-group",
  5. "Subnets": [
  6. {
  7. "SubnetAvailabilityZone": {
  8. "Name": "us-east-1a"
  9. },
  10. "SubnetIdentifier": "subnet-4e26d263",
  11. "SubnetStatus": "Active"
  12. },
  13. {
  14. "SubnetAvailabilityZone": {
  15. "Name": "us-east-1c"
  16. },
  17. "SubnetIdentifier": "subnet-afc329f4",
  18. "SubnetStatus": "Active"
  19. },
  20. {
  21. "SubnetAvailabilityZone": {
  22. "Name": "us-east-1e"
  23. },
  24. "SubnetIdentifier": "subnet-b3806e8f",
  25. "SubnetStatus": "Active"
  26. }
  27. ],
  28. "VpcId": "vpc-91280df6",
  29. "DBSubnetGroupArn": "arn:aws:rds:us-east-1:123SAMPLE012:subgrp:sample-subnet-group",
  30. "SubnetGroupStatus": "Complete"
  31. }
  32. }