Hello Gertjan,
The "ingredients" of dispatcher failover are as follows:
1. A "flags" setting that includes the value 2, which enables failover support:
https://kamailio.org/docs/modules/5.1.x/modules/dispatcher.html#dispatcher.p...
2. A failure_route to actually handle your failover logic:
route[MAIN] { ...
if(!ds_select_dst("2", "8")) { sl_send_reply("503", "Out of gateways"); exit; }
t_on_failure("DISPATCHER_FAILOVER");
if(!t_relay()) sl_reply_error(); }
failure_route[DISPATCHER_FAILOVER] { if(t_is_canceled()) exit;
if(!ds_next_dst()) { send_reply("503", "Out of gateways"); exit; }
t_on_failure("DISPATCHER_FAILOVER"); t_relay(); }
-- Alex
On Wed, Sep 26, 2018 at 02:15:22PM +0200, Gertjan Wolzak wrote:
Hello Kamailions,
I want to send traffic to an Asterisk box but when that box fails traffic should be routed to the second Asterisk box.
The dispatcher params are as follows:
# ----- Dispatcher params ------
modparam("dispatcher", "ds_probing_mode", 1) modparam("dispatcher", "ds_ping_interval", 20) modparam("dispatcher", "ds_ping_reply_codes", "class=2;class=3;class=4") modparam("dispatcher", "ds_inactive_threshold", 4) modparam("dispatcher", "ds_ping_latency_stats", 1) modparam("dispatcher", "ds_probing_threshold", 1)
My dispatcher.list is:
#DBBS PBX
# SBC's
1 sip:ip_address_sbc:5060 0 0 weight=100
#PBX
2 sip:ip_pbx_01:5060 0 10 weight=100 2 sip:ip_pbx_02:5060 0 5 weight=100
Verry simple request route:
request_route {
if (is_method("OPTIONS")) { sl_send_reply("200", "OK"); exit; }
#Call from SBC to PBX #Get gateway from dispatcher list
if($si=="ip_address_sbc1" |$si=="ip_address_sbc2" ) { ds_select_dst("2", "8"); $var(new_uri) = "sip:" + $tU + "@" + $dd + ":5060"; $ru=($var(new_uri)); route(RELAY); exit; }
# Call from pbx to SBC # Get sbc ip from dispatcher list ds_select_dst("1","4"); $var(new_uri) = "sip:" + $tU + "@" + $dd + ":5060"; $ru=($var(new_uri)); route(RELAY); }
When I send a call to the kamailio its routed correctly to the first pbx. But when I kill the asterisk process on the first pbx, an invite is still send by Kamailio to the first pbx.
Maybe I am assuming incorrectly that when the dispatcher does not react to the ds_ping it will be set to "inactive" and not be selected by the ds_select_dst command...
Or am I thinking to easy and do I need to configure some actions in the failure route?
Pretty sure I'm doing something wrong, but cant see where and have not been able to find the information.
Tips are appreciated.
Rgds, Gertjan Wolzak
Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users