环境准备
# 安装nc工具,方便检测端口
yum install nc
# 安装keepalived
yum install keepalived
# 开启keepalived服务
chkconfig keepalived on
设置
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bk
# ifconfig 查看ip对应的网卡,下面的eth6等设置为ip对应的网卡,否则切换虚拟IP的时候不能及时反应。
# 设置主机
vi keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from websv1@pacer.com
smtp_server localhost
smtp_connect_timeout 30
router_id nginx_master
}
vrrp_instance VI_1 {
state MASTER
interface eth0 设置当前ip对应的网卡
virtual_router_id 51
priority 100 priority值大的优先,主机100,备机90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.17.254.86 虚拟IP,主备一致
}
}
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 2
weight 2
}
track_script {
chk_http_port
}
# 设置备机
vi keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from websv1@pacer.com
smtp_server localhost
smtp_connect_timeout 30
router_id nginx_backup
}
vrrp_instance VI_1 {
state MASTER
interface eth5
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.17.254.86
}
}
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 2
weight 2
}
track_script {
chk_http_port
}
检测nginx状态
# 创建可执行脚本:/opt/chk_nginx.sh ,用于检测nginx挂掉的时候,也一起停止keepalived,以激活备机的keepalived
vi /opt/chk_nginx.sh
#!/bin/sh
# check nginx server status
PORT=80
nc -z localhost $PORT | grep "succeeded"
#nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
service nginx restart
sleep 1
nc -z localhost $PORT | grep "succeeded"
[ $? -ne 0 ]