Hello,

I'm using Keealived for configuration:

OpensSIPs1 IP 1.2.3.4

OpenSIPs2 IP 5.6.7.8

Virtual IP: 10.11.12.13


OpenSIPs1:

*keepalived.conf*

vrrp_script check_sip {
*script "/etc/keepalived/node01.sh"*
  interval 3
  fall 2
  rise 2
}

vrrp_instance VI_OS {
  state MASTER
  interface eth0
  virtual_router_id 1
  advert_int 1
*notify /etc/keepalived/opensips.sh*
  virtual_ipaddress {
   10.11.12.13 dev eth0
  }
  track_script {
    check_sip
  }
}

each time there is a change in the servers status, keepalived ejecute opensips.sh script

*node01.sh*

#!/bin/bash

node01=1.2.3.4
node02=5.6.7.8
*return_code=0*
timeout 2 sipsak -s sip:$node01:5060
exit_status=$?
if [[ $exit_status -eq 0 ]]; then
  echo "sip ping successful to node01 [$node01]"
  exit $return_code
fi
timeout 2 sipsak -s sip:$node02:5060
exit_status=$?
if [[ $exit_status -eq 0 ]]; then
  echo "sip ping successful to node02 [$node02]"
  return_code=1
fi
echo "return code [$return_code]"
exit $return_code

*opensips.sh*

#!/bin/bash

TYPE=$1
NAME=$2
STATE=$3

case $STATE in
        "MASTER") /usr/sbin/opensipsctl fifo dlg_set_sharing_tag_active vip
                  /usr/sbin/opensipsctl fifo nh_enable_ping 1
                  exit 0
                  ;;
        "BACKUP") /usr/sbin/opensipsctl fifo dlg_list_sharing_tags
                  /usr/sbin/opensipsctl fifo nh_enable_ping 0
                  exit 0
                  ;;
        "FAULT")  /usr/sbin/opensipsctl fifo dlg_list_sharing_tags
                  /usr/sbin/opensipsctl fifo nh_enable_ping 0
                  exit 0
                  ;;
        *)        echo "unknown state"
                  exit 1
                  ;;
esac

in this file I move the sharing tag and pinging NAT in the MASTER status and remove in BAKCUP and FAULT status

OpenSIPs2:

*keepalived.conf*

vrrp_script check_sip {
  script "/etc/keepalived/node02.sh"
  interval 3
  fall 2
  rise 2
}
vrrp_instance VI_OS {
  state BACKUP
  interface eth0
  virtual_router_id 1
  advert_int 1
  notify /etc/keepalived/opensips.sh

  virtual_ipaddress {
   10.11.12.13 dev eth0
  }
  track_script {
    check_sip
  }
}

*node02.sh*

#!/bin/bash

node01=1.2.3.4
node02=5.6.7.8
*return_code=1*
timeout 2 sipsak -s sip:$node01:5060
exit_status=$?
if [[ $exit_status -eq 0 ]]; then
  echo "sip ping successful to node01 [$node01]"
  exit $return_code
fi
timeout 2 sipsak -s sip:$node02:5060
exit_status=$?
if [[ $exit_status -eq 0 ]]; then
  echo "sip ping successful to node02 [$node02]"
  return_code=0
fi
echo "return code [$return_code]"
exit $return_code

*opensips.sh*

#!/bin/bash

TYPE=$1
NAME=$2
STATE=$3

case $STATE in
        "MASTER") /usr/sbin/opensipsctl fifo dlg_set_sharing_tag_active vip
                  /usr/sbin/opensipsctl fifo nh_enable_ping 1
                  exit 0
                  ;;
        "BACKUP") /usr/sbin/opensipsctl fifo dlg_list_sharing_tags
                  /usr/sbin/opensipsctl fifo nh_enable_ping 0
                  exit 0
                  ;;
        "FAULT")  /usr/sbin/opensipsctl fifo dlg_list_sharing_tags
                  /usr/sbin/opensipsctl fifo nh_enable_ping 0
                  exit 0
                  ;;
        *)        echo "unknown state"
                  exit 1
                  ;;
esac

Then you have to install sipsak and change your iptables configuration.

opensips.cfg

OpenSIPs1:

listen=udp:1.2.3.4:5060
listen=udp:10.11.12.13:5060

#### DIALOG module
loadmodule "dialog.so"
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "default_timeout", 21600)
modparam("dialog", "db_mode", 0)
modparam("dialog", "dlg_sharing_tag", "vip=active")
modparam("dialog", "dialog_replication_cluster", 3)
modparam("dialog", "db_url","mysql://opensips:password@localhost/opensips")

if (is_method("INVITE")) {
                route(AUTH);
                create_dialog();
                set_dlg_sharing_tag("vip");
                do_accounting("db","cdr");
                if (isbflagset(NAT)) setflag(NAT);
        }

OpenSIPs2:

listen=udp:5.6.7.8:5060
listen=udp:10.11.12.13:5060

#### DIALOG module
loadmodule "dialog.so"
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "default_timeout", 21600)
modparam("dialog", "db_mode", 0)
modparam("dialog", "dlg_sharing_tag", "vip=backup")
modparam("dialog", "dialog_replication_cluster", 3)
modparam("dialog", "db_url","mysql://opensips:password@localhost/opensips")

same INVITE block

https://blog.voipxswitch.com/2017/12/26/kamailio-high-availability-using-keepalived/

Regards


---
I'm SoCIaL, MayBe

El 13/03/2020 a las 12:20, Sharad Kumar via Users escribió:
Hi,

Can you show us that how you are creating dialogs ? and where are you setting your sharing tag, like this -

set_dlg_sharing_tag("vip");

Thank you


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to