

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

# 从头开始在 Valkey 或 Redis OSS（已启用集群模式）中创建复制组
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster"></a>

您可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 创建 Valkey 或 Redis OSS（已启用集群模式）集群（API/CLI：*复制组*）。Valkey 或 Redis OSS（已启用集群模式）复制组可以有 1 到 500 个分片（API/CLI：节点组）；每个分片中可以有一个主节点，以及最多 5 个只读副本。您可以创建具有更多分片和更少副本的集群，每个集群最多可包含 90 个节点。此集群配置的范围可以从 90 个分片和 0 个副本到 15 个分片和 5 个副本，这是允许的最大副本数。

如果引擎为 Valkey 或 Redis OSS 5.0.6 或更高版本，您可以将每个集群的节点或分片限制增至最多 500 个。例如，您可以选择配置一个 500 节点的集群，范围介于 83 个分片（一个主分片和 5 个副本分片）和 500 个分片（一个主分片，无副本分片）之间。确保可提供足够的 IP 地址来满足增长需求。常见的陷阱包括子网组中的子网 CIDR 范围太小，或者子网被其他集群共享和大量使用。有关更多信息，请参阅 [创建子网组](SubnetGroups.Creating.md)。

 对于低于 5.0.6 的版本，每个集群的限制为 250。

若要请求提高限制，请参阅 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 并选择限制类型 **Nodes per cluster per instance type（每个实例类型的每个集群的节点数）**。

