4

我正在 EC2 实例上部署 Rails 应用程序,我想在其中配置 Auto Scaling 以与 Elastic Load Balancer 一起使用。在特定阈值上,我想生成一个新实例。在为 Auto Scaling 组配置触发器时,我们可以选择 CPU 利用率、网络或磁盘 IO;但作为一个 Rails 应用程序,我将面临内存而不是 CPU 或 IO 的资源紧缩。

是否有人为 Rails 应用程序成功配置了 EC2 Auto Scaling?将 AWS 与 rails 一起使用的首选方式是什么?

仅供参考:我使用乘客作为应用程序服务器。

谢谢你的时间。

4

3 回答 3

1

我没有使用 Rails,而是使用 Tomcat 中的 java。我们使用 tomcat 阀门/脚本来检测内存使用情况并将其作为自定义云观察指标发布到 Amazon cloudWatch 中。您可以根据监视此指标的 cloudwatch 警报创建横向扩展触发器。

上述技术的某些部分甚至可以重叠用于铁轨。

于 2013-05-29T12:38:40.600 回答
1

实际上,我认为您应该尝试根据您使用的实例类型调整您的乘客配置(这是一篇关于此的文章:http: //blog.scoutapp.com/articles/2009/12/08/production-rails-与乘客一起调整乘客最大进程)。这应该确保在满载时您使用所有可用的 RAM,但您不会产生比可用 RAM 更多的乘客实例。

根据我的经验,这会导致所有资源(CPU 和 RAM)饱和,您可以根据 CPU 使用情况触发自动缩放策略。您还应该调整实例类型以获得最佳性能(我使用 cc1.xlarge 实例取得了相当大的成功)。

如果您设置了基于 RAM 的自动缩放,您应该能够在 CloudWatch 上创建一个指标来监控 RAM 使用情况并使用该指标进行自动缩放。创建指标只是使用 CloudWatch API ( http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/CloudWatch/Metric.html )定期发布指标数据。您可以创建一个每分钟运行一次并发布指标数据的 rails 后台任务。

于 2013-10-30T10:03:31.203 回答
0

i think you can use the new signaling feature, monitor the memory metric and start the instance using api:

http://aws.typepad.com/aws/2010/12/amazon-cloudwatch-alarms.html

于 2010-12-09T19:45:00.347 回答