如何使用Amazon EC2自我部署?



我有一个Amazon Ec2架构,其中我有多个服务器连接到ELB服务器。我手动扩展服务器,并根据流量需求在需要时附加更多服务器。

我使用Capistrano部署我的应用程序,目前在附加新服务器时,我总是必须手动检查新服务器是否有新的应用程序版本,如果没有,则部署到新服务器。

我想知道,如果新服务器发现自己过时了,是否有一种更干净的做法,即使用新的应用程序代码库自动更新自己。我尝试使用Amazon CodeDeploy,但它不能解决我的目的。它只是为我提供了一个部署管理控制台。Amazon是否提供了一种方法,当服务器启动时,它会尝试自我部署?

最简单的方法可能是在启动Amazon EC2实例时使用User Data脚本

这涉及到提供一个脚本,该脚本在新实例启动时自动运行。该脚本可以下载和安装软件,向中央监控系统注册新服务器,更新配置等。有些公司使用脚本来启动配置管理系统,如Chef、Puppet或Ansible。

下面是一些细节:

  • 启动时在Linux实例上运行命令
  • Windows用户数据脚本
另一个选择是使用预配置的Amazon Machine Images (ami),其中已经安装了所有的新软件。从更新的AMI启动新实例意味着它们已经安装了软件。

当然,这需要为每个软件版本创建一个新的AMI。一些公司已经使用Netflix Aminator和Packer等工具自动化了这一过程。

最新更新