NEWS 新闻动态 > 新闻详情

通过AWS建设平台进行蓝绿部署

admin 发表于:2019-05-05
摘要:当今,业务对市场变化的感知越来越灵敏,业务变化越来越密集,这就要求业务系统的部署与迭代必须更加敏捷和高效。因此,现代云原生架构应运而生。虽然现代云原生架构带来了前所未有的便捷和高效,但高频率的迭代要求又为企业业务的持续运行带来了新的挑战。为了减少因应用系统迭代导致的停机风险和停机时间,最常见的做法就是通过蓝绿部署的方式来快速的将应用从蓝区向绿区切换。

蓝绿部署在理论上非常简单,在非隔离基础架构创建蓝色和绿色两个相同集群的生产环境。蓝色环境是真正的生产环境,服务于所有的访问流量。当系统需要迭代升级时,在绿色环境中做好升级准备,并在某一规定时刻将流量自动路由到绿色环境中。再监控一段必要的时间,且确认绿色环境已经运行无误后,将蓝色环境下线。

但是,在实际操作中,要建立一个相同的绿色环境,并时刻保证该环境的一致性是非常消耗资源的事情。

AWS可以自动的完成整个过程

由于AWS可以批量的创建资源(基于Terraform)并与AWS的API完全兼容,AWS用户(包括IT管理员,运维人员和开发人员)可以轻松的为应用设置蓝绿部署,确保业务系统从蓝环境平滑切换到绿环境。

这样做带来的优势包括:

1、无缝平滑的在线升级业务系统

2、自动化的平滑业务迁移对业务的影响最小,同时迁移成本也最低

3、可以完全自动化的处理CI/CD流程中的一部分,可以帮助实现代码即基础设施

AWS的秘密武器:自动扩展组服务与负载均衡服务的神奇结合

通过对自动扩展组(Auto Scaling)服务进行配置,用户可以非常轻松的为自己的业务系统设定蓝绿环境,并根据配置来设定负载均衡器(Load Balancer)。在AWS中,自动扩展组服务与负载均衡服务是完全集成的,这使得蓝绿部署的配置极其简单,且和在AWS公有云中的体验完全一致。

1.jpg

具体的配置攻略

在本次案例中,我们创建一个非常简单的VPC架构,该VPC具有一个路由表、一个子网和一个已经连接到负载均衡器的自动扩展组。

该扩展组会启动两个实例,并显示这些实例的版本和ID:

2.jpg


在这个项目中,为了证明我们可以访问多个实例,我们关闭了粘性会话策略。

现在,我们可以开始升级了,即将绿色环境切换到蓝色环境。步骤是只需要简单的在Terraform脚本中将1改为2即可。

3.jpg

对于Terraform,这一步即意味着我们修改了云初始化(Cloud-init)配置,指向实例的配置文件也变更到了绿色环境的配置文件。Terraform会自动的新建一个自动扩展组来适应新改变的配置文件。同时,在绿色环境生效前,还会继续保持上一个会话与负载均衡器的持续连接。

4.jpg

秘诀就是“先创造,后毁灭”

在Terraform的帮助下, AWS会将两个自动扩展组连接到同一负载均衡器。负载均衡器中已经集成了健康检查功能。因此,只要新的自动扩展组是健康的,Terraform就会自动删除蓝色的自动扩展组。而所有这些操作都是无缝衔接且完全自动执行。

通过蓝绿部署,可以给用户带来很大价值

1、新产品实现平滑上线。我们可以自由控制新产品的访问用户量,由零开始逐步放开访问量,在新产品开放前期就可以发现、调整问题,控制问题影响面,从而有效降低新产品上线的风险,实现平滑上线。

2、对异常问题的快速回滚。在普通发布模式下,对异常的处理速度往往依赖代码的回滚进度,少则需要数十分钟,多则数小时。而在蓝绿发布模式下,如果遇到重大异常,只需要关闭新产品的访问流量即可,这个过程可能仅需耗时数秒。

3、新老调用的隔离,避免了兼容性问题。蓝绿发布模式下,应用调用控制在单元内部,隔离了单元间的调用。一个单元要么全部是新产品代码,要么全部是老产品代码,不存在新老代码交叉调用的情况,避免了发布期间的新老兼容性问题

4、提高发布效率。蓝绿发布解决了发布顺序问题,由于发布期间完全没有流量,并且没有新老代码交叉调用问题,可以并行同时发布一个单元内所有系统,发布速度有质的提升。

富通云腾是一家从事自主软件开发、软件应用集成、IT高端咨询为主营业务的新一代软件技术企业。目前已独立研发出自主私有云建设平台CloudoorSphere、混合云管理平台CloudoorManagement、智慧运维平台CloudoorInsight等云计算产品。