升级 Redis Software 集群
提示
来自deepseek解释
原文链接:https://redis.io/docs/latest/operate/rs/installing-upgrading/upgrading/upgrade-cluster/
在将集群升级到更高版本的 Redis Software 之前,请查看支持的升级路径和前置条件。
要升级集群的 Redis Software 版本,请使用以下方法之一:
原地升级(In-place upgrade) – 直接升级集群中每个节点上的 Redis Software。虽然此方法比滚动升级方法更简单,但可能在每个节点升级时导致短暂的服务中断。
滚动升级(Rolling upgrade) – 通过逐个向集群添加运行更新版本 Redis Software 的新节点来最大程度减少停机时间,同时保持集群其余部分正常运行。对于需要持续可用性的生产环境,推荐使用此方法。
支持的升级路径
✅ 支持 – 您可以从当前的 Redis Software 集群版本直接升级。
❌ 不支持 – 您不能从当前的 Redis Software 集群版本直接升级。您必须首先升级到支持的中间版本。
| 当前 Redis Software 集群版本 | 升级到 Redis Software 7.2.x | 升级到 Redis Software 7.4.x | 升级到 Redis Software 7.8.x | 升级到 Redis Software 7.22.x | 升级到 Redis Software 8.0.2-8.0.10 | 升级到 Redis Software 8.0.16-8.0.20 |
|---|---|---|---|---|---|---|
| 6.0.x | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 6.2.4 6.2.8 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| 6.2.10 6.2.12 6.2.18 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 6.4.x | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 7.2.x | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 7.4.x | – | ✅ | ✅ | ✅ | ✅ | ✅ |
| 7.8.x | – | – | ✅ | ✅ | ✅ | ✅ |
| 7.22.x | – | – | – | ✅ | ✅ | ✅ |
| 8.0.2 8.0.6 8.0.10 | – | – | – | – | ✅ | ✅ |
| 8.0.16 8.0.18 8.0.20 | – | – | – | – | – | ✅ |
有关发布版本号和终止支持时间表的更多信息,请参见 Redis Software 产品生命周期。
Redis Enterprise for Kubernetes 有自己独立的支持生命周期,该生命周期考虑了 Kubernetes 发行版的生命周期。详情请参见支持的 Kubernetes 发行版。
升级前置条件
在升级集群之前:
在每个节点上运行 rlcheck 并验证没有问题:
shrlcheck确认维护模式未启用:
在集群的一个节点上,运行
rladmin status:shrladmin status检查每个节点的
SHARDS字段。如果该值为黄色,则表示节点处于维护模式。
要停用节点上的维护模式,请运行以下
rladmin node maintenance_mode off命令。更多详情请参见停用维护模式。shrladmin node <node_id> maintenance_mode off
确认您满足目标集群版本的升级路径要求,并查看相关发布说明以了解任何准备说明。
在将集群从 Redis Software 6.2.x 升级到 7.8.x 之前,如果集群中有任何数据库使用 Redis 6.0 版本,您必须执行以下步骤:
将 Redis 升级策略设置为
latest:shrladmin tune cluster redis_upgrade_policy latest将 Redis 6.0 数据库升级到 Redis 6.2。
在升级集群之前,将您的数据库升级到目标 Redis Software 版本所支持的版本。我们建议您尽可能将数据库升级到最新的支持版本。请确保在非生产环境中测试升级以确定其影响。
在集群升级过程中,避免更改数据库配置或执行其他集群管理操作,因为这可能导致意外结果。
首先升级集群的主节点。要识别主节点,请使用以下方法之一:
新版 Cluster Manager UI 中的 Nodes(节点)界面(仅适用于 Redis Software 7.2 及更高版本)
GET /nodes/statusREST API 请求
原地升级
从主节点开始,对集群中的每个节点执行以下步骤。为确保集群可用性,请分别升级每个节点。
在开始升级之前,完成所有前置条件。
使用以下命令验证节点运行状态:
shell$ rlcheck $ rladmin status extra all
如果任何分片、节点或端点不是 OK 状态,请勿继续。
从 https://cloud.redis.io 的下载中心将 Redis Software 安装包下载到运行该节点的机器上。
解压安装包:
shtar vxf <tarfile name>
升级期间无法更改安装路径或用户。
运行安装命令。有关可添加到以下命令的命令行选项列表,请参见安装脚本选项。在就地升级期间,您不能使用标记为“仅限新安装”的选项。
shellsudo ./install.sh安装脚本会自动识别升级并做出相应响应。
升级会替换所有节点进程,这可能会短暂中断任何活动连接。
验证节点已升级到新版本并仍在正常运行:
shell$ rlcheck $ rladmin status extra all访问 Cluster Manager UI。
如果在升级期间 Cluster Manager UI 在 Web 浏览器中处于打开状态,请刷新浏览器以重新加载控制台。
滚动升级
要执行集群的滚动升级,请使用以下方法之一:
- 额外节点方法 – 如果您有额外资源可用,推荐使用此方法
- 替换节点方法 – 如果您无法临时分配额外资源,推荐使用此方法
额外节点升级方法
在开始滚动升级之前,完成所有前置条件。
在新节点上安装更高版本的 Redis Software。
将新节点添加到集群中。
如果集群使用 DNS,将新节点的 IP 地址添加到 DNS 记录中。
提升第一个新节点为主节点。
从集群中移除一个运行较早版本 Redis Software 的节点。
重复上述步骤,直到所有运行较早版本 Redis Software 的节点都被移除。如果要移除的最后一个节点是主节点,请在移除前将其降级为备节点。
替换节点升级方法
在开始滚动升级之前,完成所有前置条件。
从集群中移除一个运行较早版本 Redis Software 的节点。
从被移除的节点上卸载 Redis Software:
shsudo ./rl_uninstall.sh在被移除的节点或新节点上安装更高版本的 Redis Software。
将新节点添加到集群中。
如果您希望在添加节点时重用被移除节点的 ID,请使用
replace_node标志运行rladmin cluster join:shrladmin cluster join nodes <cluster_member_ip_address> username <username> password <password> replace_node <node_id>如果集群使用 DNS,将新节点的 IP 地址添加到 DNS 记录中。
提升第一个新节点为主节点。
验证节点健康状态:
在所有节点上运行
rlcheck:shrlcheck输出列出每个验证测试的结果:
sh##### Welcome to Redis Software Cluster settings verification utility #### Running test: verify_bootstrap_status PASS ... Running test: verify_encrypted_gossip PASS Summary: ------- ALL TESTS PASSED.对于健康的节点,预期输出为
ALL TESTS PASSED。在新节点上运行
rladmin status:shrladmin status extra all预期输出为集群、节点、端点和分片的状态均为
OK:shCLUSTER: OK. Cluster master: 2 (<IP.address>) Cluster health: OK, [0, 0.0, 0.0] failures/minute - avg1 0.00, avg15 0.00, avg60 0.00. ...
重复上述步骤,直到所有运行较早版本 Redis Software 的节点都被替换。如果要移除的最后一个节点是主节点,请在移除前将其降级为备节点。
集群升级后
所有节点升级完成后,集群即完成全面升级。新版本 Redis Software 中引入的某些功能仅在升级整个集群后才可用。
从 6.0.x 升级到 6.2.x 后,在每个集群节点上重启 cnm_exec 以启用更高级的状态机处理能力:
supervisorctl restart cnm_exec