蓝绿部署、滚动发布、灰度发布的介绍以及最佳实践

蓝绿部署、滚动发布、灰度发布的介绍以及最佳实践

在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。

为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍。

蓝绿部署

所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器。

滚动发布

滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。

所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只需要11台就行了。

但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。

为了解决这个问题,我们需要为滚动升级实现流量控制能力。

灰度发布

灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。

在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。

当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。

如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内

使用脉冲云实现灰度发布

脉冲云的部署管理可以轻松实现带有流量管理功能的灰度发布。正常编辑应用信息后点击保存,然后脉冲云会提示直接升级或灰度发布。

直接升级就是使用一般的滚动升级,点击灰度发布后可以人工干预升级过程,进行流量控制。

选择灰度发布后,就会呈现灰度发布控制面板。

在这个控制面板上,可以拖拉滑块,快速调整新旧版本的运行副本数量,同时也可以按百分比,将流量导入到新版本上。此外,还可以通过匹配HTTP Header,指定个别用户的流量到新版本上。

除了匹配用户流量的HTTP请求头,还可以直接指定匹配请求头中的Cookie信息,匹配规则支持精确匹配、包含、正则、前缀、后缀等,甚至还允许反向匹配。

当确认新版本运行无误后,就可以点击 完成升级 按钮,就会将流量全部切换到新版本上,并且销毁掉所有老版本应用。如果新版本出了问题,可以点击 取消升级 按钮,立即将流量切回老版本,并销毁掉新版本应用。

最佳实践

在新版本应用发布时,为了服务器不停机升级,使用灰度发布策略,在灰度发布开始时,使用HTTP Header 匹配指定测试人员的流量到新版本上,然后当新版本内部测试通过后,可以再按百分比,将用户流量一点一点导入到新版本中,比如先导入10%观察一下运行情况,然后再导入20%,如此累加,直到将流量全部导入到新版本上,最后完成升级,如果期间发现问题,就立即取消升级,将流量切回到老版本。

运用灰度发布,就再也不需要加班到深夜进行停机升级了,在白天就可以放心大胆地、安全地发布新版本。

原文地址:https://www.cnblogs.com/ciquankun/p/12096979.html

时间: 2024-08-28 14:58:59

蓝绿部署、滚动发布、灰度发布的介绍以及最佳实践的相关文章

蓝绿部署、滚动部署、灰度发布、金丝雀发布

微服务部署:蓝绿部署.滚动部署.灰度发布.金丝雀发布 在项目迭代的过程中,不可避免需要"上线".上线对应着部署,或者重新部署:部署对应着修改:修改则意味着风险. 目前有很多用于部署的技术,有的简单,有的复杂:有的得停机,有的不需要停机即可完成部署.本文的目的就是将目前常用的布署方案做一个总结. 一.蓝绿布署 Blue/Green Deployment(蓝绿部署) 1.定义 蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本. 1.特点

首富带你畅谈:蓝绿部署、滚动发布、灰度发布/金丝雀发布

首富带你畅谈:蓝绿部署.滚动发布.灰度发布/金丝雀发布 笔者: 张首富 时间: 2019-01-24晚 QQ群: 895291458 博客地址: www.zhangshoufu.com 根据2018年的DevOps发展报告来看,目前的DevOps发展速度非常之快,已经逐渐成为企业运维的标准方案.DevOps的核心就是敏捷和高效,敏捷和Scrum开发技术曾被认为是最好的技术.既然公司用到了CI/CD肯定就肯定避免不了持续部署,所以我们就需要考虑一套适合我们的发布方式,这个时候我们就需要了解一下这几

一文了解蓝绿发布/灰度发布/滚动发布

应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务. 长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布.灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题. 一. 蓝绿发布 项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署.B组仍然继续提供服务. 当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署.A组重新提供服务. 最后,B组也升级完成,负载均衡重新接入B

什么是蓝绿部署和滚动部署

海豚的秘密 大家都知道海豚这种可爱的海洋动物.但又有多少人知道,海豚可以永远不睡觉. 是什么样的能力,使得海豚可以永远保持清醒呢?依靠的是海豚大脑特殊的运作方式. 像人一样,海豚的大脑也分为左脑和右脑两个部分.在海豚活跃的状态下,左脑和右脑都是清醒的: 当然,海豚也是血肉之躯,也是需要休息的.在海豚休息的状态下,其中一半大脑会进入睡眠,另一半大脑仍然保持清醒,以面对各种外界情况. 每隔两个小时,这种一半睡眠一半清醒的状态会进行交替,比如这一刻左脑睡眠右脑清醒,下一刻左脑清醒右脑睡眠. 这就是海豚

k8s 蓝绿部署之 Service Label

什么是蓝绿部署 蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量 蓝绿部署流程图 K8S中如何实现蓝绿部署 通过k8s service label标签来实现蓝绿发布 通过Ingress 控制器来实现蓝绿发布 通过Istio来实现蓝绿发布,或者像Istio类似的服务 这次先讲通过k8s service label标签来实现蓝绿发布,Istio实现蓝绿发布下期再分享. k8s 蓝绿 yaml 配置 service.yaml 文件 apiVersion: v1 kind: Servi

如何跨不同版本K8S,为有状态工作负载做蓝绿部署

容器的生态正在爆发!不仅仅应用层在快速变化,还有用于管理应用程序的平台:Kubernetes,也在快速变化.这就为Ops团队带来了一个必须要解决的难题.IT团队如何才能保证一款应用程序能够在各种不同版本的Kubernetes上都能良好运行呢?PX-Motion演示视频:如何跨不同版本Kubernetes,为有状态的工作负载做蓝绿部署 蓝-绿部署是一种专门用于解决这一问题的技术,并能够降低生产环境部署的过程中的停机或错误风险.在蓝绿部署场景下,用户需要构建两个完全相同的生产环境(分别称为蓝与绿),

一文搞懂蓝绿发布、灰度发布和滚动发布

应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务.长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布.灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题. 7.1 蓝绿发布 项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署.B组仍然继续提供服务.当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署.A组重新提供服务.最后,B组也升级完成,负载均衡重新接入B组,

一文搞懂蓝绿发布、灰度发布和滚动发布(转)

应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务. 长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布.灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题. 一. 蓝绿发布 项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署.B组仍然继续提供服务. 当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署.A组重新提供服务. 最后,B组也升级完成,负载均衡重新接入B

【微服务从入门到精通】:(一)微服务的蓝绿发布及灰度发布

蓝绿部署 基本上,蓝绿部署是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间. 简单来说,你需要准备两个相同的环境(基础架构),在蓝色环境运行当前生产环境中的应用,也就是旧版本应用,如图中 App1 version1 . App2 version1 . App3 version3 . 当你想要升级 App2 到 version2 ,在蓝色环境中进行操作,即部署新版本应用,并进行测试.如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了. 随后你需要监测新版本应用,