更新时间:2025-05-06 GMT+08:00

停服切换方案

停服时长评估

基于华为云的迁移经验,切换期间大部分应用停服时长在0.5小时~3.5小时,下面停服时长可供参考:

表1 停服时长分析

上云迁移停服时长评估

总停服时长(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接口调用或脚本批量操作,减少操作时间

停服时长例外情况

  1. 停服时长小于30分钟:若停服时长要求小于30分钟,可以通过分批迁移,划分较小的批次或者采用分层切换(比如先切应用层再切数据层)的方式,且所有操作都脚本化/工具化,停服时长也有可能小于30分钟。
  2. 停服时长大于3.5小时:迁移规模和数据量大、业务关联关系复杂无法分批、切换Runbook操作复杂且自动化程度不高,停服时长可能大于3.5小时,有的甚至8~10小时。比如某大型企业600+微服务,100+个中间件,80+数据库,1000+个批处理任务,4000+个测试用例,停服时长约8个小时。

减少停服时长的方法(分钟级)

停服时长与多个因素有关,企业可以通过分批+自动化+多次演练+业务适配改造,来减少停服时长。下图是四种减少停服时长的方法:

图1 减少停服时长的方法

四种停服切换方式

表2 四种停服切换方式

切换方式

适用场景

停服时长

停服次数

影响范围

一把切(应用层和数据层整体停机后切换)

适用于停机窗口较长、无法清晰梳理应用之间和应用与数据层之间关联关系的业务

1

全部业务

分3~4次切换,应用层先灰度切流(1%,30%,…100%),然后停机,数据层整体切换,再将内外部域名切换到目的端

适用于停机窗口较小,业务可接受短时间的跨云访问,跨云带宽和时延评估可以满足业务需求。

1

全部业务

分5~10次切换,应用灰度切流(1%,30%,…100%),然后数据层分批次切换(比如:第一批缓存+数据库,第二批缓存+数据库,第三批中间件消息队列等)

适用于停机窗口较小, 业务可接收短时间的跨云访问,跨云带宽和时延评估可以满足业务需求,且切换多次对内外部影响可控。

多次

部分业务

按照业务域分批切

适用于业务域相对独立,关联关系简单,可独立拆分上云。

多次

部分业务

一把切(应用层和数据层整体停机后切换)

准备工作:

  1. 源端应用和数据已迁移到华为云;
  2. 华为云应用层和数据层已完成业务功能和性能验证,可正常使用;

业务切换:

  1. 停止源端应用层和批处理任务,使源端不再产生新增数据,检查中间件消息无新增,检查数据层无新增;
  2. 源端数据层和华为云数据层增量同步完成,并完成数据一致性对比,断开同步链路;
  3. 华为云上的应用层和数据层内部域名等配置修改,重启华为云上的应用服务;
  4. 外部DNS域名解析,将解析地址从源端接入层切换到华为云接入层,使外部流量进入华为云;
图2 一把切方案

应用层灰度切流,数据层整体切换

应用层灰度切流前做好如下准备工作:

  1. 源端应用层已迁移或部署到华为云;
  2. 华为云应用层跨云访问源端数据库,已完成业务功能和性能验证,可正常使用。

准备工作完成过后,从源端接入层引流,按照1%~30%,…100%逐步加大流量的方式,流量逐步灰度切换到华为云接入层。

图3 应用层灰度切流

接下来进行数据层整体切换,步骤如下:

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

应用层灰度切流,数据层分批切换

应用层灰度切流前做好如下准备工作:

  1. 源端应用层已迁移或部署到华为云;
  2. 华为云应用层跨云访问源端数据库,已完成业务功能和性能验证,可正常使用。

准备工作完成过后,从源端接入层引流,按照1%~30%,…100%逐步加大流量的方式,流量逐步灰度切换到华为云接入层。

图5 应用层灰度切流

接下来进行数据层分批切换,某批次数据层切换步骤如下:

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

该方案的优点如下:

  1. 应用切换阶段操作简单,引流阶段只调整网关流量权重和负载均衡流量权重即可;
  2. 网关、负载均衡灰度引流,一旦有问题,随时可以把流量切换回原环境;
  3. 应用切换阶段,应用不需要停止,可正常访问;数据层切换阶段,仅需要部分应用停止写入,但可以读;
  4. 数据层单次只切换部分节点,操作较少。只需要部分业务停机,其他业务可以正常使用。

    该方案的缺点如下:

  5. 需要应用层和数据层梳理,需要花费大量人力和时间;
  6. 跨云后,数据层回退难度较大;
  7. 跨云阶段依赖专线、如果有大量数据需要跨云访问,可能会造成业务延迟。

按照业务域分批切换

准备工作:

  1. 本批次要切换的业务域如X业务已完成部署及迁移;
  2. 本批次要切换的业务域已内部通过功能和性能验证,可正常使用。

本批次业务域切换步骤:

  1. 停止源端业务域1对应的应用层和批处理任务等,使其不再产生新增数据;停止和本业务域共用中间件和数据库的应用和批处理任务等,使其不再产生新增数据;
  2. 检查本批次要切换的中间件和数据层无新增数据,数据对比一致后断开同步链路;
  3. 修改目的端的相关配置;启动目标端业务域1对应的应用服务和批处理任务;启动源端和其共用中间件和数据库的应用服务和批处理任务;
  4. 域名切换到华为云,进行功能和性能验证,确保业务正常。
图7 按业务域分批切