大道至简

学必求其心得,业必贵于专精。

0%

Keepalived+Freeswitch安装

1.yum安装

1
2
yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel	#安装依赖环境
yum install -y keepalived #安装keepalived

2.修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
vim /etc/keepalived/keepalived.conf		#打开编辑配置文件

#文件内容如下#
global_defs {
router_id LB01
script_user root
enable_script_security
}

vrrp_script chk_fs {
script "/etc/keepalived/check-freeswitch.sh" #freeswitch检测脚本
interval 60 #脚本检测周期,单位:s
weight 2
}

vrrp_instance VI_1 {
state BACKUP
interface eno2 #绑定为当前虚拟路由器使用的物理接口
virtual_router_id 51 #当前虚拟路由器的惟一标识,范围是0-255
priority 150 #当前主机在此虚拟路径器中的优先级;范围1-254
nopreempt #非抢占模式配置
advert_int 3 #vrrp通告的时间间隔
authentication {
auth_type PASS
auth_pass 1111
}

virtual_ipaddress {
192.168.200.101/29 label eno2:0
}

notify_master "/etc/keepalived/retart-freeswitch.sh" #晋升MASTER执行freeswitch重启脚本

track_script {
chk_fs
}
}

3.编辑freeswitch检测脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
vim /etc/keepalived/check-freeswitch.sh		#打开编辑脚本内容

#文件内容如下#
#!/bin/bash
#需要监控的内部网关
VIP=192.168.200.101
#需要监控的内部网关
gateways=("internal" "56335845")

for element in ${gateways[*]}
do
runningNum=`docker exec freeswitch sh -c "fs_cli -x 'sofia xmlstatus'" | grep "<name>$element</name>" | wc -l`
if [ $runningNum -lt 1 ]
then
check_status=0
echo "$check_status" > /etc/keepalived/freeswitch-status.txt
docker stop freeswitch
break
else
check_status=1
echo "$check_status" > /etc/keepalived/freeswitch-status.txt
fi
done
#监控freeswitch,若非正常运行,则通过重启keepalived转移IP
#check_status=`cat /etc/keepalived/freeswitch-status.txt`
if [ $check_status -eq 1 ]
then
exit
else
if [ `ifconfig | grep "$VIP" |wc -l` -eq 1 ]
then
service keepalived restart
else
exit
fi
fi

4.编辑freeswitch重启脚本

1
2
3
4
5
6
7
8
9
10
vim /etc/keepalived/retart-freeswitch.sh	#打开编辑脚本内容

#文件内容如下#
#!/bin/bash
if [ `docker ps -a |grep freeswitch |wc -l` -eq 1 ]
then
docker restart freeswitch
else
docker run --net=host --name freeswitch -e SOUND_RATES=8000:16000 -v freeswitch-sounds:/usr/share/freeswitch/sounds -v /etc/freeswitch/:/etc/freeswitch safarov/freeswitch
fi

5.启动keepalived

1
service keepalived start

6.查看vip是否正常监听

1
2
3
4
5
6
7
ifconfig

#vip监听信息如下#
eno2:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.101 netmask 255.255.255.248 broadcast 0.0.0.0
ether ac:1f:6b:a0:82:85 txqueuelen 1000 (Ethernet)
device memory 0xfb100000-fb11ffff