大佬们救救萌新吧,freeswitch用keepalived做的高可用性,keepalived运行的时候日志里内容都是重复的,不知道是哪里出了问题
192.168.0.152是vip 不启用脚本的时候主备可以正常切换 三个脚本都在下面了
keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_fs {
script "/etc/keepalived/script/check_fs.sh"
interval 5
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
garp_master_delay 10
smtp_alert
virtual_router_id 51
priority 100
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_fs
}
virtual_ipaddress {
192.168.0.152/24
192.168.0.152/24 scope global noprefixroute ens33
}
notify_master "/etc/keepalived/script/fs_recover.sh"
}
check_fs.sh
#!/bin/sh
FS_CLI_PROG='/usr/bin/fs_cli'
FS_CLI_HOST='127.0.0.1'
FS_CLI_PORT='8021'
FS_CLI_PASS='ClueCon'
PROFILES='192.168.0.152'
VIP='192.168.0.152'
fs_cli() {
$FS_CLI_PROG -H $FS_CLI_HOST -P $FS_CLI_PORT -p $FS_CLI_PASS -x "$1"
}
sofia_profile_started() {
fs_cli "sofia xmlstatus" | grep "<name>$1</name>" | wc -l
}
save_log(){
count=1
str_tmp="`date +%Y-%m-%d_%H:%M:%S` "
while [ $# -ge 1 ];do
str_tmp="$str_tmp $1"
count=count+1
shift
done
echo $str_tmp >>/var/log/check_fs_`date +%Y-%m-%d`.log
}
check_vrrp(){
ip a|grep $VIP|wc -l
}
check_fs_service(){
ps -ef |grep freeswitch.service|grep -v 'grep'|wc -l
}
# fs_cli "sofia recover"
for p in $PROFILES; do
if [ `sofia_profile_started "$p"` -eq 0 ]; then
# echo "$p DOWN"
log_str="$p DOWN"
save_log $log_str
if [ `check_vrrp` -eq 1 ];then
save_log "本机已经绑定VRRP,即将重启keepalived和FreeSWITCH。"
service keepalived restart
save_log "vrrp切换完成!"
if [ `check_fs_service` -eq 1 ];then
save_log "freeswitch服务正在操作中。"
else
service freeswitch restart
save_log "freeswitch重启成功!"
fi
else
if [ `check_fs_service` -eq 1 ];then
save_log "freeswitch服务正在操作中。 "
else
save_log "本机没有绑定VRRP,重启FreeSWITCH。"
service freeswitch restart
save_log "freeswitch重启成功!"
fi
fi
exit 1
fi
done
save_log "freeswitch状态检测:OK!"
#echo "OK"
exit 0
fs_recover.sh
#!/bin/sh
FS_CLI_PROG='/usr/bin/fs_cli'
FS_CLI_HOST='127.0.0.1'
FS_CLI_PORT='8021'
FS_CLI_PASS='ClueCon'
PROFILES='192.168.0.152'
VIP='192.168.0.152'
fs_cli() {
$FS_CLI_PROG -H $FS_CLI_HOST -P $FS_CLI_PORT -p $FS_CLI_PASS -x "$1"
}
save_log(){
counti=1
str_tmp="`date +%Y-%m-%d_%H:%M:%S` "
while [ $# -ge 1 ];do
str_tmp="$str_tmp $1"
count=count+1
shift
done
echo $str_tmp >>/var/log/check_fs_`date +%Y-%m-%d`.log
}
save_log "本节点切换为主用状态,开始接管切换前的通话。"
fs_cli "sofia recover"
fs_cli "raloadxml"
exit 0