停服切换方案
停服时长评估
基于华为云的迁移经验,切换期间大部分应用停服时长在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对应的应用服务和批处理任务;启动源端和其共用中间件和数据库的应用服务和批处理任务;
 - 域名切换到华为云,进行功能和性能验证,确保业务正常。