所以,首先我对AWS完全陌生,所以请耐心等待。
我有一个实例运行了几个月,现在我需要自动调整它,因为我越来越大的交通高峰,它有时会超载。
所以,让我看看迄今为止我所做的事情,然后你们可以告诉我哪里出了问题,而且我还有什么不同。
所以基本上我想我的原始实例在任何时候都在运行。 然后,当它开始超过容量时,我希望Auto Scaling组启动启动实例,并通过Load Balancer来分配负载。 我的想法在这里吗?
其他重要问题。
当我将代码和数据更改为原始实例时,是否必须重新启动“启动configuration”使用的映像?
什么需要与DNS名称和IP下来? 我目前正在使用Route 53,请问我的负载平衡器,这是什么?
多谢你们!
让我们来回顾一下你的问题。
所以基本上我想我的原始实例在任何时候都在运行。 然后,当它开始超过容量时,我希望Auto Scaling组启动启动实例,并通过Load Balancer来分配负载。 我的想法在这里吗?
我会说是的 ,但我有一些保留。 如果我理解正确,那么您已将“主”实例置于自动缩放组之外。 从理论上讲,这将确保自动缩放不会消除您的原始实例。 有几件事我想提一下:
min-size为1的自动缩放组中,Auto Scaling会自动replace失败的实例。 当我将代码和数据更改为原始实例时,是否必须重新启动“启动configuration”使用的映像?
我会说不,但这是更多的devise问题。 你的图片应该描述你的服务器的状态 ,但它不应该负责代码分发。 考虑一种情况,即由于紧急错误而必须更新您的应用程序,但是您的服务器处于高负载状态。 更新你的主服务器,创build一个AMI,更新你的启动configuration,并消灭你的自动缩放服务器,使他们可以重新激活最新的AMI听起来像一个有吸引力的解决scheme? 我的答案不会 (再次)。 查看源代码版本控制和部署策略(例如,我是Rails开发人员的60%,使用git和capistrano )。
有些情况下,你的方法也可以工作,这里有很多中间的地方(我build议也考虑Chef和userdata脚本)。 Chef ,我自己实际上很less使用定制的AMIs。
什么需要与DNS名称和IP下来? 我目前正在使用Route 53,请问我的负载平衡器,这是什么?
基本上, 是的 。 创build自动缩放组时,您可以select应该附加到新实例的负载均衡器。 我还没有使用AutoScaling的GUI,但我很确定它在那里的地方。 如果没有,CLI仍然支持。 将您的Route53logging指向您的ELB alias ,基本上就是这样。
对其他问题的回复(2014/02/23):
如果您使用Rails进行开发,那么我可以强烈推荐Capistrano进行部署,这可以在您的首选版本控制系统(如git)中将特定版本的应用程序部署到特定环境中的许多服务器上。 这里有很多教程,但是Ryan Bates对这个主题的修改(和专业版)Railscasts非常简洁,虽然你需要订阅他的网站来观看他们。 大多数其他教程也会让你去。 启动一个新的服务器与您的AMI和一个启动脚本,拉动您的git仓库的临时克隆,并运行本地Capistrano命令,让您的应用程序。 这可以确保在稍后您还可以使用Capistrano将新版本的应用程序部署到所有正在运行的服务器上。
Capistrano还提供了其他一些好处,包括使您可以在所有服务器上执行特定的任务,或者只在您的一台服务器上执行特定的任务,并回滚部署,这很难用git完成。