缩减具有副本的 Redis 集群 - ElastiCache 适用于 Redis 的 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

缩减具有副本的 Redis 集群

以下部分介绍了如何将具有副本节点的 Redis(已禁用集群模式)缓存集群缩减为较小的节点类型。确保较小的新节点类型足以容纳所有数据和开销对成功非常重要。有关更多信息,请参阅确保具有用于创建 Redis 快照的足够内存

注意

对于运行 r6gd 节点类型的集群,您只能在 r6gd 节点系列的节点大小范围内扩缩。

重要

如果您的参数组使用 reserved-memory 为 Redis 开销留出一些内存,则在开始扩展之前,请确保您具有为新节点类型预留正确内存量的自定义参数组。或者,您可以修改自定义参数组以便使用 reserved-memory-percent,并为您的新集群使用该参数组。

如果您在使用 reserved-memory-percent,则这不是必需的。

有关更多信息,请参阅管理预留内存

主题

    以下过程使用 ElastiCache 控制台将具有副本节点的 Redis 集群缩减为较小的节点类型。

    缩减具有副本节点的 Redis 集群(控制台)
    1. 确保较小的节点类型足以满足您的数据和开销需求。

    2. 如果您的参数组使用 reserved-memory 为 Redis 开销留出一些内存,请确保您具有为新节点类型预留正确内存量的自定义参数组。

      或者,您可以修改自定义参数组以使用 reserved-memory-percent。有关更多信息,请参阅管理预留内存

    3. 登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台 (https://console.aws.amazon.com/elasticache/)。

    4. 从集群列表中,选择要缩减的集群。该集群必须运行 Redis 引擎,而不是集群化 Redis 引擎。

    5. 选择 Modify(修改)。

    6. Modify Cluster 向导中:

      1. Node type (节点类型) 列表中选择您希望缩减到的节点类型。

      2. 如果您在使用 reserved-memory 管理内存,请从 Parameter Group 列表中,选择为新节点类型预留正确内存量的自定义参数组。

    7. 如果您要立即执行缩减过程,请选中 Apply immediately (立即应用) 复选框。如果 Apply immediately (立即应用) 复选框处于未选中状态,则在此集群的下一维护时段内执行缩减过程。

    8. 选择 Modify(修改)。

    9. 当集群的状态从 modifying 变为 available 时,即表示您的集群已扩展为新的节点类型。无需更新应用程序中的终端节点。

    以下过程使用 Amazon CLI 将复制组从其当前节点类型收缩为较小的新节点类型。在此过程中,ElastiCache for Redis 会更新 DNS 条目使其指向新的节点。因此,您便不需要更新应用程序中的终端节点。对于 Redis 5.0.5 及更高版本,您可以在该集群继续保持在线并处理传入请求时扩展启用自动故障转移的集群。在版本 4.0.10 及更低版本上,更新 DNS 条目时,您可能会发现先前版本上来自主节点的读取和写入短暂中断。

    但是,只读副本缓存集群的读取继续不受干扰地进行。

    缩减为较小的节点类型所需的时间因节点类型和当前缓存集群中的数据量而异。

    缩减 Redis 复制组 (Amazon CLI)
    1. 通过运行带以下参数的 Amazon CLI list-allowed-node-type-modifications 命令,确定您可收缩到的节点类型。

      • --replication-group-id – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

      对于 Linux、macOS 或 Unix:

      aws elasticache list-allowed-node-type-modifications \ --replication-group-id my-repl-group

      对于 Windows:

      aws elasticache list-allowed-node-type-modifications ^ --replication-group-id my-repl-group

      该操作的输出内容应类似如下所示 (JSON 格式)。

      { "ScaleDownModifications": [ "cache.m3.2xlarge", "cache.m3.large", "cache.m3.xlarge", "cache.m4.10xlarge", "cache.m4.2xlarge", "cache.m4.4xlarge", "cache.m4.large", "cache.m4.xlarge", "cache.r3.2xlarge", "cache.r3.4xlarge", "cache.r3.8xlarge", "cache.r3.large", "cache.r3.xlarge" ] }

      有关更多信息,请参阅 Amazon CLI 参考中的 list-allowed-node-type-modifications。

    2. 使用带以下参数的 Amazon CLI modify-replication-group 命令将当前复制组扩展为新的节点类型。

      • --replication-group-id – 复制组的名称。

      • --cache-node-type – 此复制组中缓存集群的较小新节点类型。此值必须是步骤 1 中由 list-allowed-node-type-modifications 命令返回的实例类型之一。

      • --cache-parameter-group-name – [可选] 如果您使用 reserved-memory 管理集群的预留内存,则使用此参数。指定为您的新节点类型预留正确内存量的自定义缓存参数组。如果您在使用 reserved-memory-percent,则可以忽略此参数。

      • --apply-immediately – 使纵向扩展过程立即得到应用。要将扩展操作推迟到下一维护时段,请使用 --no-apply-immediately

      对于 Linux、macOS 或 Unix:

      aws elasticache modify-replication-group \ --replication-group-id my-repl-group \ --cache-node-type cache.t2.small \ --cache-parameter-group-name redis32-m3-2xl \ --apply-immediately

      对于 Windows:

      aws elasticache modify-replication-group ^ --replication-group-id my-repl-group ^ --cache-node-type cache.t2.small ^ --cache-parameter-group-name redis32-m3-2xl \ --apply-immediately

      该命令的输出内容应类似如下所示 (JSON 格式)。

      {"ReplicationGroup": { "Status": "available", "Description": "Some description", "NodeGroups": [ { "Status": "available", "NodeGroupMembers": [ { "CurrentRole": "primary", "PreferredAvailabilityZone": "us-west-2b", "CacheNodeId": "0001", "ReadEndpoint": { "Port": 6379, "Address": "my-repl-group-001.8fdx4s.0001.usw2.cache.amazonaws.com" }, "CacheClusterId": "my-repl-group-001" }, { "CurrentRole": "replica", "PreferredAvailabilityZone": "us-west-2c", "CacheNodeId": "0001", "ReadEndpoint": { "Port": 6379, "Address": "my-repl-group-002.8fdx4s.0001.usw2.cache.amazonaws.com" }, "CacheClusterId": "my-repl-group-002" } ], "NodeGroupId": "0001", "PrimaryEndpoint": { "Port": 6379, "Address": "my-repl-group.8fdx4s.ng.0001.usw2.cache.amazonaws.com" } } ], "ReplicationGroupId": "my-repl-group", "SnapshotRetentionLimit": 1, "AutomaticFailover": "disabled", "SnapshotWindow": "12:00-13:00", "SnapshottingClusterId": "my-repl-group-002", "MemberClusters": [ "my-repl-group-001", "my-repl-group-002", ], "PendingModifiedValues": {} } }

      有关更多信息,请参阅 Amazon CLI 参考中的 modify-replication-group。

    3. 如果您使用了 --apply-immediately 参数,请使用带以下参数的 Amazon CLI describe-replication-group 命令监控复制组的状态。当状态从 modifying 变为 available 时,您便可开始写入已收缩的新复制组。

      • --replication-group-id – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

      对于 Linux、macOS 或 Unix:

      aws elasticache describe-replication-group \ --replication-group-id my-replication-group

      对于 Windows:

      aws elasticache describe-replication-groups ^ --replication-group-id my-replication-group

      有关更多信息,请参阅 Amazon CLI 参考中的 describe-replication-groups

    以下过程使用 ElastiCache API 将复制组从其当前节点类型缩减为较小的新节点类型。在此过程中,ElastiCache for Redis 会更新 DNS 条目使其指向新的节点。因此,您便不需要更新应用程序中的终端节点。对于 Redis 5.0.5 及更高版本,您可以在该集群继续保持在线并处理传入请求时扩展启用自动故障转移的集群。在版本 4.0.10 及更低版本上,更新 DNS 条目时,您可能会发现先前版本上来自主节点的读取和写入短暂中断。但是,只读副本缓存集群的读取继续不受干扰地进行。

    缩减为较小的节点类型所需的时间因节点类型和当前缓存集群中的数据量而异。

    缩减 Redis 复制组 (ElastiCache API)
    1. 使用带以下参数的 ElastiCache API ListAllowedNodeTypeModifications 操作确定您可缩减为的节点类型。

      • ReplicationGroupId – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

      https://elasticache.us-west-2.amazonaws.com/ ?Action=ListAllowedNodeTypeModifications &ReplicationGroupId=MyReplGroup &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>

      有关更多信息,请参阅 Amazon ElastiCache API 参考中的 ListAllowedNodeTypeModifications。

    2. 使用带以下参数的 ModifyRedplicationGroup ElastiCache API 操作将当前复制组扩展为新的节点类型。

      • ReplicationGroupId – 复制组的名称。

      • CacheNodeType – 此复制组中缓存集群的较小新节点类型。此值必须是步骤 1 中由 ListAllowedNodeTypeModifications 操作返回的实例类型之一。

      • CacheParameterGroupName – [可选] 如果您使用 reserved-memory 管理集群的预留内存,则使用此参数。指定为您的新节点类型预留正确内存量的自定义缓存参数组。如果您在使用 reserved-memory-percent,则可以忽略此参数。

      • ApplyImmediately – 设置为 true 可促使立即应用纵向扩展流程。要将缩减流程推迟到下一维护时段,请使用 ApplyImmediately=false

      https://elasticache.us-west-2.amazonaws.com/ ?Action=ModifyReplicationGroup &ApplyImmediately=true &CacheNodeType=cache.m3.2xlarge &CacheParameterGroupName=redis32-m3-2xl &ReplicationGroupId=myReplGroup &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &Version=2014-12-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

      有关更多信息,请参阅 Amazon ElastiCache API 参考中的 ModifyReplicationGroup。

    3. 如果您使用了 ApplyImmediately=true,请使用带以下参数的 ElastiCache API DescribeReplicationGroups 操作监控复制组的状态。当状态从 modifying 变为 available 时,您便可开始写入已收缩的新复制组。

      • ReplicationGroupId – 复制组的名称。使用此参数可描述特定复制组而非所有复制组。

      https://elasticache.us-west-2.amazonaws.com/ ?Action=DescribeReplicationGroups &ReplicationGroupId=MyReplGroup &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>

      有关更多信息,请参阅 Amazon ElastiCache API 参考中的 DescribeReplicationGroups。