建立 Amazon DocumentDB 子網路群組 - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立 Amazon DocumentDB 子網路群組

建立 Amazon DocumentDB 叢集時,您必須在該 Amazon VPC 內選擇一個 Amazon VPC 和對應的子網路群組來啟動叢集。子網路會決定您要用來啟動執行個體的可用區域內的可用區域和 IP 範圍。

子網路群組是一組具名的子網路 (或 AZ),可讓您指定要用於啟動 Amazon DocumentDB 執行個體的可用區域。例如,在具有三個執行個體的叢集中,建議每個執行個體都在不同的 AZ 中佈建,這樣會針對高可用性進行最佳化。因此,如果單一 AZ 發生故障,只會影響單一執行個體。

目前,Amazon DocumentDB 執行個體最多可佈建在三個 AZ 中。即使子網路群組有三個以上的子網路,您也只能使用其中三個子網路來建立 Amazon DocumentDB 叢集。因此,建議您在建立子網路群組時,只選擇要部署執行個體的三個子網路。

例如:創建一個群集,Amazon DocumentDB 選擇 AZ {1A,1B 和 1C}。如果您嘗試在 AZ 建立執行個體 {1D} API 呼叫將會失敗。不過,如果您選擇建立執行個體,而不指定特定的可用區域,Amazon DocumentDB 會代表您選擇可用區域。Amazon DocumentDB 使用演算法來平衡 AZ 執行個體的執行個體,以協助您達到高可用性。如果佈建了三個執行個體,預設會在三個 AZ 之間佈建這些執行個體,而且不會在單一可用區中全部佈建。

最佳實務

  • 除非有特定的原因,否則一律使用三個子網路建立子網路群組。這可確保具有三個或更多執行個體的叢集能夠達到更高的可用性,因為執行個體將佈建在三個 AZ 之間。

  • 一律將執行個體分散在多個可用區域以達到高可用性。請勿將叢集的所有執行個體放置在單一可用區。

  • 由於隨時都會發生容錯移轉事件,您不應假設主執行個體或複本執行個體會在特定的可用區域。

如何建立子網路群組

您可以使用AWS Management Console或AWS CLI來建立 Amazon DocumentDB 子網路群組:

Using the AWS Management Console

使用下列步驟來建立 Amazon DocumentDB 網路群組。

建立 Amazon DocumentDB 子網路群組
  1. 登入AWS Management Console,並前往 https://console.aws.amazon.com/docdb 開 Amazon DocumentDB 主控台。

  2. 在導覽窗格中,選擇 Subnet groups (子網路群組),然後選擇 Create (建立)

    提示

    如果畫面左側沒有出現導覽窗格,請選擇頁面左上角的功能表圖示 (Hamburger menu icon with three horizontal lines.)。

  3. Create subnet group (建立子網路群組) 頁面上:

    1. Subnet group details (子網路群組詳細資訊) 區段中:

      1. 名稱。

      2. Description (描述):輸入子網路群組的描述。

    2. Add subnets (新增子網路) 區段中:

      1. VPC — 在清單中,選擇此子網路群組的 VPC。

      2. 執行下列任意一項:

        • 若要將所有子網路包含在所選的 VPC 中,請選擇 Add all the subnets related to this VPC (新增與此 VPC 相關的所有子網路)

        • 若要指定此子網路群組的子網路,請在想要包含子網路的每個可用區域中執行下列動作。您必須至少包含兩個可用區域。

          1. 可用區域 — 在清單中,選擇可用區域。

          2. 子網路 — 在清單中,從此子網路群組選擇所選可用區域的子網路。

          3. 選擇 Add subnet (新增子網路)

  4. 選擇 建立 。建立子網路群組時,其會與您其他的子網路群組一起列出。

    螢幕擷取畫面:顯示子網路群組的詳細資訊。
Using the AWS CLI

在能夠使用 AWS CLI 建立子網路群組之前,您必須先判斷哪些子網路可用。執行下列 AWS 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

  • -標籤-可選。要連接到此子網路群組的標籤 (金鑰值對) 清單。

以下程式碼會建立子網路群組 sample-subnet-group,其含有三個子網路 subnet-4e26d263subnet-afc329f4subnet-b3806e8f

若為 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" } }