The mod_proxy_balancer function included with Apache 2.2 is a great way to set up an Apache front end to a rails-based Mongrel cluster. The latest versions of many Linux distributions now include Apache 2.2 but unless you have a new server with the latest distro, it’s likely that your server is running Apache 2.0.
I usually try to avoid upgrading from Apache 2.0 to 2.2 by compiling it from source because of all of the interdependencies. You end up having to recompile so much other stuff, that it just turns out to be a mess.
Fortunately Apache 2.0 can use mod_rewrite which can be used to do some primitive random load balancing. Here is a sample configuration snippet:
<VirtualHost>
ServerName mydomain.com
ServerAlias www.mydomain.com
## The random map file of our clusters
RewriteMap clusters rnd:/etc/httpd/conf/clusters.map
RewriteEngine On
## Don't rewrite for static files
RewriteCond %{REQUEST_FILENAME} !-f
# Use mod_rewrite to randomly select from one of the Mongrel
# cluster servers
RewriteRule ^/(.*) https://${clusters:mongrel_cluster}/\ [P,L]
</VirtualHost>
The cluster.map file should contain something like this:
mongrel_cluster localhost:3000|localhost:3001|localhost:3002
Obviously, you’ll want to substitute your server names where appropriate, and configure the correct ports for your instances in the map file