通过AWS建设平台进行蓝绿部署
蓝绿部署在理论上非常简单,在非隔离基础架构创建蓝色和绿色两个相同集群的生产环境。蓝色环境是真正的生产环境,服务于所有的访问流量。当系统需要迭代升级时,在绿色环境中做好升级准备,并在某一规定时刻将流量自动路由到绿色环境中。再监控一段必要的时间,且确认绿色环境已经运行无误后,将蓝色环境下线。
但是,在实际操作中,要建立一个相同的绿色环境,并时刻保证该环境的一致性是非常消耗资源的事情。
AWS可以自动的完成整个过程
由于AWS可以批量的创建资源(基于Terraform)并与AWS的API完全兼容,AWS用户(包括IT管理员,运维人员和开发人员)可以轻松的为应用设置蓝绿部署,确保业务系统从蓝环境平滑切换到绿环境。
这样做带来的优势包括:
1、无缝平滑的在线升级业务系统
2、自动化的平滑业务迁移对业务的影响最小,同时迁移成本也最低
3、可以完全自动化的处理CI/CD流程中的一部分,可以帮助实现代码即基础设施
AWS的秘密武器:自动扩展组服务与负载均衡服务的神奇结合
通过对自动扩展组(Auto Scaling)服务进行配置,用户可以非常轻松的为自己的业务系统设定蓝绿环境,并根据配置来设定负载均衡器(Load Balancer)。在AWS中,自动扩展组服务与负载均衡服务是完全集成的,这使得蓝绿部署的配置极其简单,且和在AWS公有云中的体验完全一致。
具体的配置攻略
在本次案例中,我们创建一个非常简单的VPC架构,该VPC具有一个路由表、一个子网和一个已经连接到负载均衡器的自动扩展组。
该扩展组会启动两个实例,并显示这些实例的版本和ID:
在这个项目中,为了证明我们可以访问多个实例,我们关闭了粘性会话策略。
现在,我们可以开始升级了,即将绿色环境切换到蓝色环境。步骤是只需要简单的在Terraform脚本中将1改为2即可。
对于Terraform,这一步即意味着我们修改了云初始化(Cloud-init)配置,指向实例的配置文件也变更到了绿色环境的配置文件。Terraform会自动的新建一个自动扩展组来适应新改变的配置文件。同时,在绿色环境生效前,还会继续保持上一个会话与负载均衡器的持续连接。
秘诀就是“先创造,后毁灭”
在Terraform的帮助下, AWS会将两个自动扩展组连接到同一负载均衡器。负载均衡器中已经集成了健康检查功能。因此,只要新的自动扩展组是健康的,Terraform就会自动删除蓝色的自动扩展组。而所有这些操作都是无缝衔接且完全自动执行。
通过蓝绿部署,可以给用户带来很大价值
1、新产品实现平滑上线。我们可以自由控制新产品的访问用户量,由零开始逐步放开访问量,在新产品开放前期就可以发现、调整问题,控制问题影响面,从而有效降低新产品上线的风险,实现平滑上线。
2、对异常问题的快速回滚。在普通发布模式下,对异常的处理速度往往依赖代码的回滚进度,少则需要数十分钟,多则数小时。而在蓝绿发布模式下,如果遇到重大异常,只需要关闭新产品的访问流量即可,这个过程可能仅需耗时数秒。
3、新老调用的隔离,避免了兼容性问题。蓝绿发布模式下,应用调用控制在单元内部,隔离了单元间的调用。一个单元要么全部是新产品代码,要么全部是老产品代码,不存在新老代码交叉调用的情况,避免了发布期间的新老兼容性问题
4、提高发布效率。蓝绿发布解决了发布顺序问题,由于发布期间完全没有流量,并且没有新老代码交叉调用问题,可以并行同时发布一个单元内所有系统,发布速度有质的提升。
富通云腾是一家从事自主软件开发、软件应用集成、IT高端咨询为主营业务的新一代软件技术企业。目前已独立研发出自主私有云建设平台CloudoorSphere、混合云管理平台CloudoorManagement、智慧运维平台CloudoorInsight等云计算产品。