**Topics**
+ [使用 ElastiCache 控制台](#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CON)
+ [从头开始创建 Valkey 或 Redis OSS（已启用集群模式）复制组（AWS CLI）](#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CLI)
+ [从头开始在 Valkey 或 Redis OSS（已启用集群模式）中创建复制组（ElastiCache API）](#Replication.CreatingReplGroup.NoExistingCluster.Cluster.API)

## 创建 Valkey 或 Redis OSS（已启用集群模式）集群（控制台）
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster.CON"></a>

要创建 Valkey 或 Redis OSS（已启用集群模式）集群，请参阅[创建 Valkey 或 Redis OSS（已启用集群模式）集群（控制台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster)。请确保启用集群模式 **Cluster Mode enabled (Scale Out)（启用集群模式（横向扩展））**，并在每个模式中指定至少两个分片和一个副本节点。

## 从头开始创建 Valkey 或 Redis OSS（已启用集群模式）复制组（AWS CLI）
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster.CLI"></a>

以下过程为使用 AWS CLI 创建 Valkey 或 Redis OSS（已启用集群模式）复制组。

在从头开始创建 Valkey 或 Redis OSS（已启用集群模式）复制组时，会通过单次调用 AWS CLI `create-replication-group` 命令创建该复制组及其所有节点。包括以下参数。

**--replication-group-id**  
正在创建的复制组的名称。  
Valkey 或 Redis OSS（已启用集群模式）复制组命名约束如下：  
+ 必须包含 1 – 40 个字母数字字符或连字符。
+ 必须以字母开头。
+ 不能包含两个连续连字符。
+ 不能以连字符结束。

**--replication-group-description**  
复制组的描述。

**--cache-node-type**  
复制组中的每个节点的节点类型。  
ElastiCache 支持以下节点类型。一般而言，与其上一代类型对应项相比，最新一代类型以更低的成本提供了更多内存和计算能力。  
有关各节点类型性能详细信息，请参阅 [Amazon EC2 实例类型](https://aws.amazon.com/ec2/instance-types/)。

**--data-tiering-enabled**  
如果您使用的是 r6gd 节点类型，请设置此参数。如果您不想使用数据分层功能，则设置 `--no-data-tiering-enabled`。有关更多信息，请参阅 [ElastiCache 中的数据分层](data-tiering.md)。

**--cache-parameter-group**  
指定 `default.redis6.x.cluster.on` 参数组或者派生自 `default.redis6.x.cluster.on` 的参数组以创建 Valkey 或 Redis OSS（已启用集群模式）复制组。有关更多信息，请参阅 [Redis OSS 6.x 参数更改](ParameterGroups.Engine.md#ParameterGroups.Redis.6-x)。

**--engine**  
redis

**--engine-version**  
3.2.4

**--num-node-groups**  
此复制组中的节点组数量。有效值为 1 到 500。  
每个集群的节点/分片限制最高可提高到 500。若要请求提高限制，请参阅 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 并选择限制类型“Nodes per cluster per instance type（每个实例类型的每个集群的节点数）”。

**--replicas-per-node-group**  
各节点组中的副本节点数量。有效值为 0 到 5。

**--network-type**  
`ipv4`、`ipv` 或 `dual-stack`。如果选择双堆栈，则必须将 `--IpDiscovery` 参数设置为 `ipv4` 或 `ipv6`。

如果要在复制组上启用传输中加密或静态加密，请添加 `--transit-encryption-enabled` 和/或 `--at-rest-encryption-enabled` 参数并满足以下条件。
+ 您的复制组必须运行 Redis OSS 版本 3.2.6 或 4.0.10。
+ 复制组必须在 Amazon VPC 中创建。
+ 还必须包含参数 `--cache-subnet-group`。
+ 还必须提供 `--auth-token` 参数以及客户为对此集群执行操作所需的 AUTH 令牌指定的字符串值（密码）。

以下操作创建具有三个节点组/分片（--num-node-groups）的 Valkey 或 Redis OSS（已启用集群模式）复制组 `sample-repl-group`，每个节点组/分片具有三个节点，即一个主节点和两个只读副本（--replicas-per-node-group）。

对于 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "Demo cluster with replicas" \
   --num-node-groups 3 \
   --replicas-per-node-group 2 \
   --cache-node-type cache.m4.large \ 
   --engine redis \   
   --security-group-ids SECURITY_GROUP_ID \    
   --cache-subnet-group-name SUBNET_GROUP_NAME>
```

对于 Windows：

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "Demo cluster with replicas" ^
   --num-node-groups 3 ^
   --replicas-per-node-group 2 ^
   --cache-node-type cache.m4.large ^ 
   --engine redis ^   
   --security-group-ids SECURITY_GROUP_ID ^      
   --cache-subnet-group-name SUBNET_GROUP_NAME>
```

之前的命令生成以下输出。

```
{
    "ReplicationGroup": {
        "Status": "creating", 
        "Description": "Demo cluster with replicas", 
        "ReplicationGroupId": "sample-repl-group", 
        "SnapshotRetentionLimit": 0, 
        "AutomaticFailover": "enabled", 
        "SnapshotWindow": "05:30-06:30", 
        "MemberClusters": [
            "sample-repl-group-0001-001", 
            "sample-repl-group-0001-002", 
            "sample-repl-group-0001-003", 
            "sample-repl-group-0002-001", 
            "sample-repl-group-0002-002", 
            "sample-repl-group-0002-003", 
            "sample-repl-group-0003-001", 
            "sample-repl-group-0003-002", 
            "sample-repl-group-0003-003"
        ], 
        "PendingModifiedValues": {}
    }
}
```

在您从头开始创建 Valkey 或 Redis OSS（已启用集群模式）复制组时，您可以使用 `--node-group-configuration` 参数配置集群中的每个分片，如下例中所示，其中配置了两个节点组（控制台：分片）。第一个分片有两个节点：一个主节点和一个只读副本节点。第二个分片有三个节点：一个主节点和两个只读副本节点。

**--node-group-configuration**  
各节点组的配置。`--node-group-configuration` 参数包括以下字段。  
+ `PrimaryAvailabilityZone` – 此节点组的主节点所在的可用区。如果忽略此参数，ElastiCache 会选择主节点的可用区。

  **示例：** us-west-2a。
+ `ReplicaAvailabilityZones` – 只读副本所在可用区的列表，以逗号分隔。此列表中的可用区数量必须与 `ReplicaCount` 的值匹配。如果忽略此参数，ElastiCache 会选择复制节点的可用区。

  **示例：**"us-west-2a,us-west-2b,us-west-2c"
+ `ReplicaCount` – 此节点组中的副本节点数量。
+ `Slots` – 指定节点组的键空间的字符串。字符串的格式为 `startKey-endKey`。如果忽略此参数，ElastiCache 会在所有节点组之间均匀分配键。

  **示例：** "0-4999"

   

以下操作创建具有两个节点组/分片（`--num-node-groups`）的 Valkey 或 Redis OSS（已启用集群模式）复制组 `new-group`。与前例不同，各节点组配置为彼此不同 (`--node-group-configuration`)。

对于 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
  --replication-group-id new-group \
  --replication-group-description "Sharded replication group" \
  --engine redis \    
  --snapshot-retention-limit 8 \
  --cache-node-type cache.m4.medium \
  --num-node-groups 2 \
  --node-group-configuration \
      "ReplicaCount=1,Slots=0-8999,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1b'" \
      "ReplicaCount=2,Slots=9000-16383,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1a','us-east-1c'"
```

对于 Windows：

```
aws elasticache create-replication-group ^
  --replication-group-id new-group ^
  --replication-group-description "Sharded replication group" ^
  --engine redis ^    
  --snapshot-retention-limit 8 ^
  --cache-node-type cache.m4.medium ^
  --num-node-groups 2 ^
  --node-group-configuration \
      "ReplicaCount=1,Slots=0-8999,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1b'" \
      "ReplicaCount=2,Slots=9000-16383,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1a','us-east-1c'"
```

之前的操作生成以下输出。

```
{
    "ReplicationGroup": {
        "Status": "creating", 
        "Description": "Sharded replication group", 
        "ReplicationGroupId": "rc-rg", 
        "SnapshotRetentionLimit": 8, 
        "AutomaticFailover": "enabled", 
        "SnapshotWindow": "10:00-11:00", 
        "MemberClusters": [
            "rc-rg-0001-001", 
            "rc-rg-0001-002", 
            "rc-rg-0002-001", 
            "rc-rg-0002-002", 
            "rc-rg-0002-003"
        ], 
        "PendingModifiedValues": {}
    }
}
```

有关其他信息和可能要使用的参数，请参阅 AWS CLI 主题 [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)。

## 从头开始在 Valkey 或 Redis OSS（已启用集群模式）中创建复制组（ElastiCache API）
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster.API"></a>

以下过程使用 ElastiCache API 创建 Valkey 或 Redis OSS（已启用集群模式）复制组。

在从头开始创建 Valkey 或 Redis OSS（已启用集群模式）复制组时，会通过单次调用 ElastiCache API `CreateReplicationGroup` 操作来创建该复制组及其所有节点。包括以下参数。

**ReplicationGroupId**  
正在创建的复制组的名称。  
Valkey 或 Redis OSS（已启用集群模式）复制组命名约束如下：  
+ 必须包含 1 – 40 个字母数字字符或连字符。
+ 必须以字母开头。
+ 不能包含两个连续连字符。
+ 不能以连字符结束。

**ReplicationGroupDescription**  
复制组的描述。

**NumNodeGroups**  
您希望对此复制组创建的节点组数量。有效值为 1 到 500。

**ReplicasPerNodeGroup**  
各节点组中的副本节点数量。有效值为 0 到 5。

**NodeGroupConfiguration**  
各节点组的配置。`NodeGroupConfiguration` 参数包括以下字段。  
+ `PrimaryAvailabilityZone` – 此节点组的主节点所在的可用区。如果忽略此参数，ElastiCache 会选择主节点的可用区。

  **示例：** us-west-2a。
+ `ReplicaAvailabilityZones` – 只读副本所在可用区的列表。此列表中的可用区数量必须与 `ReplicaCount` 的值匹配。如果忽略此参数，ElastiCache 会选择复制节点的可用区。
+ `ReplicaCount` – 此节点组中的副本节点数量。
+ `Slots` – 指定节点组的键空间的字符串。字符串的格式为 `startKey-endKey`。如果忽略此参数，ElastiCache 会在所有节点组之间均匀分配键。

  **示例：** "0-4999"

   

**CacheNodeType**  
复制组中的每个节点的节点类型。  
ElastiCache 支持以下节点类型。一般而言，与其上一代类型对应项相比，最新一代类型以更低的成本提供了更多内存和计算能力。  
有关各节点类型性能详细信息，请参阅 [Amazon EC2 实例类型](https://aws.amazon.com/ec2/instance-types/)。

**--data-tiering-enabled**  
如果您使用的是 r6gd 节点类型，请设置此参数。如果您不想使用数据分层功能，则设置 `--no-data-tiering-enabled`。有关更多信息，请参阅 [ElastiCache 中的数据分层](data-tiering.md)。

**CacheParameterGroup**  
指定 `default.redis6.x.cluster.on` 参数组或者派生自 `default.redis6.x.cluster.on` 的参数组以创建 Valkey 或 Redis OSS（已启用集群模式）复制组。有关更多信息，请参阅 [Redis OSS 6.x 参数更改](ParameterGroups.Engine.md#ParameterGroups.Redis.6-x)。

**--network-type**  
`ipv4`、`ipv` 或 `dual-stack`。如果选择双堆栈，则必须将 `--IpDiscovery` 参数设置为 `ipv4` 或 `ipv6`。

**引擎**  
redis

**EngineVersion**  
6.0

如果要在复制组上启用传输中加密或静态加密，请添加 `TransitEncryptionEnabled=true` 和/或 `AtRestEncryptionEnabled=true` 参数并满足以下条件。
+ 您的复制组必须运行 Redis OSS 版本 3.2.6 或 4.0.10。
+ 复制组必须在 Amazon VPC 中创建。
+ 还必须包含参数 `CacheSubnetGroup`。
+ 还必须提供 `AuthToken` 参数以及客户为对此集群执行操作所需的 AUTH 令牌指定的字符串值（密码）。

添加换行符以便于阅读。

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateReplicationGroup 
   &CacheNodeType=cache.m4.large
   &CacheParemeterGroup=default.redis6.xcluster.on
   &Engine=redis
   &EngineVersion=6.0
   &NumNodeGroups=3
   &ReplicasPerNodeGroup=2
   &ReplicationGroupDescription=test%20group
   &ReplicationGroupId=myReplGroup
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

有关其他信息和可能要使用的参数，请参阅 ElastiCache API 主题 [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)。