如何将最新代码推送到 Auto Scaling 组

new*_*ike 2 ruby-on-rails amazon-web-services autoscaling

我尝试使用 AWS Auto Scaling 框架运行我的生产服务器。

我想知道如何将新发布的代码部署到正在运行的生产服务器中。

我不在乎down time现在。

我使用nginx和运行网络服务器puma

执行此任务的常用方法是什么?

我认为登录 AWS 控制台可以找到所有服务器 IP 和 SSH。更新代码库并重新启动 puma Web 服务器不是保持产品质量的好方法

Joh*_*ein 5

在 Amazon EC2 实例上部署代码的方法有多种选择。事实上,它与您在任何普通计算机上部署代码的方式大致相同,但 Amazon EC2 有一些技术可以使这变得更容易。

选项 1:配置 AMI

启动新的 Amazon EC2 实例时,必须选择 Amazon 系统映像 (AMI)。AMI 是一个磁盘映像,它被复制到新实例的启动磁盘,然后实例使用该映像启动。

因此,部署新代码的一种选择是:

  • 构建新的 AMI(通过配置实例,然后从该实例创建映像)
  • 创建使用新 AMI 的新 Auto Scaling 启动配置
  • 编辑 Auto Scaling 组以使用新的启动配置
  • 在 Auto Scaling 组中启动新实例(例如增加minimum实例数量)
  • 启动新实例后,删除旧实例(例如,减少minimum并等待自动缩减进程,或通过降低desired-capacity.强制缩减。根据Auto Scaling 终止策略,将首先自动删除旧实例

选项 2:用户数据脚本

这类似于选项 1,但不是配置新的 AMI,而是通过启动脚本自行配置实例。可以通过用户数据字段传递脚本,该脚本将在启动新实例时执行。

该脚本可以做任何您想做的事情,例如下载和安装软件,使用 Puppet/Chef/Ansible 进行部署,以及启动/停止 Web 服务器。

用户数据脚本应存储在 Auto Scaling 启动配置中(类似于选项 1 中的 AMI)。然后,只需启动新实例(类似于选项 1),它们就会自动使用您的软件的最新版本自行配置。

选项 3:使用部署服务

AWS 有多个系统可以将代码部署到 Amazon EC2 实例,包括:

前三个可以部署基础设施和代码。

虽然这些系统比简单地提供脚本更复杂,但它们允许更可重复、更有弹性的架构(例如处理故障和回滚)。