opensips HA(keepalived)以及dialog集群配置

target

opensips 实现高可用,主备节点共用一个浮动IP, 共享dialog数据,每个dialog指定一个tag标签,
当一个活动的节点出现故障以后,备用节点将会继续为标识的tag服务。通过主备方式进行HA的处理。
tag的状态将会迁移到另外一个备用的节点上。

环境:

两个opensips 3.2实例
keepalived  实例

keepalived配置

! Configuration File for keepalived
vrrp_script chk_opensips
{        
    script "/usr/local/etc/opensips/check_opensips_pid.sh"
    interval 1                         
    weight 2
}
global_defs {
   notification_email {
     acassen
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 172.16.100.251
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface em1
    garp_master_delay 10
    smtp_alert
    virtual_router_id 53
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 915119
    }
    virtual_ipaddress {
        192.168.1.200 dev em1  label em1:1
    }
    track_script {
        chk_opensips
    }
}

check_opensips_pid.sh

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y/%m/%d-%H:%M:%S`
#计算opensips进程数量
n=`ps -C opensips --no-heading|wc -l`
if [ $n -eq "0" ]; then
	    # /usr/sbin/opensips -f /usr/local/etc/opensips/opensips.cfg #尝试启动opensips
        # n2=`ps -C opensips --no-heading|wc -l`
        # 再次启动失败,说明opensips无法启动,此时需要关闭keepalived
        # if [ $n2 -eq "0"  ]; then
    echo "$d opensips down,keepalived will stop" >> /etc/keepalived/check_opensips.log
    systemctl stop keepalived  # 停止keepalived
fi

opensips 相关配置
主备节点通过BIN 协议复制dialog数据,主备节点共享同一浮动IP地址通过dialog的更新来实现节点数据的交互。节点设置同一tag标签

socket=bin:192.168.1.25:26501  # CUSTOMIZE ME

loadmodule "proto_bin.so"
modparam("proto_bin", "bin_port", 26501)    
modparam("dialog", "dialog_replication_cluster", 1)

loadmodule "clusterer.so"
modparam("clusterer", "my_node_id", 3)
modparam("clusterer", "seed_fallback_interval", 5)
modparam("clusterer", "db_url", "mysql://opensips:opensipsrw@192.168.1.251/opensips")
modparam("clusterer", "my_node_info", "cluster_id=1, url=bin:192.168.1.25:26501")
modparam("clusterer", "sharing_tag", "vip/1=active") 

 ......
  	......
# account only INVITEs
if (is_method("INVITE")) {
	# create dialog with timeout
	if ( !create_dialog() ) {
			send_reply(500,"Internal Server Error");
			exit;
			}
	# dialog tag  设置共用的tag标签
	set_dlg_sharing_tag("vip");
	do_accounting("db","cdr");		
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值