滚动发布
2019-02-14 本文已影响0人
Minato666
滚动发布:一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。
部署步骤:
- 滚动发布一般先发1台或者一个小比例,如2%服务器,主要做流量验证用
- 每次发布时需要先将老版本V1流量从负载均衡中移除,然后清除老版本,部署新版本,在将负载均衡流量接入新版本,尽量保证用户体验不受影响
- 一次滚动式发布一般由若干个发布批次组成,每批的数量一般是可以配置的(可以通过发布模板定义)。例如第一批 1 台,第二批 10%,第三批 50%,第四批 100%。每个批次之间留观察间隔,通过手工验证或监控反馈确保没有问题再发下一批次,所以总体上滚动式发布过程是比较缓慢的
- 回退是发布的逆过程,将新版本流量从 LB 上摘除,清除新版本,发老版本,再将 LB 流量接入老版本。和发布过程一样,回退过程一般也比较慢的。
滚动发布的优点是用户体验影响较小,较平滑,相对于蓝绿部署来说比较节省资源,但是发布和回退时间比较缓慢,而且回退比较困难,假设在某一次发布中,我们需要更新100个实例,每次更新10个实例,每次部署需要5分钟。当滚动发布到第80个实例时,发现了问题,需要回滚,这个回滚却是一个痛苦,并且漫长的过程。还有一个问题是因为是逐步更新,那么我们在上线代码的时候,就会短暂出现新老版本不一致的情况,如果对上线要求较高的场景,那么就需要考虑如何做好兼容的问题。