4

我在EC2實例上部署rails應用程序,我想在其中配置Auto Scaling以與Elastic Load Balancer配合使用。在特定的門檻上,我想產生一個新的實例。在爲自動擴展組配置觸發器時,我們可以選擇CPU使用率,網絡或磁盤IO;但作爲一個rails應用程序,我將面臨資源緊張的內存而不是CPU或IO。如何在Amazon EC2上配置基於內存的Auto Scaling?

是否有人成功爲Rails應用程序配置了EC2 Auto Scaling?在rails中使用AWS的首選方式是什麼?

供參考:我使用乘客作爲應用程序服務器。

謝謝你的時間。

回答

1

我沒有使用Rails做這件事,但在Tomcat.We Java中使用用於檢測內存使用情況的tomcat閥/腳本,並將其作爲自定義雲監視指標發佈在Amazon CloudWatch中。您可以基於CloudWatch警報監控此指標創建一個橫向擴展觸發器。

上述技術的某些部分甚至可能與軌道重疊。

1

其實,我認爲你應該嘗試根據你正在使用的實例類型來調整你的Passenger配置(這裏是一篇關於這個的文章: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後臺任務併發布度量標準數據。