

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

# 创建 Valkey 或 Redis OSS 复制组
<a name="Replication.CreatingRepGroup"></a>

在创建具有副本节点的集群时，您有以下选择。当您已有一个可用 Valkey 或 Redis OSS（已禁用集群模式）集群且此集群未与具有要用作主节点的副本的任何集群关联时，其中一个选项适用。当您需要使用集群和只读副本创建主节点时，会应用另一个选择。目前，Valkey 或 Redis OSS（已启用集群模式）集群必须从头开始创建。

**选项 1：[使用现有集群创建复制组](Replication.CreatingReplGroup.ExistingCluster.md)**  
使用此选项可使用现有单节点 Valkey 或 Redis OSS（已禁用集群模式）集群。您可以指定此现有节点作为新集群中的主节点，然后单独向集群中添加 1 到 5 个只读副本。如果现有集群处于活动状态，则只读副本在创建时都将与该集群同步。请参阅[使用现有集群创建复制组](Replication.CreatingReplGroup.ExistingCluster.md)。  
无法使用现有集群创建 Valkey 或 Redis OSS（已启用集群模式）集群。若要使用 ElastiCache 控制台创建 Valkey 或 Redis OSS（已启用集群模式）集群（API/CLI：复制组），请参阅 [创建 Valkey 或 Redis OSS（已启用集群模式）集群（控制台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster)。

**选项 2：[从头开始创建 Valkey 或 Redis OSS 复制组](Replication.CreatingReplGroup.NoExistingCluster.md)**  
如果您还没有任何可用的 Valkey 或 Redis OSS（禁用集群模式）集群以用作集群的主节点，或者您希望创建 Valkey 或 Redis OSS（启用集群模式）集群，请使用此选项。请参阅[从头开始创建 Valkey 或 Redis OSS 复制组](Replication.CreatingReplGroup.NoExistingCluster.md)。

# 使用现有集群创建复制组
<a name="Replication.CreatingReplGroup.ExistingCluster"></a>

以下操作将向您的 Valkey 或 Redis OSS（已禁用集群模式）单节点集群添加一个复制组，这是将集群升级至 Valkey 最新版本的必要步骤。这是一个就地操作，全程零停机时间且零数据丢失。当您为单节点集群创建复制组时，该集群节点将成为新集群的主节点。如果您没有可用作新集群的主集群的 Valkey 或 Redis OSS（已禁用集群模式）集群，请参阅[从头开始创建 Valkey 或 Redis OSS 复制组](Replication.CreatingReplGroup.NoExistingCluster.md)。

可用的集群是现有的单节点 Valkey 或 Redis OSS 集群。当前，Valkey 或 Redis OSS（已启用集群模式）不支持使用可用的单节点集群创建具有副本的集群。如果您要创建 Valkey 或 Redis OSS（已启用集群模式）集群，请参阅[创建 Valkey 或 Redis OSS（已启用集群模式）集群（控制台）](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CON)。

## 使用现有集群创建复制组（控制台）
<a name="Replication.CreatingReplGroup.ExistingCluster.CON"></a>

