蓝绿部署
1 需要两个相同的环境(基础架构),蓝色环境 + 绿色环境。
2 当你想要升级某模块/应用 ,在蓝色环境中进行操作,部署新版本,并进行测试。
3 监测新版本应用,是否有故障和异常。
3.1 运行良好,删除绿色环境使用的资源。
3.2 运行出现了问题,通过负载均衡器/反向代理/路由指向快速回滚到绿色环境。
注意细节:
切换环境时,需要妥当处理未完成的业务和新的业务。
需要考虑新旧服务的兼容性,
需要提前考虑数据库与应用部署同步迁移 / 回滚的问题;
蓝绿部署需要有基础设施支持
在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险
滚动发布
先让部分个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。
相对于蓝绿部署,更加节约资源,但回滚会变得很麻烦。
灰度发布
AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
金丝雀部署也就是灰度发布的一种方式。
1 准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
2 从负载均衡列表中移除掉“金丝雀”服务器。
3 升级“金丝雀”应用(排掉原有流量并进行部署)。
4 对应用进行自动化测试。
5 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。
6 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)
相关链接:
https://www.v2ex.com/t/344341
https://blog.youkuaiyun.com/u013970991/article/details/77090717