I am looking at some options to better balance our Asterisk cluster. Right now we are fronting our Asterisk cluster with Opensips and it’s just doing a basic round robin. Once the call hits a particular Asterisk instance, it’s checking a table to see if that particular company has calls on another server. If it does, then it’s rejecting the call back up to the proxy and sent to another server, where it’s checked until it lands on the proper server. We do this so that calls for one company are on the same server for call transfers and call queues.
This approach works, but it gets us in some bad spots where all the calls load up one server just because a couple big companies land on that server. We would like to just force calls to that same server just if the call is going to a queue or if they are attempting an attended transfer. So basically a particular queue for a particular company will only be on one server at a time.
Do anyone have any suggestions on how to move an entire call to another server including channel variables and cdr? The problem with trying to move a call once it’s determined to be a queue call is that we have already gone through hundreds of lines of dialplan and built up a lot of channel variables that are needed to properly route the call and maintain good records of the details of the call.