链接复制成功!
停服切换方案
停服时长评估
基于华为云的迁移经验,切换期间大部分应用停服时长在0.5小时~3.5小时,下面停服时长可供参考:
上云迁移停服时长评估 |
||||||||
---|---|---|---|---|---|---|---|---|
总停服时长(36~211分钟) |
||||||||
源端停机(12~75分钟) |
增量数据同步及校验(6~40分钟) |
目的端拉起(18~96分钟) |
||||||
目的端拉起(18~96分钟) |
时长(分钟) |
缩短时长的方法 |
增量数据复制 |
时长(分钟) |
缩短时长的方法 |
目的算业务拉起 |
时长(分钟) |
缩短时长的方法 |
接入层流量入口关闭(网关/ELB) |
1~5 |
1、通过API接口调用或脚本批量操作,减少操作时间 |
最后一次增量同步 |
1~10 |
1、在业务低峰进行切换,减少增量数据 |
数据库开启写 |
1 |
1、脚本开启 |
应用层停服(关停应用) |
1~30 |
1、提前关停非核心业务,减少操作量 2、统一运维批量关停,减少操作时间 3、统一日志平台,减少应用日志检查时间 |
数据校验 |
5~30 |
1、开启工具的动态校验功能,减少校验时间 |
应用启动 |
1~30 |
1、统一运维平台,批量关停,减少操作时间 2、统一日志平台,减少应用日志检查时间 |
中间件层停服(消息消费完) |
5~30 |
1、提前关停非核心业务,减少消息量 2、统一监控平台,减少检查时间 |
- |
- |
- |
应用测试 |
15~60 |
1、测试用例自动化 2、只测试核心测试用例 |
数据层停服(停写检查) |
5~10 |
1、统一监控平台,减少检查时间 |
- |
- |
- |
流量切换 |
1~5 |
1、通过API接口调用或脚本批量操作,减少操作时间 |
停服时长例外情况
- 停服时长小于30分钟:若停服时长要求小于30分钟,可以通过分批迁移,划分较小的批次或者采用分层切换(比如先切应用层再切数据层)的方式,且所有操作都脚本化/工具化,停服时长也有可能小于30分钟。
- 停服时长大于3.5小时:迁移规模和数据量大、业务关联关系复杂无法分批、切换Runbook操作复杂且自动化程度不高,停服时长可能大于3.5小时,有的甚至8~10小时。比如某大型企业600+微服务,100+个中间件,80+数据库,1000+个批处理任务,4000+个测试用例,停服时长约8个小时。
减少停服时长的方法(分钟级)
停服时长与多个因素有关,企业可以通过分批+自动化+多次演练+业务适配改造,来减少停服时长。下图是四种减少停服时长的方法:

四种停服切换方式
切换方式 |
适用场景 |
停服时长 |
停服次数 |
影响范围 |
---|---|---|---|---|
一把切(应用层和数据层整体停机后切换) |
适用于停机窗口较长、无法清晰梳理应用之间和应用与数据层之间关联关系的业务 |
长 |
1 |
全部业务 |
分3~4次切换,应用层先灰度切流(1%,30%,…100%),然后停机,数据层整体切换,再将内外部域名切换到目的端 |
适用于停机窗口较小,业务可接受短时间的跨云访问,跨云带宽和时延评估可以满足业务需求。 |
中 |
1 |
全部业务 |
分5~10次切换,应用灰度切流(1%,30%,…100%),然后数据层分批次切换(比如:第一批缓存+数据库,第二批缓存+数据库,第三批中间件消息队列等) |
适用于停机窗口较小, 业务可接收短时间的跨云访问,跨云带宽和时延评估可以满足业务需求,且切换多次对内外部影响可控。 |
短 |
多次 |
部分业务 |
按照业务域分批切 |
适用于业务域相对独立,关联关系简单,可独立拆分上云。 |
短 |
多次 |
部分业务 |
一把切(应用层和数据层整体停机后切换)
准备工作:
- 源端应用和数据已迁移到华为云;
- 华为云应用层和数据层已完成业务功能和性能验证,可正常使用;
业务切换:
- 停止源端应用层和批处理任务,使源端不再产生新增数据,检查中间件消息无新增,检查数据层无新增;
- 源端数据层和华为云数据层增量同步完成,并完成数据一致性对比,断开同步链路;
- 华为云上的应用层和数据层内部域名等配置修改,重启华为云上的应用服务;
- 外部DNS域名解析,将解析地址从源端接入层切换到华为云接入层,使外部流量进入华为云;

应用层灰度切流,数据层整体切换
应用层灰度切流前做好如下准备工作:
- 源端应用层已迁移或部署到华为云;
- 华为云应用层跨云访问源端数据库,已完成业务功能和性能验证,可正常使用。
准备工作完成过后,从源端接入层引流,按照1%~30%,…100%逐步加大流量的方式,流量逐步灰度切换到华为云接入层。

接下来进行数据层整体切换,步骤如下:
- 源端和目标端的应用层和批处理任务停止服务,防止新数据写入,此时业务无法使用;
- 等中间件消息队列中的消息消费完成,数据层增量同步到华为云,对比源端和目标端数据层数据一致性;
- 修改配置,将华为云应用层指向华为云数据层,启动应用服务;
- 外部DNS域名解析,解析地址从源端切换到华为云,流量进入华为云。

应用层灰度切流,数据层分批切换
应用层灰度切流前做好如下准备工作:
- 源端应用层已迁移或部署到华为云;
- 华为云应用层跨云访问源端数据库,已完成业务功能和性能验证,可正常使用。
准备工作完成过后,从源端接入层引流,按照1%~30%,…100%逐步加大流量的方式,流量逐步灰度切换到华为云接入层。

接下来进行数据层分批切换,某批次数据层切换步骤如下:
- 停止本批次数据层相关的应用和批处理任务。本批次的数据层静止(中间件消息队列中的消息消费完成,数据库无新增数据);
- 数据对比一致后,切换数据层;
- 修改相关的配置,启动和本批次数据层相关的应用和批处理任务。进行功能验证及保障,确保业务正常;
- 某批次应用(如APP1)的外部DNS域名解析,解析地址从源端切换到华为云,流量进入华为云。

该方案的优点如下:
按照业务域分批切换
准备工作:
- 本批次要切换的业务域如X业务已完成部署及迁移;
- 本批次要切换的业务域已内部通过功能和性能验证,可正常使用。
本批次业务域切换步骤:
- 停止源端业务域1对应的应用层和批处理任务等,使其不再产生新增数据;停止和本业务域共用中间件和数据库的应用和批处理任务等,使其不再产生新增数据;
- 检查本批次要切换的中间件和数据层无新增数据,数据对比一致后断开同步链路;
- 修改目的端的相关配置;启动目标端业务域1对应的应用服务和批处理任务;启动源端和其共用中间件和数据库的应用服务和批处理任务;
- 域名切换到华为云,进行功能和性能验证,确保业务正常。
