使用副本扩展 Redis OSS 集群 - 亚马逊 ElastiCache (Redis OSS)

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

使用副本扩展 Redis OSS 集群

亚马逊 ElastiCache 提供控制台、CLI 和 API 支持,用于向上扩展您的 Redis OSS(已禁用集群模式)复制组。

启动放大过程后, ElastiCache 会执行以下操作:

  1. 使用新节点类型启动复制组。

  2. 将当前主节点中的所有数据复制到新的主节点。

  3. 将新的只读副本与新的主节点同步。

  4. 更新 DNS 条目使其指向新的节点。因此,您便不需要更新应用程序中的终端节点。对于 Redis OSS 5.0.5 及更高版本,您可以在集群继续保持在线状态并处理传入请求的同时,扩展启用自动故障转移的集群。在版本 4.0.10 及更低版本上,更新 DNS 条目时,您可能会发现先前版本上来自主节点的读取和写入短暂中断。

  5. 删除旧节点(CLI/API:复制组)。由于与旧节点之间的连接会断开,您会发现旧节点的读取和写入出现短暂中断(几秒钟)。

此过程所需的时间取决于您的节点类型以及集群中的数据量。

如下表所示,如果您在集群的下一个维护时段安排了引擎升级,则会阻止您的 Redis OSS 向上扩展操作。

已屏蔽的 Redis OSS 操作
待处理的操作 阻止的操作
纵向扩展 立即引擎升级
引擎升级 立即纵向扩展
纵向扩展和引擎升级 立即纵向扩展
立即引擎升级

如果有待处理的操作正在阻止您,您可以执行以下操作之一。

  • 清除 “立即应用” 复选框(CLI 使用:,API 使用:--no-apply-immediately),将您的 Redis OSS 向上扩展操作安排到下一个维护时段。ApplyImmediately=false

  • 等到下一个维护时段(或之后)才执行 Redis OSS 扩展操作。

  • 选中 “立即应用” 复选框(CLI 使用:,API 使用:--apply-immediatelyApplyImmediately=true),将 Redis OSS 引擎升级添加到此缓存集群修改中。这将导致立即执行引擎升级,从而取消阻止纵向扩展操作。

以下各节介绍如何使用 ElastiCache 控制台、和 API 使用副本向上扩展 Redis OSS 集群。 AWS CLI ElastiCache

重要

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

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

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

扩展为较大的节点类型所需的时间因节点类型和当前集群中的数据量不同而异。

以下过程使用 ElastiCache 控制台将带有副本的集群从当前节点类型扩展到新的更大的节点类型。在此过程中,更新 DNS 条目时,其他版本的主节点可能会短暂中断读取和写入。对于在 5.0.6 版本以更高版本上运行的节点,可能会出现不到一秒钟的停机时间;对于较早的版本,则可能会出现几秒钟的停机时间。

使用副本扩展 Redis OSS 集群(控制台)
  1. 登录 AWS Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/

  2. 在导航窗格中,选择 Redis OSS 集群

  3. 从集群列表中,选择要扩展的集群。该集群必须运行 Redis OSS 引擎,而不是集群化 Redis OSS 引擎。

  4. 选择 Modify(修改)。

  5. Modify Cluster 向导中:

    1. Node type 列表中选择您希望扩展到的节点类型。请注意,并不是可缩减到所有节点类型。

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

  6. 如果您要立即执行纵向扩展流程,请选中 Apply immediately 复选框。如果 Apply immediately 复选框处于未选中状态,则在此集群的下一维护时段内执行纵向扩展过程。

  7. 选择 Modify(修改)。

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

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

向上扩展为较大的节点类型所需的时间因节点类型和当前缓存集群中的数据量不同而异。

扩展 Redis OSS 复制组 ()AWS CLI
  1. 通过运行带有以下参数的 AWS 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 格式)。

    { "ScaleUpModifications": [ "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" ] }

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

  2. 使用带有以下参数的 AWS 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.m3.xlarge \ --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.m3.xlarge ^ --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": {} } }

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

  3. 如果您使用了--apply-immediately参数,请使用带有以下参数的 AWS CLI describe-replication-group命令监控复制组的状态。当状态仍处于正在修改时,在更新 DNS 条目时,在 5.0.6 版本及更高版本上运行的节点可能会出现不到一秒钟的停机时间,以及较早版本上来自主节点的读取和写入出现短暂中断。

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

    对于 Linux、macOS 或 Unix:

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

    对于 Windows:

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

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

以下过程使用 ElastiCache API 将您的复制组从其当前节点类型扩展到新的更大的节点类型。对于 Redis OSS 5.0.5 及更高版本,您可以在集群继续保持在线状态并处理传入请求的同时,扩展启用自动故障转移的集群。在版本 4.0.10 及更低版本上,更新 DNS 条目时,您可能会发现先前版本上来自主节点的读取和写入短暂中断。

向上扩展为较大的节点类型所需的时间因节点类型和当前缓存集群中的数据量不同而异。

扩展 Redis OSS 复制组 (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中的。