本次实验 master 192.168.20.130
slave 192.168.20.131
虚拟ip 192.168.20.150
步骤一: 两台机器安装keepalived
yum install keepalived
步骤二: 配置master
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
xxx.xxx@qq.com
}
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id master-keepalived
}
vrrp_script chk_down {
script "bash /etc/keepalived/conver.sh"
interval 2
weight -20
}
vrrp_script chk_nginx {
script "/etc/keepalived/chknginx.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
track_script {
chk_down
chk_nginx
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.150/24 dev ens33 label ens33:0
}
}
说明:
vrrp_script chk_nginx :表示keepalive 每间隔2s( interval 2 )执行脚本: script “/etc/keepalived/chknginx.sh”
vrrp_script chk_down :表示每间隔2s 执行脚本script “bash /etc/keepalived/conver.sh”,如果脚本非正常退出即返回码是非0,就 weight -20 表示权重减少20,优先级降低,ip漂移到备用节点,正常退出不做操作weight
track_script : 表示调用已经定义好的vrrp_script
步骤三 编写脚本:
cat /etc/keepalived/conver.sh
#!/bin/bash
[[ -f /etc/keepalived/down ]] && exit 1 || exit 0
cat /etc/keepalived/chknginx.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
systemctl restart nginx
# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
~
步骤4 安装nginx
yum install nginx