It would be trivial to set up adhearsion to address a pool of server.
All you need is a load balancer. Since asterisk connects to adhearsion
over IP the load balancer can shuttle the AGI calls between the
backend servers.
Your remaining problems are...
1) How to make sure multiple servers have the same codebase.
2) How to make sure all asterisk servers have the same sounds on them.
1) is easy just use vlad or capistrano.
2) is easy just use powerfolder (http://www.powerfolder.com/)
I suppose you could use powerfolder for 1) too.
I bet you could use rinda and ring for that.
http://segment7.net/projects/ruby/drb/rinda/ringserver.html
http://evan.tiggerpalace.com/?p=39
It's a tuple space. Your application can throw things into the tuple
space and your outbound call handlers can pull things from the space
one at a time and process them.