[关闭]
@yanglfyangl 2018-08-03T04:11:58.000000Z 字数 1731 阅读 417

通过 Jeknis Pipe line来做支持“回滚”的线上发布

前言

我们目前碰到的问题主要是两个

  1. 上线的流程长,人工参与时间相对长。
  2. 发现问题的成本较高,很难在分钟级发现重大问题。
  3. 上线回滚方案不支持,一旦出重大问题,无法回退到上一版本。

目前与华为云讨论后的结果,大部分组件都支持备份恢复到某个时间点。(有的恢复是一个停机的,但停机时间并不长)

这样,上线过程容易变成一个“华山一条路”,未来业务量大的时候,容易出问题。

Jeknis 的 PipePline介绍

https://jenkins.io/doc/pipeline/steps/kubernetes-pipeline-steps/
http://cloud.spring.io/spring-cloud-pipelines/multi/multi_jenkins-pipeline-k8s.html

此处输入图片的描述

建议的逻辑

成功失败数据备份库依赖更新拉取启动新镜像运行测试更新镜像版本,上线成功停止新镜像恢复备份数据拉取上一版本镜像其它操作, 例如数据补偿脚本

也就是PipeLine Stage 大概有如下几个增加的:

  1. OnlineBackup: 包括图,ES,Mysql。。。可以调用华为云的API(目前基本都有)
  2. ScriptUpdate:主要是更新mysql表结构(或有其它对应的事情)
  3. FunctionalTesting:调用我们的测试脚本进行测试。(要求是5分钟内完成测试,给出结果来)
  4. Rollback: 一旦测试失败(比如失败率过高,关键case 失败等等),停止当前的服务,回滚数据,回滚原来的服务,恢复业务。

这样,上线流程可以快速验证,不影响用户。

更多

未来,节点数更多,用户量更大的时候,要考虑基于pipeline的A/B升级策略。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注