Dan*_*Dan 6 amazon-ec2 amazon-web-services autoscaling amazon-route53 amazon-elb
所以首先我对 AWS 完全陌生,所以请耐心等待。
我已经有一个实例运行了几个月,现在我需要自动扩展它,因为我遇到了更大的流量高峰并且它有时会超载。
所以让我回顾一下我到目前为止所做的事情,你们可以告诉我我哪里出错了,我必须做些什么不同的事情。
所以基本上我希望我的原始实例始终运行。然后,当它开始超出容量时,我希望 Auto Scaling 组开始启动实例,并且负载均衡器在它们之间分配负载。我的想法是正确的吗?
其他重要问题。
当我对原始实例进行代码和数据更改时,是否必须重新制作启动配置使用的映像?
DNS 名称和 IP 需要解决什么问题?我目前正在使用 Route 53,我是否将这一点指向我的负载均衡器,仅此而已?
谢谢你们!
让我们来看看你的问题。
所以基本上我希望我的原始实例始终运行。然后,当它开始超出容量时,我希望 Auto Scaling 组开始启动实例,并且负载均衡器在它们之间分配负载。我的想法是正确的吗?
我会说是的,但我确实有一些保留意见。如果我理解正确,您已将“主”实例置于自动缩放组之外。从理论上讲,这将确保自动缩放不会杀死您的原始实例。有几件事我想提一下:
min-size为 1 的 Auto Scaling组中,Auto Scaling 会自动替换失败的实例。当我对原始实例进行代码和数据更改时,是否必须重新制作启动配置使用的映像?
我说没有,但一个设计问题的这更多。您的图像应该描述您的服务器的状态,但它不应该负责代码分发。考虑这样一种情况:由于紧急错误,您必须更新您的应用程序,但您的服务器负载很高。更新您的主服务器、创建 AMI、更新您的启动配置并关闭您的自动扩展服务器,以便它们可以使用最新的 AMI 重新生成,这听起来像是一个有吸引力的解决方案吗?我对此的回答是否定的(再次)。查看源代码版本控制和部署策略(例如,我 60% 的时间是 Rails 开发人员并使用gitand capistrano)。
在有些情况下你的方法是有效的,以及情况,有很多的中间地带这里(我也建议考虑Chef和userdata脚本)。我自己实际上很少使用自定义 AMI,这要归功于Chef.
DNS 名称和 IP 需要解决什么问题?我目前正在使用 Route 53,我是否将这一点指向我的负载均衡器,仅此而已?
基本上,是的。您可以在创建 Auto Scaling 组时选择应附加到新实例的负载均衡器。我还没有将 GUI 用于 Auto Scaling,但我很确定它就在某个地方。如果没有,CLI 仍然支持它。将您的 Route53 记录指向您的 ELB alias,基本上就是这样。
对其他问题的回应(2014/02/23):
如果您使用 Rails 进行开发,我强烈推荐使用Capistrano进行部署,它可以在您首选的版本控制系统(如 git)中获取应用程序的特定版本,并将其部署到特定环境中的多个服务器。那里有很多教程,但 Ryan Bates 修订的(和专业的)Railscast 关于这个主题非常简洁,尽管您需要订阅他的网站才能观看它们。不过,大多数其他教程也会让您继续学习。使用您的 AMI 和启动脚本启动一个新服务器,该脚本会拉取您的 git 存储库的临时克隆并运行本地 Capistrano 命令以启动您的应用程序。这确保了以后,您还可以使用 Capistrano 向所有正在运行的服务器部署新版本的应用程序,只需一个命令。
Capistrano 还提供了一些其他好处,包括使您能够在所有或仅一台服务器上执行特定任务并回滚部署,这很难仅使用 git 来完成。
| 归档时间: |
|
| 查看次数: |
3229 次 |
| 最近记录: |