更新时间:2024-10-30 GMT+08:00

变更DCS实例规格

DCS管理控制台支持变更Redis和Memcached缓存实例规格,即变更实例的类型、内存规格或副本数,您可以根据实际需要,选择合适的实例规格。

  • 执行实例变更规格,建议在业务低峰期操作。业务高峰期(如实例在内存利用率、CPU利用率达到90%以上或写入流量过大)变更规格可能会失败,若变更失败,请在业务低峰期再次尝试变更。
  • 如果实例创建时间非常早,由于实例版本没有升级而无法兼容规格变更(扩容/缩容)功能,请联系技术支持将缓存实例升级到最新版本,升级后就可以支持规格变更(扩容/缩容)功能。
  • 实例变更规格,不会影响实例的连接地址、访问密码、数据、及安全组/白名单配置等信息,也不需要重启实例。

实例类型变更须知

表1 DCS实例类型变更明细

实例版本

支持的实例变更类型

变更须知及影响

Redis 3.0

单机实例变更为主备实例

连接会有秒级中断,大约1分钟左右的只读。

主备实例变更为Proxy集群实例

  1. 如果Redis 3.0主备实例数据存储在多DB上,或数据存储在非DB0上,不支持变更为Proxy集群;数据必须是只存储在DB0上的主备实例才支持变更为Proxy集群。
  2. 连接会中断,5~30分钟只读。

Memcached

单机实例变更为主备实例

会有秒级业务中断、大约1分钟只读。

Redis 4.0/5.0/6.0

主备实例或读写分离实例变更为Proxy集群实例

  1. 变更为proxy集群时,需要评估proxy集群的多DB使用限制和命令使用限制对业务的影响。具体请参考proxy集群使用多DB限制实例受限使用命令
  2. 变更前实例的已用内存必须小于变更后最大内存的70%,否则将不允许变更。
  3. 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。
  4. 变更完成后需要对实例重新创建告警规则
  5. 如果原实例是主备实例,请确保应用中没有直接引用只读IP或只读域名。
  6. 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。
  7. 变更规格过程中会有秒级业务中断、大约1分钟只读,建议在业务低峰时进行变更。

Proxy集群实例变更为主备实例或读写分离实例

Redis 4.0/5.0/6.0

主备实例变更为读写分离实例

说明:

读写分离实例暂不支持直接变更为主备实例。

  1. 目前只支持主备实例变更为相同容量的读写分离实例,小于4G规格的主备实例不支持变更为读写分离实例。
  2. 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。
  3. 变更完成后需要对实例重新创建告警规则
  4. 请确保主备实例的应用中没有直接引用只读IP或只读域名。
  5. 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。
  6. 变更规格过程中会有秒级业务中断,建议在业务低峰时进行变更。
  7. 主备实例如果创建了ACL账号,不支持变更为读写分离实例。
  8. Redis 6.0如果开启了SSL链路加密传输,不支持变更为读写分离实例。

除了上表中提到的实例外,其他实例类型目前不支持实例类型的变更,若您想实现跨实例类型的规格变更,可参考使用迁移任务在线迁移Redis实例进行操作。

实例类型变更后支持的命令,请参考对应的开源命令兼容性

