标签:核心 意思 情况 包括 2018年 follow zha 替换 方式
首富带你畅谈:蓝绿部署、滚动发布、灰度发布/金丝雀发布笔者: 张首富
时间: 2019-01-24晚
QQ群: 895291458
博客地址: www.zhangshoufu.com
根据2018年的DevOps
发展报告来看,目前的DevOps
发展速度非常之快,已经逐渐成为企业运维的标准方案.DevOps
的核心就是敏捷
和高效
,敏捷
和Scrum
开发技术曾被认为是最好的技术.
既然公司用到了CI/CD
肯定就肯定避免不了持续部署,所以我们就需要考虑一套适合我们的发布方式,这个时候我们就需要了解一下这几个发布方式到底是什么意思,有很么好处,他们之间的差别在哪个地方.
蓝绿部署就是不停止使用老版本的情况下部署新版本进行测试,测试你ok后,将流量切换到新版本,然后老版本也升级到新版本
1,蓝绿部署无需停止,直接新旧版本都能使用,等待新版本测试正常之后才把流量迁移过来
2,需要两套相同的环境
这个地方拿web应用来做演示再也合适不过了,
1,把所有的请求都代理到老版本代码的Nginx服务器上,然后测试人员在新版本代码的Nginx上测试功能是否合格正常
等待新版本代码所有功能验证通过之后我们在把流量切换到新版本代码所在的集群,等待观察使用一阶段之后再办原来老版本代码的服务器替换成更新的代码,
就这样新旧代码上线测试发布,这个过程叫蓝绿发布.
新代码发布的时候不会影响旧代码,如果出现问题,我们只需要把流量全部迁移到老代码集群即可,风险比较小.
一般是取出一个或多个服务器先停止服务,更换新的代码,然后投入生产使用,等待稳定在更换一批服务器的代码,周而复始,直到老版本完全被替换掉
这种部署的方式很像蓝绿部署,但是有和蓝绿部署不一样,他比蓝绿部署更加的节省资源(相同的集群不需要部署两套)
1,现在其中的一台或者多台机器上部署新代码,然后提供服务
2,等过一段时间发现没有什么大问题,开始接着替换代码
3,周而复始直到所有的代码被替换完成
用户体验影响小,体验较平滑
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀发布也就是灰度发布的一种方式。
矿井中的金丝雀
17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。这就好比我们先哪一个测试看看用户反应,如果没有问题继续发布
1,准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
2, 在原有的Nginx 后端中提出金丝雀
服务器,升级金丝雀
服务器上的应用代码,对齐进行测试
3,带基础测试通过之后再把它加回到服务器急群众,来检测连通性和健康检查
4,带测试结束之后,升级其他服务器代码至新代码
用户体验影响小;
如果出问题只是一台服务器,不影响我们线上的业务,就是出了问题我们也能快速的解决(把金丝雀撤回来)
发布工具比较复杂,
参考:
https://www.v2ex.com/t/344341
http://www.10tiao.com/html/773/201803/2247487627/1.html
标签:核心 意思 情况 包括 2018年 follow zha 替换 方式
原文地址:http://blog.51cto.com/13447608/2346437