蓝绿部署、滚动部署、灰度部署、金丝雀部署
一、Blue/Green Deployment(蓝绿部署)1、部署过程:(1)准备两个相同的应用运行环境,命名为蓝色环境、绿色环境,刚开始,蓝色环境和绿色环境都运行着相同的应用版本V1,只有绿色环境对外提供服务。(2)我们开发了一个新版本V2,那么放到蓝色环境上进行反复的测试、修改、验证,确定达到上线标准后,利用负载均衡器/反向代理/路由等手段将对外服务切换为蓝色环境。(3)一段时间后,如果发生故
一、Blue/Green Deployment(蓝绿部署)
1、部署过程:
(1)准备两个相同的应用运行环境,命名为蓝色环境、绿色环境,刚开始,蓝色环境和绿色环境都运行着相同的应用版本V1,只有绿色环境对外提供服务。
(2)我们开发了一个新版本V2,那么放到蓝色环境上进行反复的测试、修改、验证,确定达到上线标准后,利用负载均衡器/反向代理/路由等手段将对外服务切换为蓝色环境。
(3)一段时间后,如果发生故障,那么迅速切换回绿色环境V1;如果运行没有异常,那么绿色环境更新版本到V2,版本再次一致。
(4)当需要开发下一个版本V3,重复前面的步骤,蓝色绿色相互切换相互备份。
2、特点
1)蓝绿部署无需停机,并且风险较小。
2)蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器。
二、Rolling update(滚动发布)
1、部署过程
滚动发布:一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本,例如每次只取出集群的20%进行升级。
2、特点
1)这种部署方式相对于蓝绿部署,更加节约资源——它不需要运行两个集群、两倍的实例数。
二、灰度发布/金丝雀部署
1、定义
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。
注释:矿井中的金丝雀
17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。
2、部署方式
- 准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
- 从负载均衡列表中移除掉“金丝雀”服务器。
- 升级“金丝雀”应用(排掉原有流量并进行部署)。
- 对应用进行自动化测试。
- 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。
- 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)
在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。
当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。
更多推荐
所有评论(0)