-
实例规格变更须知 支持实例规格变更明细 表2 实例规格变更明细 缓存类型 单机实例 主备实例 Cluster集群实例 Proxy集群实例 读写分离实例 Redis 3.0 支持扩容和缩容 支持扩容和缩容 - 仅支持扩容 - Redis 4.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容和缩容 支持扩容、缩容和副本数变更 Redis 5.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容和缩容 支持扩容、缩容和副本数变更 Redis 6.0 基础版 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容缩容 支持扩容、缩容和副本数变更 Redis 6.0 企业版 - 支持扩容和缩容 - - - Redis 7.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 D
CS 实例类型变更明细 实例版本 支持的实例变更类型 变更须知及影响 Redis 3.0 单机实例变更为主备实例 连接会有秒级中断,大约1分钟左右的只读。 主备实例变更为Proxy集群实例 如果Redis 3.0主备实例数据存储在多DB上,或数据存储在非DB0上,不支持变更为Proxy集群;数据必须是只存储在DB0上的主备实例才支持变更为Proxy集群。 连接会中断,5~30分钟只读。 Memcached 单机实例变更为主备实例 会有秒级业务中断、大约1分钟只读。 Redis 4.0/5.0/6.0 主备实例或读写分离实例变更为Proxy集群实例 变更为proxy集群时,需要评估proxy集群的多DB使用限制和命令使用限制对业务的影响。具体请参考proxy集群使用多DB限制,实例受限使用命令。 变更前实例的已用内存必须小于变更后最大内存的70%,否则将不允许变更。 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。 变更完成后需要对实例重新创建告警规则。 如果原实例是主备实例,请确保应用中没有直接引用只读IP或只读
域名 。 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。 变更规格过程中会有秒级业务中断、大约1分钟只读,建议在业务低峰时进行变更。 Proxy集群实例变更为主备实例或读写分离实例 Redis 4.0/5.0/6.0 主备实例变更为读写分离实例 说明: 读写分离实例暂不支持直接变更为主备实例。 目前只支持主备实例变更为相同容量的读写分离实例,小于4G规格的主备实例不支持变更为读写分离实例。 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。 变更完成后需要对实例重新创建告警规则。 请确保主备实例的应用中没有直接引用只读IP或只读域名。 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。 变更规格过程中会有秒级业务中断,建议在业务低峰时进行变更。 主备实例如果创建了ACL账号,不支持变更为读写分离实例。 Redis 6.0如果开启了SSL链路加密传输,不支持变更为读写分离实例。 除了上表中提到的实例外,其他实例类型目前不支持实例类型的变更。若您想实现跨实例类型的规格变更,建议您创建新的实例后进行数据迁移并交换实例IP,迁移操作请参考使用迁移任务在线迁移Redis实例进行操作。 实例类型变更后支持的命令,请参考对应的开源命令兼容性。
-
DCS是否支持哨兵模式接入? Redis 4.0及以上版本: 单机、主备、Cluster集群实例不支持哨兵模式接入。 读写分离支持哨兵模式和集群模式接入。 Proxy集群实例默认支持集群模式接入,开启cluster-sentinel-enabled和sentinel-without-auth参数(将参数配置为yes)后,支持哨兵模式接入。配置参数的操作,请参考修改DCS实例配置参数。 sentinel-without-auth参数目前为白名单控制,Proxy集群实例默认不显示该参数,如需配置该参数请联系客服添加白名单。 Redis 3.0实例不支持哨兵模式接入。 父主题: 安全性
-
查看DCS性能监控 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入缓存实例信息页面。 单击需要查看性能监控指标的缓存实例,进入实例基本信息页面。 单击“性能监控”,页面显示该实例的所有监控指标信息。 您也可以在需要查看的缓存实例的“操作”列,单击“查看监控”,进入
云监控服务 的页面查看,这和在缓存实例信息页面“性能监控”页签内容一致。
-
监控指标中存在已拒绝的连接数是什么原因? 当监控指标中出现“已拒绝的连接数”时,请确认客户端连接数是否已经超过实例的最大连接数限制。 Redis 4.0及以上版本的实例,仅在主备、集群和读写分离实例的数据节点中支持查看“已拒绝的连接数”。 查看最大连接数:单击实例名称,进入实例详情页面,选择“配置参数”页签,查看maxclients参数的值(读写分离实例暂不支持该参数,可通过DCS实例规格查询实例最大连接数)。 查看实际连接数:单击实例名称,进入实例详情页面,选择“性能监控”页签,找到“活跃的客户端数量”监控项查看。 如果客户端连接数已到达连接上限,可以根据需要调整maxclients参数,如果maxclients参数已经是最大可配连接数,仍不满足需求,则需要考虑增加实例分片。 父主题: 监控告警
-
迁移实例数据 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择源Redis所在的区域。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建在线迁移任务”。 设置迁移任务名称和描述。 配置在线迁移任务虚拟机资源的VPC、子网和安全组。 迁移任务需要与源Redis和目标Redis实例网络互通,请选择与Redis实例相同的VPC。 迁移任务创建后,会占用一个租户侧IP,即控制台上迁移任务对应的“迁移机IP”,如果目标Redis配置了IP白名单,需要放通迁移机IP。 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。 在线迁移任务创建完成后,单击在线迁移任务右侧“操作”列的“配置”,配置在线迁移的源Redis、目标Redis等信息。 迁移方法请选择“全量迁移+增量迁移”,仅当选择“全量迁移+增量迁移”的迁移方法时,支持通过控制台交换源端与目标端实例的IP地址。如果选择“全量迁移”,需要手动切换业务连接Redis的IP地址。 表1 在线迁移方法说明 迁移类型 描述 全量迁移 该模式为Redis的一次性迁移,适用于可中断业务的迁移场景。全量迁移过程中,如果源Redis有数据更新,这部分更新数据不会被迁移到目标Redis。 全量迁移+增量迁移 该模式为Redis的持续性迁移,适用于对业务中断敏感的迁移场景。增量迁移阶段通过解析日志等技术, 持续保持源Redis和目标端Redis的数据一致。 增量迁移,迁移任务会在迁移开始后,一直保持迁移中状态,不会自动停止。需要您在合适时间,在“操作”列单击“停止”,手动停止迁移。停止后,源端数据不会丢失,只是目标端不再写入数据。增量迁移在传输链路网络稳定情况下是秒级时延,具体的时延情况依赖于网络链路的传输质量。 当迁移方法选择“全量迁移+增量迁移”时,支持选择是否启用“带宽限制”。 启用带宽限制功能,当数据同步速度达到带宽限制时,将限制同步速度的继续增长。 选择是否“自动重连”。如开启自动重连模式,迁移过程中在遇到网络等异常情况时,会无限自动重连。 自动重连模式在无法进行增量同步时,会触发全量同步,增加带宽占用,请谨慎选择。 “源Redis实例”和“目标Redis实例”,请分别选择需要升级的Redis 3.0实例和新建的高版本Redis实例。 如果源Redis和目标Redis为密码访问模式,请分别在“源Redis实例密码”和“目标Redis实例密码”处输入实例密码后,单击密码右侧的“测试连接”,检查实例密码是否正确、网络是否连通。如果源Redis和目标Redis为免密访问模式,无需输入密码,直接单击“测试连接”。 在“源DB”和“目标DB”中,可以选择是否需要指定具体迁移的DB。例如源端输入5,目标端输入6时,表示迁移源Redis DB5中的数据到目标Redis的DB6。当源端不指定DB,目标端指定DB时,表示默认迁移源端的全部数据到目标端指定的DB;当目标端不指定DB时,表示默认迁移到与源端对应的DB。本次操作“源DB”和“目标DB”置空即可。 单击“下一步”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。 如果是增量迁移,会一直保持迁移中的状态。 如需手动停止迁移,请选中需要停止的迁移任务,单击“停止”。 数据迁移后,目标端与源端重复的Key会被覆盖。 如果出现迁移失败,可以单击迁移任务名称,进入迁移任务详情页面,查看“迁移日志”。
-
前提条件 创建与Redis 3.0相同VPC和子网,相同实例类型、相同访问密码、且规格不小于原实例规格的高版本Redis实例。例如,用户需要将Redis 3.0 16GB主备实例升级到Redis 5.0版本,则需要提前创建一个不小于16GB的Redis 5.0主备实例。 创建Redis实例的操作,请参考创建DCS Redis缓存实例。 手动备份Redis 3.0源实例数据。备份数据的操作,请参考如何导出Redis实例数据?。
-
迁移后验证 数据迁移前如果目标Redis中数据为空,迁移完成后,可以通过以下方式确认数据的完整性: 连接源Redis和目标Redis。连接Redis的方法请参考Redis-cli客户端连接Redis。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。 注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。
-
约束与限制 DCS Redis 3.0实例支持绑定弹性IP公网访问,Redis 4.0及以上版本的实例不支持直接绑定弹性IP,公网访问方式需通过ELB实现,开启Redis 4.0及以上版本实例公网访问的方式请参考开启Redis公网访问并获取公网访问地址,如果用户业务依赖公网访问,升级前请先进行评估。 通过数据迁移的方式升级Redis版本,对客户业务可能有以下影响: 数据同步完成后,需要交换源Redis与目标Redis实例的IP地址,交换IP地址时会有一分钟内只读和30秒左右的中断。 如果升级后实例与原实例密码不一致,数据同步完成后,需要切换访问Redis的密码,切换时需要停止业务。因此,建议升级前后实例密码保持一致。 建议在业务低峰期进行实例升级操作。
-
方案概述 Redis开源社区自2019年5月19日发布Redis 3.0最后一个小版本后,一直未对Redis 3.0进行更新。华为云DCS也于2021年3月发布了停售DCS Redis 3.0的公告。 鉴于Redis 3.0版本较老,开源社区已不再对其进行更新,DCS提供的Redis 4.0/5.0/6.0/7.0高版本兼容Redis 3.0,建议客户尽快将DCS Redis 3.0升级到高版本。 DCS暂不支持直接升级实例版本,只能通过数据迁移将低版本实例中的数据迁移到高版本,从而实现Redis版本升级。本章节介绍如何通过数据迁移+交换实例IP的方式升级Redis 3.0实例到高版本。
-
不同实例类型的副本和分片数 单机实例:单机实例只有1个节点,1个Redis进程,当Redis进程故障后,DCS为实例重新拉起一个新的Redis进程。 主备/读写分离实例:分片数为1,包含一个主节点,一个或多个备节点。当主节点出现故障时,会进行主备倒换,恢复业务。 集群实例:集群实例由多个分片组成,每个分片默认是一个双副本的主备实例。例如一个3分片,2副本的集群实例,则每个分片都有2个节点(1个主节点,1个备节点)。 实例类型 分片数 副本数 负载均衡 占用IP数 单机 单分片 单副本,不支持多副本 - 1个 主备 单分片 默认双副本,支持配置为2-10副本 企业版主备实例仅支持2副本 不支持 占用IP个数=副本数 读写分离 单分片 默认双副本,支持2-6副本 支持 1个 Proxy集群 多分片 双副本,不支持其他副本数 支持 1个 Cluster集群 多分片 默认双副本,支持配置为1-5副本 不支持 占用IP个数=副本数*分片数
-
公网连接Redis 3.0 在进行公网访问时,请先仔细阅读公网连接章节,检查实例是否满足公网访问的要求。 连接时提示:Error: Connection reset by peer或者出现:远程主机强迫关闭一个现有的连接。 原因1:安全组没有配置正确。 解决方法:需要允许Redis实例被访问,具体配置操作和公网连接操作,请按照公网连接章节中的操作进行。 原因2:查看Redis所在vpc子网是否被ACL关联,同时这个ACL出方向被限制了。若是,放开限制。 原因3:开启了SSL加密传输,连接时没有安装配置Stunnel,直接使用了界面提示的IP地址进行连接。 解决方法:开启SSL加密时,必须安装配置Stunnel客户端,具体操作,请按照公网连接Redis实例(开启SSL加密)执行。其中,请注意,在连接Redis实例命令中,IP地址需要配置为Stunnel客户端地址和端口,不要使用控制台展示的Redis实例公网连接地址和端口。 已经开启了公网访问的Redis实例,公网访问被关闭了,无法使用公网访问。 原因:该Redis实例绑定的弹性公网IP被解绑,导致Redis实例公网被关闭。 解决方法:在控制台重新开启实例的公网访问,绑定弹性公网IP,并重新连接。
-
带宽超限导致连接问题 当实例已使用带宽达到实例规格最大带宽,可能会导致部分Redis连接超时现象。 您可以查看监控指标“流控次数”,统计周期内被流控的次数,确认带宽是否已经达到上限。 然后,检查实例是否有大Key和热Key,如果存在大Key或者单个Key负载过大,容易造成对于单个Key的操作占用带宽资源过高。大Key和热Key操作,请参考分析实例大Key和热Key。 Redis 4.0及之后版本的实例,支持通过控制台对Redis实例进行带宽扩容,可用于解决带宽超限的问题。
-
性能问题导致连接超时 使用了keys等消耗资源的命令,导致CPU使用率超高;或者实例没有设置过期时间、没有清除已过期的Key,导致存储的数据过多,一直在内存中,内存使用率过高等,这些都容易出现访问缓慢、连接不上等情况。 建议客户改成scan命令或者禁用keys命令。 查看监控指标,并配置对应的告警。监控项和配置告警步骤,可查看必须配置的监控告警。 例如,可以通过监控指标“内存利用率”和“已用内存”查看实例内存使用情况、“活跃的客户端数量”查看实例连接数是否达到上限等。 检查实例是否存在大Key和热Key。 DCS控制台提供了大Key和热Key的分析功能,具体使用,请参考分析Redis实例的大Key和热Key。
-
Redis和ECS之间的连接问题 客户端所在的ECS必须和Redis实例在同一个VPC内,并且需要确保ECS和Redis之间可以正常连接。 如果是Redis 3.0或Redis 6.0企业版实例,Redis和ECS的安全组没有配置正确,连接失败。 解决方法:配置ECS和Redis实例所在安全组规则,允许Redis实例被访问。具体配置,可以参考配置安全组。 如果是Redis 4.0及以上基础版实例,开启了白名单功能,连接失败。 如果实例开启了白名单,在使用客户端连接时,需要确保客户端IP是否在白名单内,如果不在白名单,会出现连接失败。具体配置操作,可以参考配置白名单。客户端IP如果有变化,需要将变化后的IP加入白名单。 Redis实例和ECS不在同一个Region。 解决方法:不支持跨Region访问,可以在ECS所在的Region创建Redis实例,创建时注意选择与ECS相同VPC,创建之后,使用数据迁移进行迁移,将原有Redis实例数据迁移到新实例中。 Redis实例和ECS不在同一个VPC。 不同的VPC,网络是不相通的,不在同一VPC下的ECS是无法访问Redis实例。可以通过创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问Redis实例。 关于创建和使用VPC对等连接,请参考VPC对等连接说明。