2

我是 AWS 新手。谁能指出我如何更新驻留在多个 ec2 实例上的应用程序的正确方向?

我找到了这个答案: 如何更新多个负载均衡的 EC2 实例? 指向这篇文章: http: //linuxforloves.wordpress.com/2009/04/11/sharing-amazon-elastic-block-store-among-multiple-instances/ 文章已更新并说明您可以从 EBS 启动- 支持的 AMI 到现在基本上可以具有无限大小。

这是否意味着我可以在 ec2 实例上加载应用程序,创建保存到 ebs 卷的 ami,然后从 EBS 支持的 ami 启动,而不是拥有可以使用我的应用程序更新的 ebs 实例?

这是否意味着我将启动配置设置为使用 ami 而不是 ami 的 ebs 音量?

本质上,我的问题是,如何更新在多个 ec2 实例上运行的应用程序,而无需登录每台机器并更改应用程序?

谢谢!

4

5 回答 5

2

Netflix 使用您描述的方法,每个新应用程序版本都会创建自己的 AMI,然后他们使用开源Asgard软件进行滚动重启、终止旧实例并生成运行新 AMI 的新实例。

这是一种完全有效的工作方式,但对于我的大部分工作来说,这是矫枉过正的。AMI 的构建和管理通常比简单地将新软件放在服务器上更麻烦。我主要使用capistrano来自动启动代码(主要涉及执行 a git pull)和重新启动网络服务器,我使用chef来更改服务器配置和第三方软件安装。如果涉及的系统更改足够多,我将刻录一个新的 AMI 并使用它重新启动。

所以我认为这取决于您的工作流程的哪些方面正在造成瓶颈。如果只是部署自动化,请查看 capistrano 和 chef。如果更新您的应用程序涉及很多摩擦和部署麻烦,那么 AMI 可能是一个不错的选择。无论哪种方式,我总是确保我的厨师食谱可以根据任何特定的软件版本规范构建服务器。希望这可以帮助。

于 2012-11-19T19:33:30.650 回答
1

我认为实现这一点的方法是在推出每个新软件时创建一个新的 ami。然后为每个 ami 构建一个新的启动配置。然后,您使用新的启动配置更新您的扩展组。

于 2012-11-29T19:45:59.560 回答
1

您可以使用AWS CodeDeploy在多个 EC2 上更新您的应用程序。它通过逐步跨实例工作并允许应用程序保持可用并继续为流量提供服务来最大限度地减少停机时间。

您还可以跟踪部署、停止、回滚……如果您的应用程序在 EC2 上运行,它是免费的。

于 2016-06-15T11:31:30.197 回答
0

现在OpsWorks已经发布,情况发生了一些变化。看看那个,因为它是亚马逊支持的一种做你想做的事的方式——不过可能对你的需求有点过分了。

于 2013-02-27T18:46:08.933 回答
0

查看capistrano,这是一个用 Ruby 编写的部署工具,可以准确解决您描述的问题。

虽然它是一个 Ruby 工具,但它可用于部署非 Ruby 的应用程序。

它管理同时 SSH'ing 到多个服务器,更新代码,并执行为每个服务器的角色量身定制的部署任务。

于 2013-03-05T01:50:00.840 回答