aws elb_使用AWS ECS和ELB零停机时间部署

aws elb

随着开发团队进一步推动持续交付,在不中断用户的情况下将更新部署到应用程序正逐渐成为越来越受欢迎的做法。 亚马逊的EC2容器服务通过紧密的Elastic Load Balancer集成帮助使此操作变得比以往更加容易。

谁需要零停机时间部署?

对这个问题的回答取决于您问的是谁。 最常见的答案是拥有24/7的稳定流量的全球网站或带有服务水平协议(SLA)的高可用性服务,其中包括停机时间的保证。 理论上,该盒子中不适合的所有内容都可以在数小时后部署,而对用户的干扰最小。

随着越来越多的团队转向以快速反馈为重点的连续交付/部署,人们越来越希望能够在一天中的一天中以及在用户活跃于站点的情况下多次部署。 其他团队可能只是珍惜他们的睡眠。 无论出于何种原因,在一天中没有零停机过程的情况下进行部署都会给用户带来明显的停机,从而破坏他们对您的站点或服务的信心。 那很不好。

零停机时间部署是什么样的?

从根本上讲,零停机部署涉及将运行新代码的服务器换成在负载均衡器上运行旧代码的服务器。 这是一般的脚本过程:

  1. 使用新代码创建新的虚拟机(VM)映像。
  2. 使用该映像启动多个VM,该VM等于当前正在运行的数量。
  3. 验证这些实例中的每个实例是否都在正确运行并响应检查。
  4. 将新实例添加到ELB,同时删除旧实例(连接耗尽)。
  5. 验证一切正常。 如果不是,则将旧的换回新的并诊断问题。 如果是这样,请删除旧实例。

如果涉及数据库更改,则该过程看起来会有所不同。 需要严格的开发人员策略来专门管理架构更改,以确保没有部署中断回滚的可能性。 通常,请勿删除或更改当前正在使用的列或表。 如果存在问题,则无法不从备份还原而进行回滚。 保留该更改,直到进行以下部署。

零停机数据库更改是一个涉及更多的主题,可以根据正在执行的操作,根据数据库压力级别而变化。 但是,在部署上强制执行向后兼容性的一般规则涵盖了大多数基础。 只要没有任何问题与新旧代码并排运行几分钟,新代码并存,您就可以了。

ECS有何不同?

ECS不使用单个虚拟机。 它使用几个集群通过任务定义将Docker容器部署到它们。 但是,零停机部署的基本组成部分是相同的。 我们需要启动新容器,确认它正在运行,然后在负载平衡器上换出它。 这对于群集很重要,因为您必须在群集中有足够的资源来启动新容器,而其他容器已经在运行。 如果没有必要的资源,您将在事件控制台中看到如下所示的注释:

service sample-webapp was unable to place a task because the resources could not be found.

如果确实有这些资源可用,您将看到以下几行消息:

service sample-webapp has started 2 tasks: task TASK-ID-1 task TASK-ID-2.
service sample-webapp registered 2 instances in elb LOAD-BALANCER-NAME
service sample-webapp has begun draining connections on 2 tasks.
service sample-webapp stopped 2 running tasks.
service sample-webapp has reached a steady state.

您看到的消息是ECS与Elastic Load Balancer的现有集成的工作,无需干预即可执行那些零停机时间部署。 如果您没有可用的资源,那么所需要做的就是向集群添加其他实例,以便您这样做。 可以通过更改自动扩展组上的所需实例或直接转到EC2将更多实例添加到群集来完成。

自己尝试

如果您想使用Amazon的sample-webapp逐步完成此过程,请执行以下步骤:

  1. 首先,如果尚未安装,请完成“ 使用Amazon ECS进行设置”过程。
  2. 然后转到ECS控制台的第一个运行向导
  3. 逐步完成ECS入门指南,以运行示例Web应用程序。
  4. 跳至“任务定义”并创建console-sample-app-static的修订版。
  5. 编辑“命令”的JSON,以显着方式更改显示HTML。
  6. 现在转到“群集”,选择您的群集。
  7. 在群集中,单击您的服务。
  8. 在“服务”中,单击“更新”,然后将任务定义更改为您在步骤4中所做的修订。它将由旁边的修订号指示。 然后单击更新服务。
  9. 在“部署”选项卡中,您应该能够看到几秒钟后的挂起计数和运行计数更改。 请随时刷新指向该应用程序的浏览器选项卡,以观看过渡。
  10. 完成后,请不要忘记执行清理过程。

而已!

翻译自: https://www.javacodegeeks.com/2015/08/zero-downtime-deployment-with-aws-ecs-and-elb.html

aws elb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值