How to hack a mongrel cluster to restart in an alternating manner?


#1

Hello,

I’ve been trying (unsuccessfully) to hack my mongrel_cluster to
re-ststart
in an alternating manner.

Specifically, this soluiton:
http://blog.carlmercier.com/2007/09/07/a-better-approach-to-restarting-a-mongrel-cluster/#content

Which means I an call to mongrel_rails cluster::restart to do this:

mongrel_rails start 8001
mongrel_rails stop 8001

mongrel_rails start 8002
mongrel_rails stop 8002

mongrel_rails start 8003
mongrel_rails stop 8003

mongrel_rails start 8004
mongrel_rails stop 8004

Instead of:

mongrel_rails stop 8001
mongrel_rails stop 8002
mongrel_rails stop 8003
mongrel_rails stop 8004

[…503…application offline…]

mongrel_rails start 8001
mongrel_rails start 8002
mongrel_rails start 8003
mongrel_rails start 8004

(yuck!)

It’s has been very difficult for me to figure out where to install the
hacked mongrel_cluster_ctl that Carl provides in his blog.
The execution path is not clear.

Would anyone be willing to give me some ideas?

Thank you,
Elliott


#2

I’ve had success with Eden Li’s patch here:
http://rubyforge.org/tracker/index.php?func=detail&aid=15427&group_id=1306&atid=5147.
Been using it in several production deploys for about 2 months.

If you’re interested (and too lazy to apply the patch yourself) you can
take
a look at my fork of mongrel that has mongrel_cluster doing rolling
restarts
here:
http://github.com/chuyeow/mongrel/commits/stable_1-1

You need to clone the repos, go into the projects/mongrel_cluster
directory,
and run a rake task to package the gem.

Cheers,
Chu Yeow