过去很长一段时间,很多很公司使用蓝绿部署实现热部署,这种部署具有安全、可靠等特点。是很常见的一种零停机发布方式。
蓝绿部署原理上很简单,就是通过冗余来解决问题。通常生产环境需要两组配置(蓝绿配置),一组是active的生产环境的配置(绿配置),一组是inactive的配置(蓝配置),见下图:
蓝绿部署.png
当要发布新版本的时候,先把新版本发不到蓝环境中,然后让应用程序先热身一下,这个不会影响到绿环境,两个是完全隔离的两个环境。可以在蓝环境上运行一些测试,检查是否能够正常工作。当一切准备就绪以后,向新版本迁移就非常简单,只要修改一下路由配置,将用户从绿环境导向蓝环境即可。这样蓝环境就成了生产环境。如果切换后出现问题,也可以在非常短的时间内把再做一次切换,就完成了回滚。而且同时在线的只有一个版本。蓝绿部署无需停机,并且风险较小。
虽然蓝绿部署具有零停机,风险小等优点,但是也有一些弱点。
- 当切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果数据库后端无法处理,会是一个比较麻烦的问题
- 需要提前考虑数据库与应用部署同步迁移/回滚的问题。
- 在非隔离基础架构上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。
- 成本比较高,冗余产生了额外的维护、配置成本,以及服务器本身运行的开销。
网友评论