Keepalived + nginx的安装部署

时间:2022-03-10 09:49:27

主机:IP->192.168.88.60 nginx已安装OK(省略)
备机:IP->192.168.88.80 nginx已安装OK(省略)
VIP:192.168.88.20 

第一步:主备一起安装keepalived   
yum install -y keepalived

第二步:配置/etc/keepalived/keepalived.conf
主机192.168.88.60配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {  #发生邮件目标地址

     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc   #发生邮件源地址

   smtp_server 192.168.200.1 #SMTP 服务器地址
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
   vrrp_script chk {
   script "/etc/chk_nginx.sh"  
   interval 2     #间隔多久检测脚本        
   weight -20     #脚本返回结果非0,优先级减20
}
vrrp_instance VI_1 {
    state BACKUP   #主的也设置备,以为主备取决于优先级
    interface eth0  #对应网卡
    virtual_router_id 51
    priority 90    #优先级,谁大谁是主(取值1-255之间)

    #nopreempt     #开启这个参数当优先级大的主服务恢复了也不抢占,以防跳来跳去  

    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   #密码
    }
    track_script {                  
        chk     # 对应上面的监测脚本模块
    }
    virtual_ipaddress {
        192.168.88.20  #VIP地址
    }
}
==============================================================

备机配置: 192.168.88.80

! Configuration File for keepalived

global_defs {
   notification_email {  #发生邮件目标地址

     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc   #发生邮件源地址

   smtp_server 192.168.200.1 #SMTP 服务器地址
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
   vrrp_script chk {
   script "/etc/chk_nginx.sh"  
   interval 2     #间隔多久检测脚本        
   weight -20     #脚本返回结果非0,优先级减20
}
vrrp_instance VI_1 {
    state BACKUP   #设置备用状态
    interface eth0  #对应网卡
    virtual_router_id 51
    priority 80    #优先级(90-20=70 小于80,如果主服务没有问题,优先级为90,如果有问题优先级变为70,备的设置为80,80>70 所以备成主接管)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   #密码
    }
    track_script {                  
        chk     # 对应上面的监测脚本模块
    }
    virtual_ipaddress {
        192.168.88.20  #VIP地址
    }
}

#注意不要少大括号哦

============================================

 

第三步:编写/etc/chk_nginx.sh脚本内容

#!/bin/bash
nginx_pid_count=`lsof -i :80 |wc -l`
if [ ${nginx_pid_count} -eq 0 ];then
  exit 1
else
  exit 0
fi
fi

给脚本权限 chmod +x /etc/chk_nginx.sh

 

第四步:启动主备keepalived
Service keepalived start
ip addr 查看vip是否起来了

#主服务器上关闭服务

/etc/init.d/nginx stop
#在从服务器上查看VIP有无绑定

ip addr

 

 

备注:

1 如果没有成功检测是不是{ }少写了

2 sh 测试监控脚本是否正确