请参阅主题[使用 ElastiCache AWS 管理控制台](Clusters.AddNode.md#Clusters.AddNode.CON)。

## 使用可用 Valkey 或 Redis OSS 集群创建复制组（AWS CLI）
<a name="Replication.CreatingReplGroup.ExistingCluster.CLI"></a>

使用AWS CLI时，在将可用 Valkey 或 Redis OSS 缓存集群用作主集群时，可使用只读副本通过两个步骤创建复制组。

使用时，AWS CLI您可以创建一个复制组，将可用的独立节点指定为集群的主节点，`--primary-cluster-id`并使用 CLI 命令指定集群中要包含的节点数量`create-replication-group`。包括以下参数。

**--replication-group-id**  
正在创建的复制组的名称。此参数的值用作所添加节点的名称的基础，方法是向 `--replication-group-id` 末尾添加一个连续的 3 位数。例如 `sample-repl-group-001`。  
Valkey 或 Redis OSS（已禁用集群模式）复制组命名约束如下：  
+ 必须包含 1 – 40 个字母数字字符或连字符。
+ 必须以字母开头。
+ 不能包含两个连续连字符。
+ 不能以连字符结束。

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

**--num-node-groups**  
您希望此集群中包含的节点数。此值包含主节点。此参数的最大值为 6。

**--primary-cluster-id**  
要用作此复制组中主节点的可用 Valkey 或 Redis OSS（已禁用集群模式）集群的节点的名称。

以下命令通过将可用 Valkey 或 Redis OSS（已禁用集群模式）集群 `redis01` 用作复制组的主节点来创建复制组 `sample-repl-group`。它将创建 2 个为只读副本的新节点。`redis01` 的设置（即参数组、安全组、节点类型、引擎版本等）将应用于复制组中的所有节点。

对于 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "demo cluster with replicas" \
   --num-cache-clusters 3 \
   --primary-cluster-id redis01
```

对于 Windows：

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "demo cluster with replicas" ^
   --num-cache-clusters 3 ^
   --primary-cluster-id redis01
```

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

**接下来，向复制组添加只读副本**  
创建复制组后，使用 `create-cache-cluster` 命令向复制组添加 1 到 5 个只读副本，并确保包含以下参数。

**--cache-cluster-id**  
正在向复制组添加的集群的名称。  
集群命名约束如下：  
+ 必须包含 1 – 40 个字母数字字符或连字符。
+ 必须以字母开头。
+ 不能包含两个连续连字符。
+ 不能以连字符结束。


**--replication-group-id**  
正在将此集群添加到的复制组的名称。

对要添加到复制组的每个只读副本重复此命令，并仅更改 `--cache-cluster-id` 参数的值。

**注意**  
请记住，一个复制组最多只能有五个只读副本。尝试向已有五个只读副本的复制组添加只读副本会导致操作失败。

以下代码将只读副本 `my-replica01` 添加到复制组 `sample-repl-group`。主集群的设置（参数组、安全组、节点类型等）将在节点添加到复制组时应用到节点。

对于 Linux、macOS 或 Unix：

```
aws elasticache create-cache-cluster \
   --cache-cluster-id my-replica01 \
   --replication-group-id sample-repl-group
```

对于 Windows：

```
aws elasticache create-cache-cluster ^
   --cache-cluster-id my-replica01 ^
   --replication-group-id sample-repl-group
```

此命令的输出如下所示。

```
{
    "ReplicationGroup": {
        "Status": "creating",
        "Description": "demo cluster with replicas",
        "ClusterEnabled": false,
        "ReplicationGroupId": "sample-repl-group",
        "SnapshotRetentionLimit": 1,
        "AutomaticFailover": "disabled",
        "SnapshotWindow": "00:00-01:00",
        "SnapshottingClusterId": "redis01",
        "MemberClusters": [
            "sample-repl-group-001",
            "sample-repl-group-002",
            "redis01"
        ],
        "CacheNodeType": "cache.m4.large",
        "DataTiering": "disabled",
        "PendingModifiedValues": {}
    }
}
```

有关更多信息，请参阅以下AWS CLI主题：
+ [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)
+ [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html)

## 向独立 Valkey 或 Redis OSS（已禁用集群模式）集群添加副本 (API) ElastiCache
<a name="Replication.CreatingReplGroup.ExistingCluster.API"></a>

使用 ElastiCache API 时，您可以创建一个复制组，将可用的独立节点指定为集群的主节点，`PrimaryClusterId`并使用 CLI 命令指定集群中要包含的节点数量`CreateReplicationGroup`。包括以下参数。

**ReplicationGroupId**  
正在创建的复制组的名称。此参数的值用作所添加节点的名称的基础，方法是向 `ReplicationGroupId` 末尾添加一个连续的 3 位数。例如 `sample-repl-group-001`。  
Valkey 或 Redis OSS（已禁用集群模式）复制组命名约束如下：  
+ 必须包含 1 – 40 个字母数字字符或连字符。
+ 必须以字母开头。
+ 不能包含两个连续连字符。
+ 不能以连字符结束。

**ReplicationGroupDescription**  
有副本的集群的描述。

**NumCacheClusters**  
您希望此集群中包含的节点数。此值包含主节点。此参数的最大值为 6。

**PrimaryClusterId**  
要用作此集群中主节点的可用 Valkey 或 Redis OSS（已禁用集群模式）集群的名称。

以下命令通过将可用 Valkey 或 Redis OSS（已禁用集群模式）集群 `redis01` 用作复制组的主节点来创建具有副本的集群 `sample-repl-group`。它将创建 2 个为只读副本的新节点。`redis01` 的设置（即参数组、安全组、节点类型、引擎版本等）将应用于复制组中的所有节点。

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateReplicationGroup 
   &Engine=redis
   &EngineVersion=6.0
   &ReplicationGroupDescription=Demo%20cluster%20with%20replicas
   &ReplicationGroupId=sample-repl-group
   &PrimaryClusterId=redis01
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

有关更多信息，请参阅 ElastiCache APL 主题：
+ [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)
+ [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)

**接下来，向复制组添加只读副本**  
创建复制组后，使用 `CreateCacheCluster` 操作向复制组添加 1 到 5 个只读副本，并确保包含以下参数。

**CacheClusterId**  
正在向复制组添加的集群的名称。  
集群命名约束如下：  
+ 必须包含 1 – 40 个字母数字字符或连字符。
+ 必须以字母开头。
+ 不能包含两个连续连字符。
+ 不能以连字符结束。


**ReplicationGroupId**  
正在将此集群添加到的复制组的名称。

对要添加到复制组的每个只读副本重复此操作，并仅更改 `CacheClusterId` 参数的值。

以下代码将只读副本 `myReplica01` 添加到复制组 `myReplGroup`。主集群的设置（参数组、安全组、节点类型等）将在节点添加到复制组时应用到节点。

```
https://elasticache.us-west-2.amazonaws.com/
	?Action=CreateCacheCluster
	&CacheClusterId=myReplica01
	&ReplicationGroupId=myReplGroup
	&SignatureMethod=HmacSHA256
	&SignatureVersion=4
	&Version=2015-02-02
	&X-Amz-Algorithm=&AWS;4-HMAC-SHA256
	&X-Amz-Credential=[your-access-key-id]/20150202/us-west-2/elasticache/aws4_request
	&X-Amz-Date=20150202T170651Z
	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
	&X-Amz-Signature=[signature-value]
```

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

# 从头开始创建 Valkey 或 Redis OSS 复制组
<a name="Replication.CreatingReplGroup.NoExistingCluster"></a>

接下来，您可以找到如何在不将现有 Valkey 或 Redis OSS 集群用作主集群的情况下创建 Valkey 或 Redis OSS 复制组。您可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 从头开始创建 Valkey 或 Redis OSS（已禁用集群模式）或 Valkey 或 Redis OSS（已启用集群模式）复制组。

在继续之前，请确定您希望创建 Valkey 或 Redis OSS（已禁用集群模式）复制组还是 Valkey 或 Redis OSS（已启用集群模式）复制组。有关如何做出决定的指南，请参阅[复制：Valkey 和 Redis OSS 已禁用集群模式与已启用集群模式](Replication.Redis-RedisCluster.md)。

**Topics**
+ [从头创建 Valkey 或 Redis OSS（已禁用集群模式）复制组](Replication.CreatingReplGroup.NoExistingCluster.Classic.md)
+ [从头开始在 Valkey 或 Redis OSS（已启用集群模式）中创建复制组](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md)

# 从头创建 Valkey 或 Redis OSS（已禁用集群模式）复制组
<a name="Replication.CreatingReplGroup.NoExistingCluster.Classic"></a>

您可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 从头创建 Valkey 或 Redis OSS（已禁用集群模式）复制组。Valkey 或 Redis OSS（已禁用集群模式）复制组始终有一个节点组、一个主集群和最多 5 个只读副本。Valkey 或 Redis OSS（已禁用集群模式）复制组不支持对数据分区。

**注意**  
每个集群的节点/分片限制最高可提高到 500。若要请求提高限制，请参阅 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 并在请求中包含实例类型。

要从头开始创建 Valkey 或 Redis OSS（已禁用集群模式）复制组，请采用以下方法之一：

## 从头创建 Valkey 或 Redis OSS（已禁用集群模式）复制组（AWS CLI）
<a name="Replication.CreatingReplGroup.NoExistingCluster.Classic.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**  
复制组的描述。

**--num-cache-clusters**  
要使用此复制组、主集群和只读副本创建的节点的数目。  
如果您启用多可用区 (`--automatic-failover-enabled`)，则 `--num-cache-clusters` 值必须至少为 2。

**--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**  
指定与您的引擎版本对应的参数组。如果您运行的是 Redis OSS 3.2.4 或更高版本，请指定 `default.redis3.2` 参数组或者从 `default.redis3.2` 派生的参数组来创建 Valkey 或 Redis OSS（已禁用集群模式）复制组。有关更多信息，请参阅 [Valkey 和 Redis OSS 参数](ParameterGroups.Engine.md#ParameterGroups.Redis)。

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

**--engine**  
redis

**--engine-version**  
要拥有最丰富的功能，请选择最新的引擎版本。

节点的名称会通过将 `-00`*\$1* 添加到复制组名称的后面，从复制组名称得出。例如，通过使用复制组名称 `myReplGroup`，主集群的名称将为 `myReplGroup-001` 以及只读副本的名称将为 `myReplGroup-002` 到 `myReplGroup-006`。

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

以下操作使用三个节点（一个主节点和两个副本节点）创建 Valkey 或 Redis OSS（已禁用集群模式）复制组 `sample-repl-group`。

对于 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "Demo cluster with replicas" \
   --num-cache-clusters 3 \
   --cache-node-type cache.m4.large \ 
   --engine redis
```

对于 Windows：

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "Demo cluster with replicas" ^
   --num-cache-clusters 3 ^
   --cache-node-type cache.m4.large ^  
   --engine redis
```

此命令的输出如下所示。

```
{
    "ReplicationGroup": {
        "Status": "creating",
        "Description": "Demo cluster with replicas",
        "ClusterEnabled": false,
        "ReplicationGroupId": "sample-repl-group",
        "SnapshotRetentionLimit": 0,
        "AutomaticFailover": "disabled",
        "SnapshotWindow": "01:30-02:30",
        "MemberClusters": [
            "sample-repl-group-001",
            "sample-repl-group-002",
            "sample-repl-group-003"
        ],
        "CacheNodeType": "cache.m4.large",
        "DataTiering": "disabled",
        "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.Classic.API"></a>

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

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

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

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

**NumCacheClusters**  
要使用此复制组、主集群和只读副本创建的节点的总数。  
如果您启用多可用区 (`AutomaticFailoverEnabled=true`)，则 `NumCacheClusters` 值必须至少为 2。

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

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

**CacheParameterGroup**  
指定与您的引擎版本对应的参数组。如果您运行的是 Redis OSS 3.2.4 或更高版本，请指定 `default.redis3.2` 参数组或者从 `default.redis3.2` 派生的参数组来创建 Valkey 或 Redis OSS（已禁用集群模式）复制组。有关更多信息，请参阅 [Valkey 和 Redis OSS 参数](ParameterGroups.Engine.md#ParameterGroups.Redis)。

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

**引擎**  
redis

**EngineVersion**  
6.0

节点的名称会通过将 `-00`*\$1* 添加到复制组名称的后面，从复制组名称得出。例如，通过使用复制组名称 `myReplGroup`，主集群的名称将为 `myReplGroup-001` 以及只读副本的名称将为 `myReplGroup-002` 到 `myReplGroup-006`。

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

以下操作使用三个节点（一个主节点和两个副本节点）创建 Valkey 或 Redis OSS（已禁用集群模式）复制组 `myReplGroup`。

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateReplicationGroup 
   &CacheNodeType=cache.m4.large
   &CacheParameterGroup=default.redis6.x
   &Engine=redis
   &EngineVersion=6.0
   &NumCacheClusters=3
   &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)。

# 从头开始在 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)。