安装 keepalived
在10.161.24.50,10.161.24.51gateway server两台机器上分别安装 keepalived
$ sudo yum install -y keepalived
修改/etc/keepalived/keepalived.conf配置文件
50
vrrp_instance VI_1 {
state MASTER
interface bond0.102
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.161.24.98
}
}
51
vrrp_instance VI_1 {
state BACKUP
interface bond0.102
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.161.24.98
}
}
启动keepalived服务
$ sudo systemctl start keepalived
$ sudo chkconfig keepalived on
编写脚本keepalived.sh控制vip切换
while [ 1 ]
do
export JAVA_HOME=/usr/java/latest
source /tmp/TDH-Client/init.sh
beeline -u jdbc:hive2://10.161.24.50:6666/default -n hive -p 123456 -e "select * from test123;"
result_code1=$?
if [ "$result_code1" == 0 ]; then
sudo /bin/systemctl status keepalived
result_code2=$?
if [ "$result_code2" -ne 0 ]; then
sudo /bin/systemctl start keepalived
fi
else
sudo /bin/systemctl stop keepalived
fi
done
后台执行
nohup sh keepalived.sh 2>/dev/null >err.log &
放入crontab
- 编写逻辑判断进程是否存在
processkeepalived.sh
export JAVA_HOME=/usr/java/latest
ps -fe|grep keepalived.sh |grep -v grep |grep -v vim |grep -v processkeepalived.sh
if [ $? == 0 ];then
echo "running"
else
nohup sh /home/hadoop/shell/keepalived.sh 2>/dev/null >/home/hadoop/shell/err.log &
fi
- fi修改crontab文件
编写READ.ME
本脚本实时监控inceptor gateway和keepalived服务状态,通过判断gateway状态停止启动keepalived服务,实现vip的切换,实现gateway高可用(只有停掉master的keepalived服务vip才会切换到BACKUP节点)。
err.log记录脚本命令执行日志
keepalived.sh实现vip切换,如果gateway服务down掉,就停止keepalived服务,vip会切换到BACKUP,如果gateway服务恢复,就启动keepalived服务,vip切回MASTER。
processkeepalived.sh实现进程监控,判断后台执行keepalived.sh脚本的进程是否存在,存在则打印running,不存在就启动后台执行keepalived.sh脚本的进程。
在gateway服务都起来的情况下连接
停掉gateway1
测试连接
会发现vip跳到了51上
恢复gateway1
Vip跳到了50上
测试连接