[OpenSIPS-Users] Binary Dialog Replication + DRouting Polling Feature Request
kneeoh at yahoo.com
Fri Nov 21 01:18:34 CET 2014
Hello, after fighting all day trying to maintain drouting polling and binary replication of dialogs between two servers, I had to sacrifice drouting polling to accommodate dialog replication.
2 Opensips Servers as Load Balancers
Corosync/Pacemaker with VIP
Drouting as LB engine
OSIPS 1 IP: 10.2.0.11
OSIPS 2 IP: 10.2.0.12
Issue 1: Drouting polling. In order to check the status of down stream opensips servers drouting is configured to send options pings to each server. On failure it auto disables the server. In order to do this with a VIP config, each host must use it's local IP to poll the servers otherwise the standby server won't have a socket with which to ping from as the active server will own the VIP.
Issue 2: Opensips must be running to accept dialog updates from the binary interface, so you can't simply allow Opensips to start/stop with the IP failover or it won't get any dialog updates.
Issue 3: When running in mhomed=1 mode, you are letting the kernel decide which IP to use to communicate out. IE, you may get a packet on the VIP: 10.2.0.10 but the Kernel uses 10.2.0.11 to send the packet. This is the IP that the dialog is nailed up on. So if you failover the VIP, the backup server will try to process the incoming packets per the dialg out of the 10.2.0.11 interface which doesn't exist on server 2 and it fails.
The only thing I could do was to have both servers listen on the VIP with non-local bind enabled in linux. Then turn off drouting polling so that the standby server wouldn't disable the downstream servers in Drouting. This also ensures that the dialogs are nailed up to the 10.2.0.10 IP and when I failover the IP, the backup server can process the packets.
I'd like to put in a request to have the drouting (and other similar modules) have a configurable polling interface which is separate from the socket it uses to send traffic.
More information about the Users