Hi,
you need to have a common mysql table for the registrations so that when OpenSER_2 taks over it has the informations OpenSER_1 wrote in the DB.
you can achieve this with a single mysql server, or better with a cluster ;)
cheers,
Patrick.
Hi friends,
I am having problems setting up seamless openser registrar failover. I am trying to setup OpenSER registrar HA using 2 openser registrars v1.3.0 behind a Netscaler citrix Load balancer and I cant get the failover scenario to work without re-registration of the remote sip client.
I am desperately looking for tips to make this configuration work or any other ideas to achieve SIP registrar HA using OpenSER. Thanks.
The setup is configured as active-passive and the 2nd OpenSER becomes active only after a Openser_1 fails and the LB fails-over to the 2nd. The 2 openser servers are SIP registrars for my voice network.
REGISTRATION: remote SIP UA ---> remote firewall ---> internet ---> my firewall ---> citrix NA loadbalancer (VIP) ----> openSER_1 ---> openSER_2
- Remote SIP client configures the LB VIP as the SIP proxy and registers
- the citrix LB gets the registrations and forwards to the active openser (say, openser_1)
- openser_1 stores the contact as MIP:port in the mysql database
- openser_1 replicates the registration to openser_2 (t_replicate)
OUT-GOING CALL - before fail-over remote SIP UA <--- remote firewall <--- internet <--- my firewall <--- citrix NA loadbalancer (VIP) <----> openSER_1 ^ openSER_2 | Asterisk
- call (INVITE) is generated from asterisk and sent to LB VIP
- the citrix LB gets the INVITE and forwards to the active openser (say, openser_1)
- openser_1 looks-up the URI in the MySQL database, finds the MIP:port that the registration was received from the
LB and forwards the INVITE to that destination. 4. the LB receives the INVITE and forwards it to the remote SIP client
OUT-GOING CALL - after fail-over remote SIP UA ---x remote firewall ---x internet ---x my firewall ---x citrix NA loadbalancer (VIP) ----x openSER_1 ^ -----< openSER_2 | Asterisk
- call (INVITE) is generated from asterisk and sent to LB VIP
- the citrix LB gets the INVITE and forwards to the openser now active (openser_2)
- openser_2 looks-up the URI in the MySQL database, finds the same MIP:port of the LB that was replicated from
openser_1 and forwards the INVITE to that destination. 4. the LB receives the INVITE and drops the packet without forwarding it out to the remote SIP client
For the outgoing call to work: the remote sip client either has to re-register, so the registration gets passed to openser_2. OR, openser_1 is made active again.
Configuration of OpenSER:
REGISTRATION: # If this is a registration from the public UA, # then we store it fix_nated_contact(); # use ip address of the packet instead of the sip message force_rport(); # append rport. might not be necessary
# save Registration in location table save("location"); xlog("L_DBG", "SipMsgId[$mi] Save Registration: To[$tu] Contact[$ct]\n"); append_hf("CtlRegFwd: \r\n"); # replicate the register message to the backup registrar # if I am the backup, ignore the message if(!t_replicate("sip:openser_2:5060")) { xlog("L_WARN", "SipMsgId[$mi] Fail to replicate Contact[$ct] to fail over registrar\n");
OUTGOING CALL:
# Do lookup so it gets to the correct NATed destination if (!lookup("location")) { # this user has not REGISTERed or registration has expired xlog("L_INFO", "SipMsgId[$mi] Send 404-Not Found (Msg rejected because user not found)\n"); sl_send_reply("404", "Not Found"); exit; }; # keep track of reply t_on_reply("11"); if (!t_relay()) { xlog("L_DBG", "SipMsgId[$mi] Failed t_relay. Do sl_reply_error.\n"); sl_reply_error(); };
Thank you for your anticipated help.
Regards,
Buki A
--
Patrick Miccio UPC ECC Core ISP Services
UPC Austria GmbH Center Ost, St. Peter Gürtel 10b A-8042 Graz T +43 (0) 59 999 0 E pmiccio@upcbroadband.com
This e-mail is confidential and may well also be legally privileged. If you have received it in error, you are on notice of its status. Please notify us immediately by reply e-mail and then delete this message from your system. Please do not copy it or use it for any purposes, or disclose its contents to any other person: to do so could be a breach of confidence. Thank you for your cooperation. Information pursuant to paragraph 14 Austrian Companies Code: UPC Austria GmbH; Registered Office: Wolfganggasse 58-60, 1120 Vienna Company Register Number: FN 189858d at the Commercial Court of Vienna