nginx检测脚本
#!/bin/bash
run=`ps -C nginx --no-header | wc -l`
if [ $run -eq 0 ]
then
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header | wc -l` ]
then
killall keepalived
fi
fi
安装keepalived
yum -y install gcc pcre-devel zlib-devel openssl-devel keepalived
配置/etc/keeplived/keepalived.conf
global_defs {
#notification_email {
# [email protected]
#}
#notification_email_from [email protected]
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
# 一定要有的空格
vrrp_script chk_http_port {# 一定是写在vrrp_instance前面
script "/usr/local/src/check_nginx.sh"
interval 2 # 检测脚本执行的间隔2秒
weight 2
}
# 一定要有的空格
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface eth0 # 网卡
virtual_router_id 51 # 主、备机的virtual_router_id必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.96.138 # VRRP H虚拟地址
}
track_script { # 追踪trace_script要定在virtual_ipaddress的后面
chk_http_port
}
}
启动keepalived服务
service keepalived start
查看是否生效
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:18:9f:0b brd ff:ff:ff:ff:ff:ff
inet 192.168.15.253/24 brd 192.168.15.255 scope global eth0
inet 192.168.15.252/32 scope global eth0
inet6 fe80::a00:27ff:fe18:9f0b/64 scope link
valid_lft forever preferred_lft forever
如果keepalived服务启动后出现主备机都有虚ip的情况,请查看网卡是否开启混杂模式
ip link set eth1 promisc on
参考文档:https://www.cnblogs.com/kevingrace/p/6138185.html