Scaling down Redis OSS clusters with replicas
The following sections walk you through how to scale a Redis OSS (cluster mode disabled) cache cluster with replica nodes down to a smaller node type. Ensuring that the new, smaller node type is large enough to accommodate all the data and overhead is very important to success. For more information, see Ensuring you have enough memory to make a Redis OSS snapshot.
Note
For clusters running the r6gd node type, you can only scale to node sizes within the r6gd node family.
Important
If your parameter group uses reserved-memory
to set aside memory for Redis OSS overhead, before you begin scaling be sure that you have a custom parameter
group that reserves the correct amount of memory for your new node type.
Alternatively, you can modify a custom parameter group so that it uses
reserved-memory-percent
and use that parameter group for your
new cluster.
If you're using reserved-memory-percent
, doing this is not necessary.
For more information, see Managing Reserved Memory.
Topics
The following process scales your Redis OSS cluster with replica nodes to a smaller node type using the ElastiCache console.
To scale down a Redis OSS cluster with replica nodes (console)
-
Ensure that the smaller node type is adequate for your data and overhead needs.
-
If your parameter group uses
reserved-memory
to set aside memory for Redis OSS overhead, ensure that you have a custom parameter group to set aside the correct amount of memory for your new node type.Alternatively, you can modify your custom parameter group to use
reserved-memory-percent
. For more information, see Managing Reserved Memory. -
Sign in to the AWS Management Console and open the ElastiCache console at https://console.aws.amazon.com/elasticache/
. -
From the list of clusters, choose the cluster you want to scale down. This cluster must be running the Redis OSS engine and not the Clustered Redis OSS engine.
-
Choose Modify.
-
In the Modify Cluster wizard:
-
Choose the node type you want to scale down to from the Node type list.
-
If you're using
reserved-memory
to manage your memory, from the Parameter Group list, choose the custom parameter group that reserves the correct amount of memory for your new node type.
-
-
If you want to perform the scale-down process right away, choose the Apply immediately check box. If the Apply immediately check box is left not chosen, the scale-down process is performed during this cluster's next maintenance window.
-
Choose Modify.
-
When the cluster’s status changes from modifying to available, your cluster has scaled to the new node type. There is no need to update the endpoints in your application.
The following process scales your replication group from its current node type to a new, smaller node type using the AWS CLI. During this process, ElastiCache (Redis OSS) updates the DNS entries so they point to the new nodes. Because of this you don't have to update the endpoints in your application. For Redis OSS 5.0.5 and above, you can scale auto failover enabled clusters while the cluster continues to stay online and serve incoming requests. On version 4.0.10 and below, you may notice a brief interruption of reads and writes on previous versions from the primary node while the DNS entry is updated..
However, reads from the read replica cache clusters continue uninterrupted.
The amount of time it takes to scale down to a smaller node type varies, depending upon your node type and the amount of data in your current cache cluster.
To scale down a Redis OSS Replication Group (AWS CLI)
-
Determine which node types you can scale down to by running the AWS CLI
list-allowed-node-type-modifications
command with the following parameter.--replication-group-id
– the name of the replication group. Use this parameter to describe a particular replication group rather than all replication groups.
For Linux, macOS, or Unix:
aws elasticache list-allowed-node-type-modifications \ --replication-group-id
my-repl-group
For Windows:
aws elasticache list-allowed-node-type-modifications ^ --replication-group-id
my-repl-group
Output from this operation looks something like this (JSON format).
{ "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" ] }
For more information, see list-allowed-node-type-modifications in the AWS CLI Reference.
-
Scale your current replication group up to the new node type using the AWS CLI
modify-replication-group
command with the following parameters.--replication-group-id
– the name of the replication group.--cache-node-type
– the new, smaller node type of the cache clusters in this replication group. This value must be one of the instance types returned by thelist-allowed-node-type-modifications
command in the previous step.--cache-parameter-group-name
– [Optional] Use this parameter if you are usingreserved-memory
to manage your cluster's reserved memory. Specify a custom cache parameter group that reserves the correct amount of memory for your new node type. If you are usingreserved-memory-percent
you can omit this parameter.--apply-immediately
– Causes the scale-up process to be applied immediately. To postpone the scale-up operation to the next maintenance window, use--no-apply-immediately
.
For Linux, macOS, or Unix:
aws elasticache modify-replication-group \ --replication-group-id
my-repl-group
\ --cache-node-typecache.t2.small
\ --cache-parameter-group-nameredis32-m3-2xl
\ --apply-immediatelyFor Windows:
aws elasticache modify-replication-group ^ --replication-group-id
my-repl-group
^ --cache-node-typecache.t2.small
^ --cache-parameter-group-nameredis32-m3-2xl
\ --apply-immediatelyOutput from this command looks something like this (JSON format).
{"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": {} } }
For more information, see modify-replication-group in the AWS CLI Reference.
-
If you used the
--apply-immediately
parameter, monitor the status of the replication group using the AWS CLIdescribe-replication-group
command with the following parameter. When the status changes from modifying to available, you can begin writing to your new, scaled down replication group.--replication-group-id
– the name of the replication group. Use this parameter to describe a particular replication group rather than all replication groups.
For Linux, macOS, or Unix:
aws elasticache describe-replication-group \ --replication-group-id
my-replication-group
For Windows:
aws elasticache describe-replication-groups ^ --replication-group-id
my-replication-group
For more information, see describe-replication-groups in the AWS CLI Reference.
The following process scales your replication group from its current node type to a new, smaller node type using the ElastiCache API. During this process, ElastiCache (Redis OSS) updates the DNS entries so they point to the new nodes. Because of this you don't have to update the endpoints in your application. For Redis OSS 5.0.5 and above, you can scale auto failover enabled clusters while the cluster continues to stay online and serve incoming requests. On version 4.0.10 and below, you may notice a brief interruption of reads and writes on previous versions from the primary node while the DNS entry is updated.. However, reads from the read replica cache clusters continue uninterrupted.
The amount of time it takes to scale down to a smaller node type varies, depending upon your node type and the amount of data in your current cache cluster.
To scale down a Redis OSS Replication Group (ElastiCache API)
-
Determine which node types you can scale down to using the ElastiCache API
ListAllowedNodeTypeModifications
action with the following parameter.ReplicationGroupId
– the name of the replication group. Use this parameter to describe a specific replication group rather than all replication groups.
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>
For more information, see ListAllowedNodeTypeModifications in the Amazon ElastiCache API Reference.
-
Scale your current replication group up to the new node type using the
ModifyRedplicationGroup
ElastiCache API action and with the following parameters.ReplicationGroupId
– the name of the replication group.CacheNodeType
– the new, smaller node type of the cache clusters in this replication group. This value must be one of the instance types returned by theListAllowedNodeTypeModifications
action in the previous step.CacheParameterGroupName
– [Optional] Use this parameter if you are usingreserved-memory
to manage your cluster's reserved memory. Specify a custom cache parameter group that reserves the correct amount of memory for your new node type. If you are usingreserved-memory-percent
you can omit this parameter.ApplyImmediately
– Set totrue
to causes the scale-up process to be applied immediately. To postpone the scale-down process to the next maintenance window, useApplyImmediately
=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>
For more information, see ModifyReplicationGroup in the Amazon ElastiCache API Reference.
-
If you used
ApplyImmediately
=true
, monitor the status of the replication group using the ElastiCache APIDescribeReplicationGroups
action with the following parameters. When the status changes from modifying to available, you can begin writing to your new, scaled down replication group.ReplicationGroupId
– the name of the replication group. Use this parameter to describe a particular replication group rather than all replication groups.
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>
For more information, see DescribeReplicationGroups in the Amazon ElastiCache API Reference.