实例规格变更须知

  • 支持实例规格变更明细如下:
    表2 实例规格变更明细

    缓存类型

    单机实例

    主备实例

    Cluster集群实例

    Proxy集群实例

    读写分离实例

    Redis 3.0

    支持扩容和缩容

    支持扩容和缩容

    -

    仅支持扩容

    -

    Redis 4.0

    支持扩容和缩容

    支持扩容、缩容和副本数变更

    支持扩容、缩容和副本数变更

    支持扩容和缩容

    支持扩容、缩容和副本数变更

    Redis 5.0

    支持扩容和缩容

    支持扩容、缩容和副本数变更

    支持扩容、缩容和副本数变更

    支持扩容和缩容

    支持扩容、缩容和副本数变更

    Redis 6.0 基础版

    支持扩容和缩容

    支持扩容、缩容和副本数变更

    支持扩容、缩容和副本数变更

    支持扩容和缩容

    支持扩容、缩容和副本数变更

    Redis 6.0 企业版

    -

    支持扩容和缩容

    -

    -

    -

    Memcached

    支持扩容和缩容

    支持扩容和缩容

    -

    -

    -

    • Redis 3.0和Memcached实例在预留内存不足的情况下,内存用满可能会导致扩容失败,具体可参考预留内存
    • 副本数变更和容量变更不支持同时进行,需分开两次执行变更。
    • 删除副本时,每次操作仅支持删除一个副本。
  • 实例规格变更的影响:
    表3 实例规格变更的影响

    实例类型

    规格变更类型

    实例规格变更的影响

    单机、主备和读写分离实例

    扩容/缩容

    • Redis 4.0及以上版本基础版实例,扩容期间连接会有秒级中断,大约1分钟的只读,缩容期间连接不会中断。
    • Redis 3.0实例,规格变更期间连接会有秒级中断,5~30分钟只读。
    • Redis企业版实例,规格变更期间连接会有秒级中断,大约1分钟的只读。
    • 如果是扩容,只扩大实例的内存,不会提升CPU处理能力。
    • 单机实例不支持持久化,变更规格不能保证数据可靠性。在实例变更后,需要确认数据完整性以及是否需要再次填充数据。如果有重要数据,建议先把数据用迁移工具迁移到其他实例备份。
    • 主备和读写分离实例缩容前的备份记录,缩容后不能使用。如有需要请提前下载备份文件,或缩容后重新备份。

    Proxy和Cluster集群实例

    扩容/缩容

    • 水平扩容(分片数增加):
      • 连接不中断,但会占用CPU,导致性能有20%以内的下降。
      • 分片数增加时,会新增数据节点,数据自动负载均衡到新的数据节点,访问时延会增大。
    • 水平缩容(分片数减少):
      • 分片数减少时,会删除节点。Cluster集群实例缩容前,请确保应用中没有直接引用这些删除的节点,否则可能导致业务访问异常。
      • 删除节点会导致连接闪断,请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后可能需要重启客户端应用
    • 垂直扩容(分片数不变,分片容量增加):
      • 如果节点所在的虚拟机内存容量不足,会发生节点迁移,迁移时业务连接会有闪断和只读。
      • 如果虚拟机内存容量充足,则直接扩大节点容量,对业务无影响。
      说明:

      Redis 3.0版本集群实例不支持垂直扩缩容。

    • 垂直缩容(分片数不变,分片容量减少):无影响。
    • 实例缩容前,每个节点的已用内存要小于缩容后节点最大内存的70%,否则将不允许变更。
    • 实例规格变更期间,可能会进行数据迁移,访问时延会增大。Cluster集群请确保客户端能正常处理MOVED和ASK命令,否则会导致请求失败。
    • 实例规格变更期间,如果有大批量数据写入导致节点内存写满,将会导致变更失败。
    • 在实例规格变更前,请先使用缓存分析中的大key分析,确保实例中没有大key存在,否则在规格改变后,节点间进行数据迁移的过程中,单个key过大(≥512MB)会触发Redis内核对于单key的迁移限制,造成数据迁移超时失败,进而导致规格变更失败,key越大失败的概率越高。
    • Cluster集群实例扩容或缩容时,请确保客户端开启集群拓扑自动刷新配置,否则在变更后需要重启客户端。Lettuce客户端开启集群拓扑自动刷新配置请参考Lettuce客户端连接Cluster集群实例中的示例。
    • 实例规格变更前的备份记录,变更后不能使用。如有需要请提前下载备份文件,或变更后重新备份。

    主备、读写分离和Cluster集群实例

    副本数变更

    • Cluster集群实例增加或删除副本时,请确保客户端开启集群拓扑自动刷新配置,否则在变更后需要重启客户端。Lettuce客户端开启集群拓扑自动刷新配置请参考Lettuce客户端连接Cluster集群实例中的示例。
    • 删除副本会导致连接中断,需确保您的客户端应用具备重连机制和处理异常的能力,否则在删除副本后需要重启客户端应用。增加副本不会连接中断。
    • 当副本数已经为实例支持的最小副本数时,不支持删除副本。

