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
1. Remote SIP client configures the LB VIP as the SIP proxy and registers
2. the citrix LB gets the registrations and forwards to the active openser (say,
openser_1)
3. openser_1 stores the contact as MIP:port in the mysql database
4. 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
1. call (INVITE) is generated from asterisk and sent to LB VIP
2. the citrix LB gets the INVITE and forwards to the active openser (say, openser_1)
3. 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
1. call (INVITE) is generated from asterisk and sent to LB VIP
2. the citrix LB gets the INVITE and forwards to the openser now active (openser_2)
3. 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(a)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