通过修改节点类型来在线纵向扩展 - Amazon ElastiCache

通过修改节点类型来在线纵向扩展

通过对 Valkey 7.2 或更新版本或者 Redis OSS 版本 3.2.10 或更新版本使用在线垂直扩缩,您可以在最少停机时间的情况下动态扩缩 Valkey 或 Redis OSS 集群。这样,即使在扩展时,Valkey 或 Redis OSS 集群也可以处理请求。

注意

不支持在使用数据分层功能的集群(例如,使用 r6gd 节点类型的集群)和不使用数据分层功能的集群(例如,使用 r6g 节点类型的集群)之间扩缩。有关更多信息,请参阅 ElastiCache 中的数据分层

您可执行以下操作:

  • 纵向扩展 – 通过调整 Valkey 或 Redis OSS 集群的节点类型以使用较大的节点类型来增加读取和写入容量。

    ElastiCache 可动态调整集群大小,同时保持在线并处理请求。

  • 缩减 – 通过向下调整节点类型以使用较小节点来减少读写容量。同样,ElastiCache 可动态调整集群大小,同时保持在线并处理请求。在这种情况下,您可以通过缩小节点来降低成本。

注意

扩展和缩减过程依赖于使用新选择的节点类型创建集群并将新节点与先前节点同步。要确保平滑的扩展/缩减流程,请执行以下操作:

  • 确保您具有足够的 ENI(弹性网络接口)容量。如果要缩减,请确保较小的节点具有足够的内存来承受预期流量。

    有关内存管理的最佳实践,请参阅 管理 Valkey 和 Redis OSS 的预留内存

  • 虽然纵向扩展过程旨在保持完全在线,但它确实依赖于在旧节点和新节点之间同步数据。我们建议您在预期数据流量最小时启动扩展/缩减。

  • 尽可能在生产前调试环境中测试扩展期间的应用程序行为。

在线纵向扩展

纵向扩展 Valkey 或 Redis OSS 集群(控制台)

以下过程介绍了如何使用 ElastiCache 管理控制台纵向扩展 Valkey 或 Redis OSS 集群。在此过程中,集群将继续处理请求,且停机时间降至最短。

