关注公众号:AWS爱好者(iloveaws)
文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
网站:www.iloveaws.cn
Hello大家好,欢迎来到《AWS解决方案架构师认证 Professional(SAP)中文视频培训课程》,我们今天继续Elastic Beanstalk的内容,介绍Elastic Beanstalk部署策略。
我们开始今天的课程内容。
上节课我们实操演示了使用EB部署了一个示例应用程序,那如果之后需要更新EB上的应用程序时,就需要在EB对新版本的应用程序进行部署。
我们先来看下EB支持的部署策略,EB支持4种部署策略,分别为:
一次性部署全部,滚动部署,附加批次的滚动部署,以及不可变的部署。
我们需要了解每一种部署策略具体是什么,以及使用每种部署策略具体的场景。
一次部署全部策略
首先,一次部署全部策略,All at once。
假设我们现在有一个新版本的应用程序需要部署,“一次部署全部策略”表示将新版本同时部署到所有实例,比如我们现在EB的环境一共有两个实例,那么一次部署全部表示将新版本同时部署到这两个实例。
在执行部署时,环境中的所有实例将短时间禁用。所以一次部署全部策略,对于业务是有停机时间的。
当因为某些原因更新新版本应用程序失败时,只能通过手动重新部署之前的旧版本完成版本的回滚过程。
一次性部署,因为是一次性部署全部实例,所以所需的部署时间应该是4种策略中最短的;但是缺点是在部署的过程中,所有的实例会短时间内禁用,也就是说部署过程中您的WEB应用程序是无法对外提供服务的。
以上,是一次部署全部策略。
滚动部署
我们来看下第二种部署策略,滚动部署。
滚动部署,是将新版本的应用程序按批次、分批进行部署,批量部署新版本程序。
前面的“一次部署全部策略”,是将新版本同时部署到所有实例;而“滚动部署”,是在部署阶段对实例分批次进行部署,分批次禁用服务,然后部署新版本,在恢复禁用提供服务。
在滚动部署期间,一些实例通过旧版本的应用程序处理请求,而已完成批次中的实例通过新版本处理其他请求,就是说会有同时存在新老版本应用程序提供服务的情况。滚动部署不是将新版本同时部署到所有实例的,如果新版本的应用程序有问题,采用滚动部署策略并不会一下同时影响所有用户。
滚动部署有一个特点是,因为采用的是分批次进行部署,所以在部署过程中,您配置的实例总体容量将会减少。
什么意思呢?假设我们现在有3个实例对外提供服务,当采用滚动部署时,会将其中一个实例禁用服务,然后进行部署新版本应用程序,这样的话在部署过程中您提供服务的实例数量就由之前一共3个实例变为2个,提供服务的 总的容量减少了。
所以采用滚动部署策略,就需要关注应用程序的负载对于容量的需求,如果需要3个实例保障正常服务,采用了滚动部署策略,就可能会造成在部署过程中容量减少给应用程序造成性能问题,这一点要注意。
附加批次滚动部署
上述的问题,就有了第三种部署策略“附加批次滚动部署”,滚动部署的另一个版本。
“附加批次滚动部署” 同样也是批量部署新版本应用程序,但不同的是它会先启动新的额外的实例批次进行部署,以确保部署过程中应用程序能够使用完整容量。
比如我们现在在EB有3个实例,采用附加批次滚动部署新版本应用程序时,EB会额外启动新实例进行部署,应用程序始终保持在部署过程中有完整的容量可用。
在部署完成后,Elastic Beanstalk 将终止附加的实例批次。
不可变部署
第四个部署策略是不可变部署,Elastic Beanstalk 在您环境的负载均衡器后面创建临时 Auto Scaling 组以及新实例,然后将新版本的应用程序先部署到这个新的auto-scaling组的新的一组实例上。此实例和在之前配置中运行的原始 Auto Scaling 组中的所有实例一起,为流量提供服务。然后当部署完成后,当新的实例完成健康状况检查后,会将这些新的实例移动到旧的auto-scaling组,并终止临时的 Auto Scaling 组以及旧的实例。
执行不可变部署时,部署失败带来的影响是最低的,如果部署新版本的新的实例未通过运行状况检查,则 Elastic Beanstalk 将终止这些实例,删除新的auto-scaling组,并使原始实例保持不变提供服务。
所以,基于这些特性,采用不可变部署策略,是生产环境的核心业务的首选之一。
好,以上就是Elastic Beanstalk部署策略,这些内容对于考试非常的重要,会有涉及的一些考点,希望大家重点关注。
以上就是我们今天的内容,希望能够给大家带来帮助。
希望此系列教程能为您通过 AWS解决方案架构师认证 Professional 认证考试带来帮助,如您有任何疑问
关注公众号:AWS爱好者(iloveaws)
文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
网站:www.iloveaws.cn