资讯详情

CacheCloud 应用在线迁移实战指南:基于主从 Failover 的客户端无感知迁移全流程解析

📅 2026/10/6 2:32:58 | 华诺云谱 👁 阅读
CacheCloud 应用在线迁移实战指南:基于主从 Failover 的客户端无感知迁移全流程解析
后端运维【免费下载链接】cachecloud搜狐视频(sohu tv)Redis私有云平台 支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本提升资源管控能力和利用率。平台提供快速搭建/迁移运维管理弹性伸缩统计监控客户端整合接入等功能。(CacheCloud is a Redis cloud management platform. It supports Standalone, Sentinel, and Cluster architectures for Redis, effectively reducing large-scale Redis operation and maintenance costs, and improving resource management and utilization. The platform provides rapid construction/migration, operation and maintenance management, elastic scaling, statistical monitoring, client integration and access and other functions)项目地址https://gitcode.com/gh_mirrors/ca/cachecloud点击查看免费下载导读本文基于 CacheCloud 官方运维文档 appMigrate.md 展开系统讲解 Redis 私有云平台 CacheCloud 中应用在线迁移功能的完整操作流程与底层实现原理。通过阅读本文你将掌握如何在应用运维页面发起不更换 appId 的实例迁移、迁移过程中八个关键步骤的操作要点、以及 Standalone / Sentinel / Cluster 三种架构下主从 Failover 的执行细节从而在机房搬迁、资源调整、机器下电等场景中实现业务无感知的应用迁移。一、应用迁移是什么CacheCloud 的应用迁移是一种不更换应用 appId的在线迁移方式。它利用 Redis 主从复制架构通过新老 Slave 节点替换 主从 Failover的组合动作把应用实例平滑地从一组物理机迁移到另一组物理机上。由于整个过程围绕主从复制与角色切换展开客户端连接的应用 ID 保持不变因此对客户端是完全无感知的——这正是该迁移方案的核心价值。从代码结构看该功能由 AppMigrateController路由前缀/manage/app/migrate提供后端接口由 appMigrate.html 提供前端向导页面二者共同构成一个 8 步的应用迁移工具。二、入口进入 CacheCloud 后台在 CacheCloud 后台的应用运维页面选择要进行迁移的应用点击应用迁移按钮即可进入迁移向导。前端向导 appMigrate.html 会加载并展示应用的基本信息应用 ID、Redis 类型2为 Cluster 集群、5为 Sentinel、6为 Standalone、内存总容量、实例容量、应用机器数、master/slave 节点数以及源实例信息。对应后端入口为AppMigrateController.init它会一次性取回应用详情appStatsCenter.getAppDetail、全量机器状态machineCenter.getMachineStats、当前 Redis 实例信息以及 Sentinel 实例信息如果应用是 Sentinel 架构并加载可用机房列表供迁移选择。三、八步迁移流程详解应用迁移整体包含八个主要步骤前端以 Bootstrap Wizard 的形式逐步推进对应 appMigrate.html 中appInfo → createVersion → slaveChange → msFailover → addNewSlave → instanceCheck → downOldSlave → migrateComplete的步骤条每一步完成后点击继续进入下一步。步骤 1应用信息查看源应用的实例 IP、角色master/slave/sentinel和 Redis 版本等信息选择迁移的目标机房和迁移机器。实操要点页面会列出所有可用机器及其资源占用已用/总核数、已用/总内存、宿主机/机架信息可按专用- / 测试- / 混合-部署类型筛选。支持点击自动挑选机器前端调用autoSelectMachine()向后端selectMachine接口提交type / useType / room / machineNum / mem / masterNum / slaveNum参数由 AppMigrateController.selectMachine 依据架构类型计算候选机器Sentinel 架构masterMachineNum 1 slaveNumStandalone 架构为1Cluster 架构等于机器总数随后按目标内存、CPU 需求从有效机器中筛选。若应用是 Sentinel 架构type5还需单独为 Sentinel 节点选择迁移机器可调用selectSentinelMachine接口自动挑选源码中要求 Sentinel 数量不小于 3 且为奇数不足时系统会自动补足为 3 或sentinelNum 1。步骤 2应用迁移计划这一步主要查看节点的变更信息新增实例Slave的 IP 和端口号以及待下线的旧实例清单确认无误后点击继续进入新老 Slave 节点的替换。对应后端接口为 AppMigrateController.checkPlan其内部做了三件事校验迁移机器参数非空machineInfo为空直接报迁移机器参数异常校验迁移机器上 Redis 版本/环境源码中相关版本检查逻辑当前处于注释状态异常时返回迁移机器Redis版本检查异常计算迁移计划收集当前状态良好GOOD_STATUS的 master、sentinel 节点通过getRedisInfo按轮询取模算法为每个 master 分配一个目标 slave 机器尽量避免主从落在同一物理机通过getDownInstanceInfo收集需要下线的 slave / sentinel 实例最终返回新增实例信息与下线实例信息两个清单前端合并展示在节点变更信息文本域中。步骤 3新老 Slave 节点替换替换完成之后查看最新实例信息点击继续进行主从切换。对应后端接口为 AppMigrateController.nodeReplace执行顺序是先通过shutdownInstance关闭待下线的旧 slave 节点逐个调用instanceDeployCenter.shutdownExistInstance再通过startInstance在目标机器上启动新的 Redis 实例对每个当前 master调用redisDeployCenter.addSlave(appId, masterInstanceId, slaveIp)建立主从关系然后sleep 15 秒等待 master 的 PSYNC 同步并用slaveIsPsync检测新 slave 是否已追上主库偏移若为 Sentinel 架构额外通过startSentinelInstance调用redisDeployCenter.addSentinel启动新 Sentinel最后返回迁移后的最新实例信息与实例日志链接。步骤 4主从 Failover完成主从节点切换点击继续添加新的 Slave。对应后端接口为 AppMigrateController.msFailover核心是调用redisConfigTemplateService.slaveFailover(appId)。查看 RedisConfigTemplateServiceImpl.slaveFailover 的实现可以看到其关键逻辑Cluster 架构调用redisDeployCenter.clusterFailover(appId, instanceId, force)执行CLUSTER FAILOVER FORCE强制切换Sentinel 架构调用redisDeployCenter.sentinelFailover(appId)触发 Sentinel 主导的故障转移failover 发起后通过redisCenter.getRedisReplicationStatus轮询检测复制状态间隔 2 秒、最多重试 30 次直到确认切换完成若 failover 失败接口直接返回failover失败请查看日志!迁移流程中止等待排查。Failover 之后msFailover会重新拉取实例列表识别出当前已变为 slave 的旧 master 节点将其 ID 记录到downInstanceIds供后续下线使用。步骤 5添加 Slave添加新的 Slave恢复迁移前的副本数量与容灾能力。对应后端接口为 AppMigrateController.addNewSlave对 failover 后新的 master 节点再次调用startInstance内部addSlave sleep 15s PSYNC 检测为目标机器添加从节点Sentinel 架构下同时补充新的 Sentinel 实例最后刷新最新实例信息与日志。步骤 6新实例状态检测检查新实例的连接状态是否异常点击继续下线老的 Slave。对应后端接口为 AppMigrateController.appStatusCheck路由appCheck。该步骤是迁移链路上的健康闸门只有新实例状态检查通过才允许继续执行下线操作前端也会在此时把下线实例信息展示给运维人员确认。源码中该接口目前主要承担状态检查的框架职责实际运行中建议结合 CacheCloud 的实例监控连接数、运行状态一并确认遇到异常可回到上一步排查日志。步骤 7下线 Slave下线老的 Slave释放源机器资源。对应后端接口为 AppMigrateController.downSlave通过shutdownInstance(downInstanceIds, appId)逐一下线旧 slave 实例内部调用instanceDeployCenter.shutdownExistInstance。注意前端逻辑若应用为 Sentinel 架构此步骤会将 Redis 的下线 ID 与 Sentinel 的下线 ID 拼接后一并提交即旧 slave 与旧 sentinel 同时下线。步骤 8迁移完成完成迁移前端跳回应用页面迁移流程收尾。对应后端接口为 AppMigrateController.migrateComplete路由complete返回成功后前端window.location.reload()刷新页面即可在应用运维中看到迁移后的新实例拓扑。四、源码级原理剖析为什么能做到客户端无感知整个迁移过程的核心设计思想可以从源码中得到完整印证appId 全程不变迁移过程中所有后端接口都以appId为操作维度如addSlave(appId, masterInstanceId, ip)、clusterFailover(appId, ...)数据模型层面实例只发生角色与位置的变化应用 ID 与客户端接入地址Sentinel 的监控域名 / Cluster 的任一节点均不变化因此对客户端无感知。先建后拆、角色平移迁移链路遵循新增 Slave → 主从 Failover → 补充 Slave → 下线老节点的顺序。任意时刻应用都保有完整的 master slave 副本避免迁移窗口期内出现单点。PSYNC 与偏移量检测保障数据一致性每次addSlave后程序固定等待 15 秒让新 slave 完成全量/增量同步并通过slaveIsPsync、getRedisReplicationStatus校验主从偏移确认同步完成后才继续下一步从机制上防止数据丢失。架构差异化处理Cluster 走CLUSTER FAILOVER FORCESentinel 走 Sentinel 自身的故障转移接口Standalone单主则在 failover 时整体由新 slave 顶替主位——三套路径在 RedisConfigTemplateServiceImpl.slaveFailover 中按appDesc.getType()分流前端向导也据此决定是否展示 Sentinel 机器选择区。此外仓库中还提供了面向容器/物理机整机搬迁场景的强制迁移forceMigrate能力见 MigrateServiceImpl.forceMigrate以源 IP → 目标 IP为粒度将源机器上所有 Cluster 实例按 appId 分组异步并发执行获取 slave0 → failover 并校验 → 下线旧节点 → 添加新 slave的循环失败节点最多重试 3 轮。这可以视作页面八步流程的自动化批量版本适用于批量搬迁场景。五、操作注意事项迁移机器必须预先就绪目标机器需能被 CacheCloud 通过 SSH 管理、拥有足够的剩余内存与 CPU并在页面上处于可选状态Redis 版本检查异常时会在应用迁移计划步骤直接拦截。迁移过程中如遇错误向导页面会明确提示——如果在迁移过程中遇到错误警告请登录服务器查看日志解决后再继续执行。Failover 失败、addSlave 失败都会返回明确错误信息不要跳过失败步骤强行推进。部分步骤可跳过前端向导为新老 Slave 节点替换和添加 Slave步骤提供了跳过按钮skip()用于某些架构下无需替换/追加 slave 的场景非必要不建议跳过否则可能影响最终副本数。Sentinel 架构的奇偶约束自动挑选 Sentinel 机器时系统会保证 Sentinel 数量不小于 3 且为奇数迁移前请确认目标机房的 Sentinel 资源充足。迁移范围限定页面版八步流程面向单个应用若需要整机/多应用批量迁移可评估 MigrateServiceImpl 中forceMigrate的容器迁移路径。六、小结CacheCloud 的应用在线迁移以主从复制与 Failover 为基石通过八步向导将换机器这一高风险运维动作拆解为可检查、可回退、可审计的流程新增 slave 保证数据不丢failover 实现角色切换状态检测把关健康度最后下线老节点释放资源全程 appId 不变、客户端无感知。配合仓库中 AppMigrateController 的接口实现与 appMigrate.html 的向导逻辑读者既可以按图索骥完成单应用迁移也能理解其底层调用链为后续的批量迁移与自动化运维打下基础。赞分享后端运维【免费下载链接】cachecloud搜狐视频(sohu tv)Redis私有云平台 支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本提升资源管控能力和利用率。平台提供快速搭建/迁移运维管理弹性伸缩统计监控客户端整合接入等功能。(CacheCloud is a Redis cloud management platform. It supports Standalone, Sentinel, and Cluster architectures for Redis, effectively reducing large-scale Redis operation and maintenance costs, and improving resource management and utilization. The platform provides rapid construction/migration, operation and maintenance management, elastic scaling, statistical monitoring, client integration and access and other functions)项目地址https://gitcode.com/gh_mirrors/ca/cachecloud点击查看免费下载相关推荐CANN asc-devkit Conv3D初始化接口Init 产品支持情况 ! npu950 id1 Ascend 950PR/Ascend 950DT不支持 ! end id1 ! npuA3人工智能深度学习算子库CANNAscend从 hiredis 迁移到 libvalkeyValkey C 客户端 API 迁移完全指南从 hiredis 迁移到 libvalkeyValkey C 客户端 API 迁移完全指南 Libvalkey 是 Valkey 数据库的官方 C 客户端KV存储缓存数据库SQLFluff 完整入门3 条命令跑通你的第一个 SQL 检查SQLFluff 完整入门3 条命令跑通你的第一个 SQL 检查 SQLFluff 是一个模块化的 SQL 检查器与自动格式化工具支持 30 多种 SQL后端运维上一篇RTAB-Map机器人环境感知与三维建图技术深度解析下一篇GameFramework-at-YooAsset下一代商业级Unity游戏开发框架的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