On Wednesday 11 February 2009, Stagg Shelton wrote:
I am looking for some ideas on how to create a more redundant setup in my operation. About 60 days ago our openser 1.3.2 system started sending out 500 errors. Looking through the log file I found alot of ERROR:tm:new_t: out of mem that corresponded to the INVITES. A simple restart of openser freed the memory and calls processed normally as expected. Since then we have upgraded to openser 1.3.3 and haven't experienced the problem since. Currently I am testing kamilio 1.4.3 and planning my migration into kamilio from openser.
What I would like to create is a system that has two kamailio systems where one can fail to the other in the event of an application error that prevents calls from processing. Does anyone have any suggestions on implementing a redundant kamilio system, or can point me in the direction of where to start reading and researching.
Hi Stagg,
there are of course several ways of implementing something like this. You could setup a load balancer in front of the two systems, that distribute the traffic and removes one from the balancing if it returns errors. This can be done with the dispatcher module, which does a keep-alive ping, or with some external script that use sipp to setup a call or something similar and then call e.g. carrierroute to change the balancing. You also could re-route the traffic to the second system, if the first one fails in a failure_route in the config, on certain error codes.
Another option is to implement IP level failover, where you kill the active machine and activate the hot standby on errors. There are projects (linux-ha, heartbeat) that provide solution for this, if you don't want to do it manually.
Cheers,
Henning