从头开始在 Redis(已启用集群模式)中创建复制组 - ElastiCache 适用于 Redis 的 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

从头开始在 Redis(已启用集群模式)中创建复制组

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

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

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

若要请求提高限制,请参阅 Amazon Service Limits 并选择限制类型 Nodes per cluster per instance type(每个实例类型的每个集群的节点数)

创建 Redis(已启用集群模式)集群(控制台)

若要创建 Redis(已启用集群模式)集群,请参阅 创建 Redis(已启用集群模式)集群(控制台)。请确保启用集群模式 Cluster Mode enabled (Scale Out)(启用集群模式(横向扩展)),并在每个模式中指定至少两个分片和一个副本节点。

从头开始创建 Redis(已启用集群模式)复制组(Amazon CLI)

以下过程为使用 Amazon CLI创建 Redis(已启用集群模式)复制组。

当您从头开始创建 Redis(已启用集群模式)复制组时,只需调用一次 Amazon CLI create-replication-group命令即可创建复制组及其所有节点。包括以下参数。

--replication-group-id

正在创建的复制组的名称。

Redis(已启用集群模式)复制组命名约束如下:

  • 必须包含 1 – 40 个字母数字字符或连字符。

  • 必须以字母开头。

  • 不能包含两个连续连字符。

  • 不能以连字符结束。

--replication-group-description

复制组的描述。

--cache-node-type

复制组中的每个节点的节点类型。

ElastiCache 支持以下节点类型。一般而言,与其上一代类型对应项相比,最新一代类型以更低的成本提供了更多内存和计算能力。

有关各节点类型性能详细信息,请参阅 Amazon EC2 实例类型

--data-tiering-enabled

如果您使用的是 r6gd 节点类型,请设置此参数。如果您不想使用数据分层功能,则设置 --no-data-tiering-enabled。有关更多信息,请参阅 数据分层

--cache-parameter-group

指定 default.redis6.x.cluster.on 参数组或者派生自 default.redis6.x.cluster.on 的参数组以创建 Redis(已启用集群模式)复制组。有关更多信息,请参阅 Redis 6.x 参数更改

--engine

redis

--engine-version

3.2.4

--num-node-groups

此复制组中的节点组数量。有效值为 1 到 500。

注意

每个集群的节点/分片限制最高可提高到 500。若要请求提高限制,请参阅 Amazon Service Limits 并选择限制类型“Nodes per cluster per instance type(每个实例类型的每个集群的节点数)”。

--replicas-per-node-group

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

--network-type

ipv4ipvdual-stack。如果选择双堆栈,则必须将 --IpDiscovery 参数设置为 ipv4ipv6

如果要在复制组上启用传输中加密或静态加密,请添加 --transit-encryption-enabled 和/或 --at-rest-encryption-enabled 参数并满足以下条件。

  • 您的复制组必须运行 Redis 版本 3.2.6 或 4.0.10。

  • 复制组必须在 Amazon VPC 中创建。

  • 还必须包含参数 --cache-subnet-group

  • 还必须提供 --auth-token 参数以及客户为对此集群执行操作所需的 AUTH 令牌指定的字符串值(密码)。

以下操作创建具有三个节点组/分片 (--num-node-groups) 的 Redis(已启用集群模式)复制组 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": {} } }

在您从头开始创建 Redis(已启用集群模式)复制组时,您可以使用 --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)的 Redis(已启用集群模式)复制组 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": {} } }

有关您可能要使用的其他信息和参数,请参阅 Amazon CLI 主题create-replication-group。

从 Redis(已启用集群模式)中从头开始创建复制组 (ElastiCache API)

以下过程使用 ElastiCache API 创建 Redis(已启用集群模式)复制组。

当您从头开始创建 Redis(已启用集群模式)复制组时,只需调用 ElastiCache API CreateReplicationGroup 操作即可创建该复制组及其所有节点。包括以下参数。

ReplicationGroup我是

正在创建的复制组的名称。

Redis(已启用集群模式)复制组命名约束如下:

  • 必须包含 1 – 40 个字母数字字符或连字符。

  • 必须以字母开头。

  • 不能包含两个连续连字符。

  • 不能以连字符结束。

ReplicationGroup描述

复制组的描述。

NumNode群组

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

ReplicasPerNodeGroup

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

NodeGroup配置

各节点组的配置。NodeGroupConfiguration 参数包括以下字段。

  • PrimaryAvailabilityZone – 此节点组的主节点所在的可用区。如果省略此参数,则为主节点 ElastiCache 选择可用区。

    示例: us-west-2a。

  • ReplicaAvailabilityZones – 只读副本所在可用区的列表。此列表中的可用区数量必须与 ReplicaCount 的值匹配。如果省略此参数,则为副本节点 ElastiCache 选择可用区。

  • ReplicaCount – 此节点组中的副本节点数量。

  • Slots – 指定节点组的键空间的字符串。字符串的格式为 startKey-endKey。如果省略此参数,则在节点组之间平均 ElastiCache 分配密钥。

    示例: "0-4999"

     

CacheNode类型

复制组中的每个节点的节点类型。

ElastiCache 支持以下节点类型。一般而言,与其上一代类型对应项相比,最新一代类型以更低的成本提供了更多内存和计算能力。

有关各节点类型性能详细信息,请参阅 Amazon EC2 实例类型

--data-tiering-enabled

如果您使用的是 r6gd 节点类型,请设置此参数。如果您不想使用数据分层功能,则设置 --no-data-tiering-enabled。有关更多信息,请参阅 数据分层

CacheParameter组

指定 default.redis6.x.cluster.on 参数组或者派生自 default.redis6.x.cluster.on 的参数组以创建 Redis(已启用集群模式)复制组。有关更多信息,请参阅 Redis 6.x 参数更改

--network-type

ipv4ipvdual-stack。如果选择双堆栈,则必须将 --IpDiscovery 参数设置为 ipv4ipv6

引擎

redis

EngineVersion

6.0

如果要在复制组上启用传输中加密或静态加密,请添加 TransitEncryptionEnabled=true 和/或 AtRestEncryptionEnabled=true 参数并满足以下条件。

  • 您的复制组必须运行 Redis 版本 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。