【问题标题】:How to configure memory based Auto Scaling on Amazon EC2?如何在 Amazon EC2 上配置基于内存的 Auto Scaling?
【发布时间】:2011-03-01 07:42:21
【问题描述】:

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

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

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

感谢您的宝贵时间。

【问题讨论】:

    标签: amazon-ec2 amazon-web-services load-balancing amazon-elb autoscaling


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      实际上,我认为您应该尝试根据您使用的实例类型调整您的乘客配置(这里有一篇关于此的文章:http://blog.scoutapp.com/articles/2009/12/08/production-rails-tuning-with-passenger-passengermaxprocesses)。这应该确保在满载时您使用了所有可用的 RAM,但您生成的乘客实例不会超过可用的 RAM。

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

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

      【讨论】:

        【解决方案3】:

        我认为您可以使用新的信号功能,监控内存指标并使用 api 启动实例:

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

        【讨论】:

        • 博文没有提及任何有关信号功能的内容。
        猜你喜欢
        • 2011-11-24
        • 2018-11-18
        • 2022-01-22
        • 2014-01-29
        • 2011-12-14
        • 2019-06-10
        • 2021-05-21
        • 2020-12-26
        • 2012-08-10
        相关资源
        最近更新 更多