文章目录
-
-
- 运维发布/部署的方式
-
- 蓝绿部署
-
-
- 概述
- 特点
- 布署过程
- 小结
- 注意事项
- 特点
- 适用场景
-
- 灰度发布(金丝雀发布)
-
-
- 灰度发布/金丝雀发布由以下几个步骤组成:
- 好处
-
- 滚动发布
-
-
- 特点
- 缺点
- 红黑部署
-
-
运维发布/部署的方式
蓝绿部署
概述
蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。
特点
蓝绿部署无需停机,并且风险较小。
布署过程
部署版本1的应用(一开始的状态)
所有外部请求的流量都打到这个版本上。
部署版本2的应用
版本2的代码与版本1不同(新功能、Bug修复等)。
利用负载均衡将流量从版本1切换到版本2。
如版本2测试正常,就删除版本1正在使用的资源(例如实例),从此正式用版本2。
小结
在部署的过程中,应用始终在线,保证系统在不间断提供服务。新版本上线的过程中,并没有修改老版本的任何内容,在部署期间,老版本的状态不受影响。这样风险很小,并且,只要老版本的资源不被删除,理论上可以在任何时间回滚到老版本。
注意事项
当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;
特点
优点:升级切换和回退速度非常快。
缺点:切换是全量的,如果 V2 版本有问题,则对用户体验有直接影响。 需要两倍机器资源。
适用场景
对用户体验有一定容忍度的场景。
机器资源有富余或者可以按需分配(AWS 云,或自建容器云)。
灰度发布(金丝雀发布)
金丝雀发布这个名称来源于旷工下矿之前会用金丝雀去探毒
灰度发布/金丝雀发布由以下几个步骤组成:

在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。
好处
提前获得目标用户的使用反馈;
根据反馈结果,做到查漏补缺;
发现重大问题,可回滚“旧版本”;
补充完善产品不足;
快速验证产品的 idea。
滚动发布
滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。
- 红色:正在更新的实例
- 蓝色:更新完成并加入集群的实例
- 绿色:正在运行的实例
特点
- 用户无感知,平滑过渡;
- 节约资源。
缺点
- 部署时间慢,取决于每阶段更新时间;
- 发布策略较复杂;
- 无法确定OK的环境,不易回滚。
红黑部署
这是Netflix采用的部署手段,Netflix的主要基础设施是在AWS上,所以它利用AWS的特性,在部署新的版本时,通过AutoScaling Group用包含新版本应用的AMI的LaunchConfiguration创建新的服务器。测试不通过,找到问题原因后,直接干掉新生成的服务器以及Autoscaling Group就可以,测试通过,则将ELB指向新的服务器集群,然后销毁掉旧的服务器集群以及AutoScaling Group。
红黑部署的好处是服务始终在线,同时采用不可变部署的方式,也不像蓝绿部署一样得保持冗余的服务始终在线。
需要注意: 在蓝绿色部署中,两个版本可能暂时同时获取请求,而在红黑中,只有一个版本在任何时间点获得流量。