变更实例

  1. 登录分布式缓存服务管理控制台
  2. 在管理控制台左上角单击,选择实例所在的区域。
  3. 单击左侧菜单栏的“缓存管理”。
  4. 在需要规格变更的实例右侧,单击“操作”列下的“更多 > 变更规格”,进入到变更实例规格页面。
  5. 在变更实例规格页面中,选择您需要变更的目标规格。

    集群实例如需扩容单分片容量,请参考集群实例单分片扩容

  6. 选择变更时间为“立即变更”或“可维护时间窗内进行变更”。

    “可维护时间窗内进行变更”适用于如下变更规格时存在客户端连接中断的场景

    表4 变更规格时存在客户端连接中断的场景

    变更规格任务

    客户端连接中断的场景

    单机或主备实例扩容

    从8G以下扩容到8G或8G以上时

    Proxy或Cluster集群实例缩容

    分片数减少时

    变更实例类型

    主备/读写分离与Proxy集群之间实例类型变更

    删除副本

    主备/Cluster集群/读写分离实例删除副本

    • 不涉及客户端连接中断的场景,选择在可维护时间窗内变更,也会立即变更。
    • 提交变更规格后,不支持取消变更,可以修改“维护时间窗”时间推迟变更(变更过程中,维护时间窗可修改次数不超过3次)。
    • Redis 3.0和Memcached变更实例时,仅支持“立即变更”。
    • 在“维护时间窗”内变更的实例,变更的起始时间点是在维护时间窗时段内的随机时间,不是维护时间窗的起始时间。
    • 集群实例缩容需要迁移的数据量过大时,缩容完成的时间可能会超出可维护时间窗。

  7. 单击“下一步”,确认变更详情,并查看风险检查结果。

    当实例风险检查提示异常时,实例有变更失败的风险,请参考表5进行处理。
    表5 风险检查项说明

    风险检查项

    风险检查原因

    检查结果异常的处理建议

    非标配置检查

    说明:
    • 目前仅北京四、上海一、上海二等部分区域支持非标配置检查,具体区域以控制台实际检查结果为准。
    • 支持检查的非标场景:
      • 实例单节点带宽非标
      • 实例单节点内存非标
      • Cluster集群副本数非标
      • Proxy集群Proxy节点数量非标
      • Proxy集群最大连接数maxclients非标(超出最大可配连接数)

    当检查实例存在非标配置项时,会提示您当前实例存在非标配置,变更规格会转换为标准的DCS实例配置。

    其中,只有当非标检查结果为非标准带宽或非标准Proxy节点数时,您可以选择实例变更后保留原非标带宽或Proxy节点数,其他非标配置不支持保留。

    • 如果实例不存在非标配置,检查正常,无需处理。
    • 如果实例存在非标配置,请根据提示选择是否继续变更,或是否需要保留非标带宽/非标Proxy集群Proxy节点数。

    数据集内存分布检查

    说明:

    该检查项只针对Proxy集群和Cluster集群实例。

    Redis集群实例变更规格过程中会进行节点间的数据迁移,如果存在大Key(大于512MB),会触发Redis内核对于单Key的迁移限制,造成数据迁移超时失败。

    当节点间实例数据集内存分布不均,且差值大于512MB,表示实例有大Key,有变更失败的风险。

    当提示节点可能存在大Key时,建议先处理大Key后,再进行实例变更。

    内存利用率检查

    当节点内存利用率过高(>90%)时,在变更规格过程中可能导致Key逐出或变更失败。

    提示内存利用过高时,建议通过优化大Key、过期Key扫描、或删除部分Key等方式优化内存。

    网络输入流量检查

    说明:

    该检查项只针对单机、主备、读写分离实例。

    网络输入流量过高,写缓冲区溢出,可能导致规格变更失败。

    如提示网络输入流量过高,请在业务低峰期进行变更。

    CPU利用率检查

    检查五分钟内的节点CPU利用率是否过高(>90%)。节点CPU利用率过高时,可能导致规格变更失败。

    如提示CPU利用率是否过高,建议在业务低峰期进行变更。Redis实例CPU利用率高问题排查和解决

    资源容量

    说明:

    该检查项只针对集群实例扩容分片容量的场景。

    集群实例扩容分片容量时,如果实例所在虚拟机资源容量不足,变更过程中需要节点迁移,迁移节点时,业务连接会有闪断和只读。

    如果资源容量检查存在风险,请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后可能需要重启客户端应用。

    • 检查结果正常,说明所检查项不存在变更失败的风险。
    • 当提示检查失败时,可能是以下两方面原因:
      • 连接实例主节点获取信息失败,建议检查实例状态是否正常。
      • 系统异常,建议稍后“重新检查”。
    • 检查过程中单击“停止检查”,检查会终止,如需重新检查,请单击“重新检查”。
    • 手动停止检查或检查结果提示异常时,如需继续执行规格变更,需要勾选“我已知晓风险”。

  8. 风险检查正常后,单击“提交订单”,开始变更DCS缓存实例。提交变更后,在界面上可以选择跳转到后台任务界面,查看变更任务的状态。

    单击后台任务页面中的任务名称,可以查看任务详情。实例规格变更成功后,实例状态切换为“运行中”。

    图1 查看后台任务详情
    • 当单机实例规格变更失败时,实例暂不可用,实例规格仍然为变更前的规格,部分管理操作(如参数配置、规格变更等)暂不支持,待后台完成变更处理后,实例将自动恢复正常,实例规格将更新为变更后的规格。
    • 当主备和集群实例规格变更失败时,实例规格仍然为变更前的规格,部分管理操作(如参数配置、备份恢复、规格变更等)暂不支持,请按照变更前的规格使用,避免因数据超过规格而被丢失。
    • 当规格变更成功时,您可以按照新的规格使用DCS缓存实例。
    • DCS单机、主备和读写分离缓存实例规格变更大约需要5到30分钟,集群实例规格变更所需时间稍长。