Amazon ElastiCache
用户指南 (API Version 2015-02-02)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

扩展具有副本的 Redis 集群

重要

由于 Redis (已启用集群模式) 当前存在的限制,要扩展节点组数或具有副本的 Redis (已启用集群模式)集群的节点组中的节点类型,您必须创建一个具有新节点组数或节点类型的新 Redis (已启用集群模式)集群,然后删除旧集群。

Amazon ElastiCache 提供控制台、CLI 和 API 支持,可用于纵向扩展 Redis (已禁用集群模式) 复制组。

启动扩展流程时,ElastiCache 执行以下操作:

  1. 阻止对主节点的所有读写操作。从副本的读取将继续直至步骤 5,此时 ElastiCache 将您从当前副本切换到新副本,读取短暂中断。

  2. 使用新节点类型启动新的 Redis 复制组。

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

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

  5. 更新 DNS 条目使其指向新的节点。因此,您便不需要更新应用程序中的终端节点。

    重要

    当 ElastiCache 从当前副本切换到新副本时,从只读副本节点进行的读取将中断。

  6. 恢复对新的主节点的读写操作。

  7. 删除旧群集 (CLI/API:复制组)。

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

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

阻止的 Redis 操作

待处理的操作 阻止的操作
纵向扩展 立即引擎升级
引擎升级 立即纵向扩展
纵向扩展和引擎升级 立即纵向扩展
立即引擎升级

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

  • 通过清除 Apply immediately 复选框(CLI 使用:--no-apply-immediately,API 使用:ApplyImmediately=false),将 Redis 扩展操作安排在下一维护时段内。

  • 等到下一维护时段(或之后)再执行 Redis 纵向扩展操作。

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

以下部分介绍如何使用 ElastiCache 控制台、AWS CLI 和 ElastiCache API 纵向扩展具有副本的 Redis 集群。

重要

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

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

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

扩展具有副本的 Redis 集群(控制台)

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

以下过程使用 ElastiCache 控制台将具有副本的集群从其当前节点类型扩展为较大的新节点类型。此过程中,在状态从 modifying 变为 available 之前,阻止应用程序与主缓存集群之间的所有读写操作。

扩展具有副本的 Redis 群集(控制台)

  1. 登录 AWS 管理控制台 并通过以下网址打开 ElastiCache 控制台:https://console.amazonaws.cn/elasticache/

  2. 在左侧导航窗格中,选择 Redis

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

  4. 选择 Modify

  5. Modify Cluster 向导中:

    1. Node type 列表中选择您希望扩展到的节点类型。

      此列表标识您可纵向扩展为的所有节点类型。

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

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

  7. 选择 Modify

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

扩展 Redis 复制组 (AWS CLI)

以下过程使用 AWS CLI 将复制组 (控制台:具有副本的集群) 从其当前节点类型扩展为较大的新节点类型。此过程中,在状态从 modifying 变为 available 之前,阻止应用程序与主缓存集群之间的所有读写操作。

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

扩展 Redis 复制组 (AWS CLI)

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

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

    对于 Linux, OS X, or Unix:

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

    对于 Windows:

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

    此操作的输出将类似于下文。

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

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

  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, OS X, or Unix:

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

    对于 Windows:

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

    该命令的输出类似于此处所示。

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

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

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

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

    对于 Linux, OS X, or Unix:

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

    对于 Windows:

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

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

扩展 Redis 复制组 (ElastiCache API)

以下过程使用 ElastiCache API 将复制组从其当前节点类型扩展为较大的新节点类型。此过程中,在状态从 modifying 变为 available 之前,阻止应用程序与主缓存集群之间的所有读写操作。但是,只读副本缓存集群的读取继续不受干扰地进行。

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

扩展 Redis 复制组 (ElastiCache API)

  1. 使用带以下参数的 ElastiCache API ListAllowedNodeTypeModifications 操作确定您可纵向扩展为的节点类型。

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

    Copy
    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>

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

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

    • ReplicationGroupId - 复制组的名称。

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

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

    • ApplyImmediately - 设置为 true 可导致立即应用扩展流程。要将扩展流程推迟到下一维护时段,请使用 ApplyImmediately=false

    Copy
    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=AWS4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

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

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

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

    Copy
    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>

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