纵向扩展 Valkey 或 Redis OSS 集群(控制台)
  1. 登录 AWS 管理控制台 并打开 ElastiCache 控制台(https://console.aws.amazon.com/elasticache/)。

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

  3. 从集群列表中,选择集群。

  4. 选择 Modify(修改)。

  5. Modify Cluster 向导中:

    1. Node type 列表中选择您希望扩展到的节点类型。要扩展,请选择大于现有节点的节点类型。

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

  7. 选择 Modify(修改)。

    如果您在上一步选择了 Apply immediately,则集群的状态将变为 modifying。当状态变为 available 时,即表示修改完成,您可以开始使用新集群。

纵向扩展 Valkey 或 Redis OSS 集群(AWS CLI)

以下过程介绍如何使用 AWS CLI 纵向扩展 Valkey 或 Redis OSS 集群。在此过程中,集群将继续处理请求,且停机时间降至最短。

纵向扩展 Valkey 或 Redis OSS 集群(AWS CLI)
  1. 通过运行带以下参数的 AWS CLI list-allowed-node-type-modifications 命令,确定您可向上扩展到的节点类型。

    对于 Linux、macOS 或 Unix:

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

    对于 Windows:

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

    以上命令的输出类似于此处所示(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" ] "ScaleDownModifications": [ "cache.t2.micro", "cache.t2.small ", "cache.t2.medium", "cache.t1.small " ], }

    有关更多信息,请参阅 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-redis-cluster \ --cache-node-type cache.m3.xlarge \ --apply-immediately

    对于 Windows:

    aws elasticache modify-replication-group ^ --replication-group-id my-redis-cluster ^ --cache-node-type cache.m3.xlarge ^ --apply-immediately

    以上命令的输出类似于此处所示(JSON 格式)。

    { "ReplicationGroup": { "Status": "modifying", "Description": "my-redis-cluster", "NodeGroups": [ { "Status": "modifying", "Slots": "0-16383", "NodeGroupId": "0001", "NodeGroupMembers": [ { "PreferredAvailabilityZone": "us-east-1f", "CacheNodeId": "0001", "CacheClusterId": "my-redis-cluster-0001-001" }, { "PreferredAvailabilityZone": "us-east-1d", "CacheNodeId": "0001", "CacheClusterId": "my-redis-cluster-0001-002" } ] } ], "ConfigurationEndpoint": { "Port": 6379, "Address": "my-redis-cluster.r7gdfi.clustercfg.use1.cache.amazonaws.com" }, "ClusterEnabled": true, "ReplicationGroupId": "my-redis-cluster", "SnapshotRetentionLimit": 1, "AutomaticFailover": "enabled", "SnapshotWindow": "07:30-08:30", "MemberClusters": [ "my-redis-cluster-0001-001", "my-redis-cluster-0001-002" ], "CacheNodeType": "cache.m3.xlarge", "DataTiering": "disabled" "PendingModifiedValues": {} } }

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

  3. 如果您使用了 --apply-immediately,请使用带以下参数的 AWS CLI describe-cache-clusters 命令检查集群的状态。当状态变为 available 时,您便可开始使用较大的新集群节点。

纵向扩展 Valkey 或 Redis OSS 集群(ElastiCache API)

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

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

纵向扩展 Valkey 或 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. 使用带以下参数的 ModifyReplicationGroup ElastiCache API 操作将当前复制组扩展为新的节点类型。

    • ReplicationGroupId – 复制组的名称。

    • CacheNodeType – 此复制组中集群的较大新节点类型。此值必须是上一步中由 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。

在线缩减

纵向缩减 Valkey 或 Redis OSS 集群(控制台)

以下过程介绍如何使用 ElastiCache 管理控制台缩减 Valkey 或 Redis OSS 集群。在此过程中,您的 Valkey 或 Redis OSS 集群将继续处理请求,且停机时间降至最短。

缩减 Valkey 或 Redis OSS 集群(控制台)
  1. 登录 AWS 管理控制台 并打开 ElastiCache 控制台(https://console.aws.amazon.com/elasticache/)。

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

  3. 从集群列表中,选择首选集群。

  4. 选择 Modify(修改)。

  5. Modify Cluster 向导中:

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

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

  7. 选择 Modify(修改)。

    如果您在上一步选择了 Apply immediately,则集群的状态将变为 modifying。当状态变为 available 时,即表示修改完成,您可以开始使用新集群。

纵向缩减 Valkey 或 Redis OSS 集群(AWS CLI)

以下过程介绍如何使用 AWS CLI 纵向缩减 Valkey 或 Redis OSS 集群。在此过程中,集群将继续处理请求,且停机时间降至最短。

纵向缩减 Valkey 或 Redis OSS 集群(AWS CLI)
  1. 通过运行带以下参数的 AWS CLI list-allowed-node-type-modifications 命令,确定您可缩减为的节点类型。

    对于 Linux、macOS 或 Unix:

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

    对于 Windows:

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

    以上命令的输出类似于此处所示(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" ] "ScaleDownModifications": [ "cache.t2.micro", "cache.t2.small ", "cache.t2.medium ", "cache.t1.small" ] }

    有关更多信息,请参阅 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-redis-cluster \ --cache-node-type cache.t2.micro \ --apply-immediately

    对于 Windows:

    aws elasticache modify-replication-group ^ --replication-group-id my-redis-cluster ^ --cache-node-type cache.t2.micro ^ --apply-immediately

    以上命令的输出类似于此处所示(JSON 格式)。

    { "ReplicationGroup": { "Status": "modifying", "Description": "my-redis-cluster", "NodeGroups": [ { "Status": "modifying", "Slots": "0-16383", "NodeGroupId": "0001", "NodeGroupMembers": [ { "PreferredAvailabilityZone": "us-east-1f", "CacheNodeId": "0001", "CacheClusterId": "my-redis-cluster-0001-001" }, { "PreferredAvailabilityZone": "us-east-1d", "CacheNodeId": "0001", "CacheClusterId": "my-redis-cluster-0001-002" } ] } ], "ConfigurationEndpoint": { "Port": 6379, "Address": "my-redis-cluster.r7gdfi.clustercfg.use1.cache.amazonaws.com" }, "ClusterEnabled": true, "ReplicationGroupId": "my-redis-cluster", "SnapshotRetentionLimit": 1, "AutomaticFailover": "enabled", "SnapshotWindow": "07:30-08:30", "MemberClusters": [ "my-redis-cluster-0001-001", "my-redis-cluster-0001-002" ], "CacheNodeType": "cache.t2.micro", "DataTiering": "disabled" "PendingModifiedValues": {} } }

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

  3. 如果您使用了 --apply-immediately,请使用带以下参数的 AWS CLI describe-cache-clusters 命令检查集群的状态。当状态变为 available 时,您便可开始使用较小的新集群节点。

纵向缩减 Valkey 或 Redis OSS 集群(ElastiCache API)

以下过程使用 ElastiCache API 将复制组从其当前节点类型缩减为较小的新节点类型。在此过程中,您的 Valkey 或 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. 使用带以下参数的 ModifyReplicationGroup ElastiCache API 操作将当前复制组缩减为新的节点类型。

    • ReplicationGroupId – 复制组的名称。

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

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

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

    https://elasticache.us-west-2.amazonaws.com/ ?Action=ModifyReplicationGroup &ApplyImmediately=true &CacheNodeType=cache.t2.micro &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。