2011-09-09 137 views
1

目前我們使用的是經典配置:Nginx在每個3 mongrels的實例前面。亞馬遜EC2上的自動縮放Rails應用程序

我們想要自動調整我們的應用程序。因此,我們需要使用Elastic Load Balancer + AutoScaling或者手動更新我們的Nginx配置,然後AutoScaling啓動新的實例,因此nginx可以將流量路由到它們。

ELB的問題在於它無法將請求傳遞給EC2實例上的多個端口,只能傳遞給一個端口。所以,我們不能在我們的實例上運行一堆雜種來獲得單個實例的更多性能。我看到的唯一方法是在每個實例上使用HAproxy將代理請求代理給一羣mongrels。

我們該怎麼辦?手動更新Nginx配置,或者在每個工作實例上使用ELB和HAProxy?是否有更好的方式來自動調整亞馬遜的Rails應用程序?

回答

0

我們在Amazon Web Services上使用ELB + AutoScaler + LaunchConfig來擴展Rails應用程序。

我們的配置是nginx + Passenger + Rails,並且只需要運行Rails的實例上的一個端口。因此,您可以使用任意大小的實例來運行儘可能多的Rails進程(請求):當實例變得繁忙時,AutoScaler將啓動並且ELB將分配所有負載。同樣,它只需要實例上的一個端口。