目录
- 滚动部署
- 蓝绿发布 为什么还需要蓝绿
- 金丝雀发布(canary) 金丝雀和蓝绿的对比
- 灰度发布
- A/B Test
- 实现 kubernetesistIOSpring cloud 网关
- 参考
下图显示了该部署模式:旧版本显示为蓝色,新版本显示为绿色,它们部署在集群中的每一台服务器上 。
文章插图
应用程序套件升级是一个滚动部署的典型例子 。如果原始应用部署在容器中,升级可以一次处理一个容器 。修改每个容器从应用供应商的站点上下载最新的镜像 。如果其中的一个应用存在兼容性问题,旧的镜像可以重新创建这个容器 。在这种情况下,套件的新旧版本应用可以共存,直到每个应用都更新完毕 。
但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认 。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题 。
为了解决这个问题,我们需要为滚动升级实现流量控制能力 。
蓝绿发布蓝绿发布提供了一种零宕机的部署方式 。不停老版本,部署新版本进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本 。始终有两个版本同时在线,有问题可以快速切换 。
蓝绿发布的特点:
在部署应用的过程中,应用始终在线 。并且新版本上线过程中,不会修改老版本的任何内容,在部署期间老版本状态不受影响 。只要老版本的资源不被删除,可以在任何时间回滚到老版本 。
以下示意图可描述灰度发布的大致流程:先切分20%的流量到新版本,若表现正常,逐步增加流量占比,继续测试新版本表现 。若新版本一直很稳定,那么将所有流量都切分到新版本,并下线老版本 。
文章插图
切分20%的流量到新版本后,新版本出现异常,则快速将流量切回老版本 。
文章插图
蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器 。
为什么还需要蓝绿有了灰度发布之后,为什么还需要蓝绿发布呢?主要有如下几点考虑:
- 应用在生产环境全量发布后,发现故障时回滚时间慢 。当线上核心应用存在几十上百的服务实例时,应用实例分批滚动回滚,部分业务应用启动时间需要几分钟,导致整个回滚过程的时间可能超过十分钟,甚至几十分钟 。
- 灰度发布期间能发现的问题有限 。如数据库慢查问题、死锁问题等,10%流量很难发现,可能只会在100%流量中才容易暴露 。
- 灰度发布成功后,仍然需要进行全量发布,在此过程中仍有较多不确定性,如因一些未预料的异常导致发布失败等 。
- 蓝绿发布期间,流量全部切至新集群时,原稳定集群继续保持在线,若新集群有问题,可通过流量控制秒级切回至原稳定集群,没有应用启动以及其他等待时间 。
- 蓝绿发布期间,新集群规模与原稳定集群规模一致,即使是瞬时大流量也没有问题 。
- 蓝绿发布期间,新集群承载全站流量,容易验证各种场景,如数据库死锁等并发问题 。
- 蓝绿发布新集群验证完成后,已经处于正常服务状态,不会再引入不确定性的变更操作 。
“
为什么叫金丝雀发布呢,是因为金丝雀对矿场中的毒气比较敏感,所以在矿场开工前工人们会放一只金丝雀进去,以验证矿场是否存在毒气,这便是金丝雀发布名称的由来 。
推荐阅读
- 乐视|乐视发布九大声明 调侃:活到今天“何止是奇迹简直不科学”
- 女子|女子违法开车发视频求举报:天天走、我很怕吗?
- 联想|联想用户谨慎更新!新BIOS可能导致笔记本启动失败、蓝屏等故障
- 一套BS架构,支持PC、H5端的开源知识管理系统、知识库系统
- PS中图层、通道的概念和作用?
- Linux:文件解压、复制和移动的若干坑
- 红茶喝几泡,红茶干茶的色泽
- 了解路由器的寻址转发,学习默认路由、静态路由的配置部署
- 一步步教你虚拟机安装Linux
- 无线路由器|双频14天线!新华三NX15000万兆路由发布:首发999元