Hi guys! I'm facing some problems with dialog information while trying to
implement a HA environment.
We have 2 clustered SIP servers working as a Active/Standby failover and
the use of a Virtual IP address. We want to make sure that if proxy #1 goes
down during a call, proxy #2 would be able to handle the sequential
requests for that call, since both proxies are using the same database for
dialog module information and we have set the db_mode dialog parameter to 1
(REALTIME - any dialog information changes will be reflected into the
database immediately). Instead, what happened is proxy #2 was not aware of
the dialog and gave us a "500 Server error occurred" message after
receiving the BYE. Here are the log errors:
/usr/local/sbin/opensips[12617]: New request: BYE
/usr/local/sbin/opensips[12617]: The request has TO tag
/usr/local/sbin/opensips[12617]: cannot match request to a dialog
/usr/local/sbin/opensips[12617]: ERROR:dialog:w_validate_dialog: null
dialog /usr/local/sbin/opensips[12617]: in-dialog bogus request
/usr/local/sbin/opensips[12617]: validate_dialog return: -4
/usr/local/sbin/opensips[12617]: loose_route() performed, rr headers were
decoded /usr/local/sbin/opensips[12617]: ERROR:core:parse_uri: uri too
short: <0> (1) /usr/local/sbin/opensips[12617]:
ERROR:core:parse_sip_msg_uri: bad uri <0> /usr/local/sbin/opensips[12617]:
ERROR:tm:new_t: uri invalid /usr/local/sbin/opensips[12617]:
ERROR:tm:t_newtran: new_t failed /usr/local/sbin/opensips[12617]: Could not
execute t_relay()
Virtual IP address is working, a new call goes through with no problem.
Apparently, the dialog module is not saving all dialogs information to the
database right away. Does anyone know about any other info we should be
storing in the database, using some sort of module parameter or exported
function from config file? In other words, what do I need to do in order to
send an initial INVITE to one server and, when that server goes down, send
the BYE to another server with the same call dialog?
Thanks in advance.
Mariana.