You need to enable JavaScript to run this app. 如何将6.0.8版Redis新CentOS节点添加至旧Redis集群并下线旧节点
优惠活动
大模型
产品
解决方案
定价
更多

如何将6.0.8版Redis新CentOS节点添加至旧Redis集群并下线旧节点

旧Redis集群替换为6.0.8版本新节点的操作步骤

操作前的准备校验

  • 网络连通性校验:确认A/B/C和D/E/F所有节点之间,Redis服务端口、集群总线端口(默认服务端口+10000)无防火墙、安全组拦截,节点间可直接通信
  • 新节点配置对齐:D/E/F上的Redis 6.0.8实例配置要和现有旧集群完全一致,包括但不限于开启集群模式cluster-enabled yes、集群节点超时时间、内存上限、内存淘汰策略、持久化配置、访问密码(如果旧集群开启了认证),避免加入集群后出现配置不兼容问题
  • 旧集群健康校验:登录任意一个旧节点执行cluster info,确认返回cluster_state:ok,无故障节点、无处于迁移中间状态的槽位;执行cluster nodes获取所有旧节点的NodeID备用
  • 版本兼容校验:如果现有旧集群版本低于5.0,需先将旧集群小版本升级到5.0以上分支,再接入6.0.8版本的新节点,避免跨大版本集群通信协议不兼容

第一步:将新节点加入现有集群

  • 登录任意一个健康的旧节点(比如A)的Redis命令行,逐个将D/E/F节点加入集群:
    cluster meet <D节点IP> <Redis服务端口>
    cluster meet <E节点IP> <Redis服务端口>
    cluster meet <F节点IP> <Redis服务端口>
    
  • 执行cluster nodes检查节点状态,待新节点从handshake状态变为在线状态、且未分配任何槽位时,代表节点加入成功

第二步:平滑迁移槽位到新节点

  • 按照一一对应的逻辑规划槽迁移关系:比如将旧节点A承载的所有槽全部迁移到新节点D,旧节点B的槽迁移到E,旧节点C的槽迁移到F,降低迁移过程的复杂度
  • 单个槽的标准迁移流程(以迁移A节点上的槽号100到D节点为例):
    1. 登录目标新节点D,执行导入标记:cluster setslot 100 importing <A节点的NodeID>
    2. 登录源旧节点A,执行导出标记:cluster setslot 100 migrating <D节点的NodeID>
    3. 循环从源节点拉取该槽下的key,批量迁移到目标节点:每批最多拉取100个key,通过MIGRATE命令同步数据,直到该槽下无剩余key
    4. 所有key迁移完成后,在集群任意节点执行归属确认:cluster setslot 100 node <D节点的NodeID>
  • 所有旧节点上的16384个槽全部迁移完成后,执行cluster slots检查,确认所有槽的归属都指向D/E/F新节点,无处于导入/导出中间状态的槽位,集群状态保持ok

第三步:副本关系调整

  • 迁移完所有槽后,调整集群的副本归属:如果原集群有绑定在旧主节点上的从节点,可将从节点重新绑定到对应的新主节点上,在从节点命令行执行:cluster replicate <对应新主节点的NodeID>
  • 等待从节点完成和新主节点的数据全量同步,状态变为在线后,确认集群的副本数达到预先规划的高可用要求
  • 如果规划是将旧从节点也一并替换下线,需等新节点的副本配置全部生效、集群达到目标副本数后,再进入下线流程

第四步:平滑下线所有旧节点

  • 确认旧节点A/B/C上已无任何槽位、无从节点绑定关系,从cluster nodes输出中确认旧节点没有任何流量入口
  • 从任意一个新节点执行集群节点删除命令,逐个移除旧节点:
    redis-cli --cluster del-node <任意存活新节点IP:端口> <旧节点A的NodeID>
    redis-cli --cluster del-node <任意存活新节点IP:端口> <旧节点B的NodeID>
    redis-cli --cluster del-node <任意存活新节点IP:端口> <旧节点C的NodeID>
    
  • 确认集群节点列表中已无A/B/C的节点记录后,逐台停掉旧节点上的Redis服务,删除旧节点本地的集群配置文件(nodes.conf),避免旧节点重启后误重新加入集群

关键操作注意事项

  • 槽位迁移全程集群可在线读写,仅被迁移的槽在窗口期存在短暂路由跳转,对业务无感知
  • 迁移过程中不要重启任何集群节点,不要执行强制集群故障转移的配置,避免触发槽位冲突
  • 如果集群开启了访问密码,所有redis-cli执行的命令都要带上对应认证参数,否则会报权限错误
  • 迁移完成后,压测验证新节点的读写性能、持久化能力符合预期,再逐步将业务流量切到新集群节点

内容的提问来源于stack exchange,提问作者Devarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 23:15:00