

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

# 子网和子网组
<a name="subnetgroups"></a>

*子网组*是您可为在 Amazon Virtual Private Cloud（VPC）环境中运行的集群指定的子网（通常为私有子网）集合。

在 Amazon VPC 中创建集群时，请指定一个子网组或使用提供的默认子网组。MemoryDB 使用该子网组选择与节点关联的子网和子网中的 IP 地址。

本部分介绍如何创建和利用子网以及子网组来管理对 MemoryDB 资源的访问。

有关 Amazon VPC 环境中子网组使用情况的更多信息，请参阅 [步骤 3：授予对集群的访问权限](getting-started.md#getting-started.authorizeaccess)。


**支持的 MemoryDB 可用区 ID**  

| 区域名称/区域 | 支持的 AZ ID | 
| --- | --- | 
| 美国东部（俄亥俄州）区域 `us-east-2` | `use2-az1, use2-az2, use2-az3` | 
| 美国东部（弗吉尼亚州北部）区域 `us-east-1` | `use1-az1, use1-az2, use1-az4, use1-az5, use1-az6` | 
| 美国西部（北加利福尼亚）区域 `us-west-1` | `usw1-az1, usw1-az2, usw1-az3` | 
| 美国西部（俄勒冈州）区域 `us-west-2` | `usw2-az1, usw2-az2, usw2-az3, usw2-az4` | 
| 加拿大（中部）区域 `ca-central-1` | `cac1-az1, cac1-az2, cac1-az4` | 
| 亚太地区（香港）区域 `ap-east-1` | `ape1-az1, ape1-az2, ape1-az3` | 
| 亚太地区（孟买）区域 `ap-south-1` | `aps1-az1, aps1-az2, aps1-az3` | 
| Asia Pacific（Tokyo）Region `ap-northeast-1` | `apne1-az1, apne1-az2, apne1-az4` | 
| 亚太地区（首尔）区域 `ap-northeast-2` | `apne2-az1, apne2-az2, apne2-az3` | 
| 亚太地区（新加坡）区域 `ap-southeast-1` | `apse1-az1, apse1-az2, apse1-az3` | 
| 亚太地区（悉尼）区域 `ap-southeast-2` | apse2-az1, apse2-az2, apse2-az3  | 
| 欧洲地区（法兰克福）区域 `eu-central-1` | `euc1-az1, euc1-az2, euc1-az3` | 
| 欧洲地区（爱尔兰）区域 `eu-west-1` | `euw1-az1, euw1-az2, euw1-az3` | 
| 欧洲地区（伦敦）区域 `eu-west-2` | `euw2-az1, euw2-az2, euw2-az3` | 
| 欧洲地区（巴黎）区域 `eu-west-3` | `euw3-az1, euw3-az2, euw3-az3` | 
| 欧洲地区（斯德哥尔摩）区域 `eu-north-1` | `eun1-az1, eun1-az2, eun1-az3 ` | 
| 欧洲地区（米兰） `eu-south-1` | `eus1-az1, eus1-az2, eus1-az3 ` | 
| 南美洲（圣保罗）区域 `sa-east-1` | `sae1-az1, sae1-az2, sae1-az3` | 
| 中国（北京）区域 `cn-north-1` | `cnn1-az1, cnn1-az2` | 
| 中国（宁夏）区域 `cn-northwest-1` | `cnw1-az1, cnw1-az2, cnw1-az3` | 
|  `us-gov-east-1` | `usge1-az1, usge1-az2, usge1-az3` | 
|  `us-gov-west-1` | `usgw1-az1, usgw1-az2, usgw1-az3` | 
| 欧洲地区（西班牙）区域 `eu-south-2` | `eus2-az1, eus2-az2, eus2-az3` | 

**Topics**
+ [

# MemoryDB 与 IPV6
](subnetgroups.ipv6.md)
+ [

# 创建子网组
](subnetgroups.creating.md)
+ [

# 更新子网组
](subnetgroups.modifying.md)
+ [

# 查看子网组详细信息
](subnetgroups.Viewing.md)
+ [

# 删除子网组
](subnetgroups.deleting.md)

# MemoryDB 与 IPV6
<a name="subnetgroups.ipv6"></a>

您可以通过提供具有双栈和仅支持 ipv6 子网的子网组，使用 Valkey 和 Redis OSS 引擎创建新的双栈和仅支持 ipv6 的集群。您不能更改现有集群的网络类型。

通过此功能，您可以：
+ 在双栈子网上创建仅支持 ipv4 和双栈集群。
+ 在仅支持 ipv6 的子网上创建仅支持 ipv6 的集群。
+ 创建新的子网组以支持仅支持 ipv4、双栈和仅支持 ipv6 的子网。
+ 修改现有子网组以包含基础 VPC 中的其他子网。
+ 修改子网组中的现有子网
  + 向配置为支持 IPv6 的子网组添加仅支持 IPv6 的子网
  + 向配置为支持 IPv4 和双栈的子网组添加 IPv4 或双栈子网
+ 对于双栈和 ipv6 集群，通过引擎发现命令发现集群中所有具有 ipv4 或 ipv6 地址的节点。这些发现命令包括 `redis_info`、`redis_cluster` 及类似命令。
+ 对于双栈和 ipv6 集群，通过 DNS 发现命令发现集群中所有节点的 ipv4 和 ipv6 地址。

# 创建子网组
<a name="subnetgroups.creating"></a>

创建新的子网组时，请注意可用 IP 地址的数量。如果子网的可用 IP 地址非常少，您可能会在可以向集群添加更多节点方面受到限制。要解决此问题，您可以将一个或多个子网分配给子网组，以便在集群的可用区中拥有足够数量的 IP 地址。之后，便可向您的集群中添加更多节点。

以下过程演示如何创建名为 `mysubnetgroup` 的子网组（控制台、AWS CLI 和 MemoryDB API）。

## 创建子网组（控制台）
<a name="subnetgroups.creatingclusters.viewdetails"></a>

以下过程介绍如何创建子网组（控制台）。

**创建子网组（控制台）**

1. 登录 AWS 管理控制台并通过以下网址打开 MemoryDB 控制台：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在左侧导航窗格中，选择**子网组**。

1. 选择 **Create Subnet Group**。

1. 在**创建子网组**页面中，执行以下操作：

   1. 在 **Name** 框中，为子网组键入名称。

      集群命名约束如下：
      + 必须包含 1 – 40 个字母数字字符或连字符。
      + 必须以字母开头。
      + 不能包含两个连续连字符。
      + 不能以连字符结束。

   1. 在 **Description** 框中，为子网组键入描述。

   1. 在 **VPC ID** 框中，选择您创建的 Amazon VPC。如果您尚未创建 VPC，请选择**创建 VPC** 按钮，然后按照步骤创建一个。

   1. 在**选定子网**中，选择私有子网的可用区和 ID，然后选择**选择**。

1. 对于**标签**，请选择性地应用标签来搜索和筛选子网或跟踪 AWS 成本。

1. 根据需要完成所有设置后，选择**创建**。

1. 在出现的确认信息中，选择 **Close**。

您的新子网组显示在 MemoryDB 控制台的**子网组**列表中。您可以在窗口底部选择子网组以查看详细信息，例如与此组关联的所有子网。

## 创建子网组（AWS CLI）
<a name="subnetgroups.creating.cli"></a>

在命令提示符处，使用命令 `create-subnet-group` 创建子网组。

对于 Linux、macOS 或 Unix：

```
aws memorydb create-subnet-group \
    --subnet-group-name mysubnetgroup \
    --description "Testing" \
    --subnet-ids subnet-53df9c3a
```

对于 Windows：

```
aws memorydb create-subnet-group ^
    --subnet-group-name mysubnetgroup ^
    --description "Testing" ^
    --subnet-ids subnet-53df9c3a
```

该命令应该生成类似于下述信息的输出：

```
    {
        "SubnetGroup": {
            "Subnets": [
                {
                    "Identifier": "subnet-53df9c3a", 
                    "AvailabilityZone": {
                    "Name": "us-east-1a"
                    }
                }
            ], 
            "VpcId": "vpc-3cfaef47", 
            "Name": "mysubnetgroup", 
            "ARN": "arn:aws:memorydb:us-east-1:012345678912:subnetgroup/mysubnetgroup", 
            "Description": "Testing"
        }
    }
```

有关更多信息，请参阅 AWS CLI 主题 [create-subnet-group](https://docs.aws.amazon.com/cli/latest/reference/memorydb/create-subnet-group.html)。

## 创建子网组（MemoryDB API）
<a name="subnetgroups.creating.api"></a>

通过使用 MemoryDB API，调用带以下参数的 `CreateSubnetGroup`：
+ `SubnetGroupName=``mysubnetgroup`
+ `Description=``Testing`
+ `SubnetIds.member.1=``subnet-53df9c3a`

# 更新子网组
<a name="subnetgroups.modifying"></a>

您可以更新子网组的描述，或者修改与子网组关联的子网 ID 列表。如果集群目前正在使用子网组中的子网，那么您不能删除该子网的 ID。

以下过程介绍如何更新子网组。

## 更新子网组（控制台）
<a name="subnetgroups.modifyingclusters.viewdetails"></a>

**更新子网组**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在左侧导航窗格中，选择**子网组**。

1. 在子网组列表中，选择您希望修改的一个子网组。

1. **名称**、**VPCId** 和**描述**字段不可修改。

1. 在**选定子网**部分，单击**管理**对子网所需可用区进行任何更改。要保存您的更改，请选择 **Save**（保存）。

## 更新子网组（AWS CLI）
<a name="subnetgroups.modifying.cli"></a>

在命令提示符处，使用命令 `update-subnet-group` 更新子网组。

对于 Linux、macOS 或 Unix：

```
aws memorydb update-subnet-group \
    --subnet-group-name mysubnetgroup \
    --description "New description" \
    --subnet-ids "subnet-42df9c3a" "subnet-48fc21a9"
```

对于 Windows：

```
aws memorydb update-subnet-group ^
    --subnet-group-name mysubnetgroup ^
    --description "New description" ^
    --subnet-ids "subnet-42df9c3a" "subnet-48fc21a9"
```

该命令应该生成类似于下述信息的输出：

```
{
    "SubnetGroup": {
        "VpcId": "vpc-73cd3c17", 
        "Description": "New description", 
        "Subnets": [
            {
                "Identifier": "subnet-42dcf93a", 
                "AvailabilityZone": {
                    "Name": "us-east-1a"
                }
            },
            {
                "Identifier": "subnet-48fc12a9", 
                "AvailabilityZone": {
                    "Name": "us-east-1a"
                }
            }
        ], 
        "Name": "mysubnetgroup",
        "ARN": "arn:aws:memorydb:us-east-1:012345678912:subnetgroup/mysubnetgroup",
    }
}
```

有关更多信息，请参阅 AWS CLI 主题 [update-subnet-group](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-subnet-group.html)。

## 更新子网组（MemoryDB API）
<a name="subnetgroups.modifying.api"></a>

通过使用 MemoryDB API，调用带以下参数的 `UpdateSubnetGroup`：
+ `SubnetGroupName=``mysubnetgroup`
+ 要更改其值的任何其他参数。此示例使用 `Description=``New%20description` 更改子网组的描述。

**Example**  

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=UpdateSubnetGroup
    &Description=New%20description
    &SubnetGroupName=mysubnetgroup
    &SubnetIds.member.1=subnet-42df9c3a
    &SubnetIds.member.2=subnet-48fc21a9
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Timestamp=20141201T220302Z
    &Version=2014-12-01
    &X-Amz-Algorithm=Amazon4-HMAC-SHA256
    &X-Amz-Credential=<credential>
    &X-Amz-Date=20141201T220302Z
    &X-Amz-Expires=20141201T220302Z
    &X-Amz-Signature=<signature>
    &X-Amz-SignedHeaders=Host
```

**注意**  
当您创建新的子网组时，请记下可用 IP 地址的数量。如果子网的可用 IP 地址非常少，您可能会在可以向集群添加更多节点方面受到限制。要解决此问题，您可以将一个或多个子网分配给子网组，以便在集群的可用区中拥有足够数量的 IP 地址。之后，便可向您的集群中添加更多节点。

# 查看子网组详细信息
<a name="subnetgroups.Viewing"></a>

以下过程介绍如何查看子网组的详细信息。

## 查看子网组详细信息（控制台）
<a name="subnetgroups.Viewingclusters.viewdetails"></a>

**查看子网组详细信息（控制台）**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在左侧导航窗格中，选择**子网组**。

1. 在**子网组**页面上，在**名称**下选择子网组，或者在搜索栏中输入子网组名称。

1. 在**子网组**页面上，在**名称**下选择子网组，或者在搜索栏中输入子网组名称。

1. 在**子网组设置**下，查看子网组的名称、描述、VPC ID 和 Amazon 资源名称（ARN）。

1. 在**子网**下，查看子网组的可用区、子网 ID 和 CIDR 块

1. 在**标签**下，查看与子网组关联的任何标签。

## 查看子网组详细信息（AWS CLI）
<a name="subnetgroups.Viewing.cli"></a>

在命令提示符处，使用命令 `describe-subnet-groups` 查看指定子网组的详细信息。

对于 Linux、macOS 或 Unix：

```
aws memorydb describe-subnet-groups \
    --subnet-group-name mysubnetgroup
```

对于 Windows：

```
aws memorydb describe-subnet-groups ^
    --subnet-group-name mysubnetgroup
```

该命令应该生成类似于下述信息的输出：

```
{
  "subnetgroups": [
    {
      "Subnets": [
        {
          "Identifier": "subnet-060cae3464095de6e", 
          "AvailabilityZone": {
            "Name": "us-east-1a"
          }
        }, 
        {
          "Identifier": "subnet-049d11d4aa78700c3", 
          "AvailabilityZone": {
            "Name": "us-east-1c"
          }
        }, 
        {
          "Identifier": "subnet-0389d4c4157c1edb4", 
          "AvailabilityZone": {
            "Name": "us-east-1d"
          }
        }
      ], 
      "VpcId": "vpc-036a8150d4300bcf2", 
      "Name": "mysubnetgroup", 
      "ARN": "arn:aws:memorydb:us-east-1:53791xzzz7620:subnetgroup/mysubnetgroup", 
      "Description": "test"
    }
  ]
}
```

要查看所有子网组的详细信息，请使用相同的命令，但无需指定子网组名称。

```
aws memorydb describe-subnet-groups
```

有关更多信息，请参阅 AWS CLI 主题 [describe-subnet-groups](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-subnet-group.html)。

## 查看子网组（MemoryDB API）
<a name="subnetgroups.Viewing.api"></a>

通过使用 MemoryDB API，调用带以下参数的 `DescribeSubnetGroups`：

`SubnetGroupName=``mysubnetgroup`

**Example**  

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=UpdateSubnetGroup
    &Description=New%20description
    &SubnetGroupName=mysubnetgroup
    &SubnetIds.member.1=subnet-42df9c3a
    &SubnetIds.member.2=subnet-48fc21a9
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Timestamp=20211801T220302Z
    &Version=2021-01-01
    &X-Amz-Algorithm=Amazon4-HMAC-SHA256
    &X-Amz-Credential=<credential>
    &X-Amz-Date=20210801T220302Z
    &X-Amz-Expires=20210801T220302Z
    &X-Amz-Signature=<signature>
    &X-Amz-SignedHeaders=Host
```

# 删除子网组
<a name="subnetgroups.deleting"></a>

如果您决定不再需要您的子网组，则可删除它。如果集群目前正在使用某个子网组，则无法删除该子网组。如果删除启用了多可用区的集群上的某个子网组会使集群保留的子网少于两个，您也无法删除该子网组。您必须先取消勾选**多可用区**，然后删除子网。

以下过程介绍如何删除子网组。

## 删除子网组（控制台）
<a name="subnetgroups.deletingclusters.viewdetails"></a>

**删除子网组**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在左侧导航窗格中，选择**子网组**。

1. 在子网组列表中，选择要删除的子网组，再选择**操作**，然后选择**删除**。
**注意**  
您无法删除默认子网组或与任何集群关联的子网组。

1. **删除子网组**确认屏幕随即出现。

1. 要删除子网组，请在确认文本框中输入 `delete`。要保留子网组，请选择**取消**。

## 删除子网组（AWS CLI）
<a name="subnetgroups.deleting.cli"></a>

通过使用 AWS CLI，调用带以下参数的命令 **delete-subnet-group**：
+ `--subnet-group-name` *mysubnetgroup*

对于 Linux、macOS 或 Unix：

```
aws memorydb delete-subnet-group \
    --subnet-group-name mysubnetgroup
```

对于 Windows：

```
aws memorydb delete-subnet-group ^
    --subnet-group-name mysubnetgroup
```

有关更多信息，请参阅 AWS CLI 主题 [delete-subnet-group](https://docs.aws.amazon.com/cli/latest/reference/memorydb/delete-subnet-group.html)。

## 删除子网组（MemoryDB API）
<a name="subnetgroups.deleting.api"></a>

通过使用 MemoryDB API，调用带以下参数的 `DeleteSubnetGroup`：
+ `SubnetGroupName=mysubnetgroup`

**Example**  

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=DeleteSubnetGroup
    &SubnetGroupName=mysubnetgroup
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Timestamp=20210801T220302Z
    &Version=2021-01-01
    &X-Amz-Algorithm=Amazon4-HMAC-SHA256
    &X-Amz-Credential=<credential>
    &X-Amz-Date=20210801T220302Z
    &X-Amz-Expires=20210801T220302Z
    &X-Amz-Signature=<signature>
    &X-Amz-SignedHeaders=Host
```

此命令不生成任何输出。

有关更多信息，请参阅 MemoryDB API 主题 [DeleteSubnetGroup](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DeleteSubnetGroup.html)。