I’d like to scale out by adding more EC2 mongrel instances, and scale
down by removing EC2 mongrel instances.
Is there a way to dynamically add/remove mongrel instances from Apache
mod_proxy_balancer. It seems that I’d have to manually change the
configuration file and restart apache whenever I add/remove a new
mongrel.
Is there a way to dynamically add/remove mongrel instances from Apache
mod_proxy_balancer. It seems that I’d have to manually change the
configuration file and restart apache whenever I add/remove a new
mongrel.
Well, you could write a script to edit the config for you and send
apache a usr1 signal ( “kill -usr1 [pid]” ) to cause it to reload the
updated config, then trigger the script whenever a new EC2 instance is
started or stopped.
Another approach could be to proxy everything to swiftiply ( http://swiftiply.swiftcore.org/ ), and have each new EC2 instances
mongrels register/deregister with the swiftiply proxy.
Yet another option would be to use switchpipe ( http://switchpipe.org/
) to manage things.
I haven’t done any of these, of course, so I’m basically talking
through my hat, but they all sound plausible!
Is there a way to dynamically add/remove mongrel instances from Apache
mod_proxy_balancer. It seems that I’d have to manually change the
configuration file and restart apache whenever I add/remove a new
mongrel.
mod_proxy_balancer comes with the “balancer manager” with which can
toggle a member of the cluster offline and back online:
You could script that interface and then call it from Capistrano. I
Googled around but couldn’t find an existing library for this… kind of
surprising. Maybe most folks are just going the “rewriting the config
file and send USR1” route.
Is there a way to dynamically add/remove mongrel instances from Apache
mod_proxy_balancer. It seems that I’d have to manually change the
configuration file and restart apache whenever I add/remove a new
mongrel.
[snip]
Yet another option would be to use switchpipe (http://switchpipe.org/
) to manage things.
Yep, that’s exactly what SwitchPipe does. Dynamically launches,
manages, and kills backend processes that speak HTTP. Even better than
that, it’ll kill Mongrels that aren’t in use for a certain period of
time… so rather than having, say, 3 Mongrels running ALL the time on
a quiet app, it’ll scale it back to zero Mongrels after X seconds of
inactivity if you like. Alternatively you can make it keep 1 Mongrel
up to pick up requests before scaling up to meet demand. Whatever you
want to do, it does it.
They accept the port number as an option. I use this as part of my
monit system to keep things in check. I have a very high traffic site
and I found proxy_balancer didn’t react quick enough.
usage:
service monit disable 8081
service monit enable 8081
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.