服务
关于
CloudProse博客

如何在Amazon Web 服务上部署软件?有很多选择。许多人坚持使用传统方法,但是云服务的灵活性(特别是具有AWS丰富的功能集,是竞争对手无法比拟的)开辟了令人兴奋的新可能性。

更具吸引力的选项之一是基于AMI的部署。 AMI代表Amazon Machine Image…AWS专有的虚拟映像格式。这是一个很好的模型,原因如下:

  • 很简单&清洁。每个AMI代表一个不同的版本。
  • 您可以保留过去部署的简单目录并随时回滚。
  • 对于AMI(和所有快照)存储,您只需为存储支付与上一个快照的差异即可。因此,保持数十个或数百个类似的AMI可能会花费几美分。
  • 这很关键…启动非常快。将AMI部署到自动伸缩组中时,时间至关重要。当您的组响应增加的负载时,您希望新服务器尽快上线。引导时涉及的配置管理过程可能很容易花费10到15分钟的时间……如果您的应用程序负载很重,这是不可接受的。

该模型的一个关键部分是,AMI必须是“环境独立的”……换句话说,需要在启动时设置任何与暂存和生产不同的设置。您可以使用 用户数据 轻松做到这一点。

过去,此模型面临的挑战是,一旦构建AMI,如何将其部署到自动缩放组中? Netflix对此的答案是他们的开源 阿斯加德 工具。但是,这不是轻量级的方法……您确实必须“全力以赴”使用Asgard来管理整个AWS环境。

有一个很棒的轻量级替代方案,最近通过CloudFormation 更新政策功能的发布而启用。让我退后一步。

CloudFormation允许您使用JSON模板化AWS资源...从而为整个基础架构编写脚本。您还可以在该模板中定义参数,例如,以控制启动的实例的大小。使用JSON模板,添加参数,然后启动,您现在有了“堆栈”的AWS资源。

因此,此部署模型的工作方式如下:

  • 定义一个CloudFormation堆栈,其中包含构成应用程序的所有AWS组件,包括您的自动伸缩组。确保在自动缩放组中启动您的应用程序/ Web服务器的AMI ID是模板中的参数。
  • 定义 更新政策 自动缩放组中的属性。稍后我们将详细讨论。
  • 然后,当准备部署新版本的应用程序时,构建AMI(理想情况下,使用自动管道来创建服务器,然后创建AMI),并在CloudFormation堆栈中更新AMI ID参数。

从那里,UpdatePolicy自动处理推出新AMI的过程。它使用三个参数执行此操作:MaxBatchSize,MinInstancesInService和PauseTime。您可以在AWS文档中阅读详细信息,但要点是,它将按照您定义的速度将新AMI缓慢推出到您的自动伸缩组中。

结果是建立了强大且轻量级的部署管道。很漂亮

作者
安迪·沃宗(Andy Warzon)Trek10
安迪·沃宗(Andy Warzon)

创办人& CTO

创办人&CTO Andy一直在AWS上进行开发已有十多年,并且是AWS认证解决方案架构师-专业人士。