如题,怎么实现呢?
首先需要提供控制每次部署的粒度,是要保证50%的service可用,还是每次最多部署10%的机器,这些都是策略。
然后对于每台服务器来讲,都要执行以下步骤:
1 首先将自己从VIP或load balancer中剔除或disable掉,使自己不在serve流量。
2 停止服务器进程。
3 清理环境,将之前的包删除。
4 将新的包,代码版本(解释型)或编译版本(编译型)拉到本地。
5 进行可用性,完整性等检查。
6 建立软链接。
7 启动服务器进程。
8 测试是否可用。
9 将自己加入到VIP或load balancer中,继续开始serve流量。
最后,完成所有的机器的部署。注意这种方式,添加和删除新的host都很容易,每台server最终都是幂等的,但在中间部署状态,即有的server是新版本,有的server是老版本。这种中间状态,如果服务器是无状态的就没有任何问题。但如果是有状态的,那么在上新code的时候就要同时既能支持old version,又要能支持new version, 这样才是安全的,否则就会出现不一致的状态。
原文:http://blog.csdn.net/hongchangfirst/article/details/47723705
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst