笔者在持续学习的过程中,得到了红帽淡成、王洪涛、Nico等多位大师的指点,在此表示感谢。
5分钟了解一个容器典型应用场景系列篇
关于容器解决方案的概念、架构、成功案例,笔者已经分享了很多了。为了使读者能够花更短的时间,迅速感性地解容器的典型应用场景。笔者从今天开始,推出“5分钟了解一个容器典型应用场景”系列片。每次分享一个场景,采用文字描述+视频展示的方式。本系列分享内容将分别是:灰度发布、CI/CD、开发自动化、微服务、业务弹性扩展。
概念介绍
灰度发布
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
蓝绿发布
与灰度发布不同的地方是,蓝绿发布是AB test中,B上线,A下线。蓝绿发布也称热部署,是一种将用户从一个版本几乎瞬间转移到另一个版本
操作步骤
笔者展示的实验环境模拟了AB test的场景。在测试环境中,首先有个php代码库。当前版本的代码版本为V1(index.php)。通过该版本代码,部署一个V1版本的应用(网页访问输出结果为:I am VERSION 1 My Pod IP is : 172.17.0.7)。然后,将代码修改为V2,再部署一个V2版本的应用(网页访问输出结果为:I am VERSION 2 My Pod IP is : 172.17.0.6)
两个应用部署好以后:
第一步:只在router上暴露V1版本的应用。
这样,通过浏览器访问域名,得到的结果应该是V1版本的应用输出:
第二步:将router上路由的指向,从V1改到V2,用于模拟蓝绿发布。
这样,用户还访问之前的域名(http://v1-grey.192.168.137.10.xip.io/)的请求,首先是不会中断的,其次其输出的结果是V2版本应用的内容。
第三步:将V1和V2版本的应用,同时通过现有域名暴露出去,并且设置域名访问访问两个版本应用的权重,模拟灰度发布。然后用curl http://v1-grey.192.168.137.10.xip.io ,得到的访问两个版本应用的比重,与预设值是相同的。
例如,我将两个版本的应用访问权重设置为6:4。也就是60%的终端访问V2,40%的用户访问V1.
设置完毕后,通过浏览器和命令行都可以看到设置的结果(权重的设置是动态调整、即时生效的)
然后通过写一个循环,查看返回结果,与我的预设值是相同的,我们看到,持续10次对URL的访问中,6次指向了V2,4次指向了V1。达到了我们想要的效果。
操作视频
总结
本文只是简单地展示了Openshift灰度发布、蓝绿发布的功能。在实际的应用场景中,往往情况更为复杂,需要考虑的因素更多。