keepalived+nginx实现双机热备(防止单点故障)

时间:2022-09-13 18:14:05

1、准备两台虚拟机

      192.168.91.11(主)192.168.91.12(从)

2、安装软件

     ipvsadm 

     keepalived

     nginx

3、关闭selinux和防火墙

4、配置keepalived.conf如下:

! Configuration File for keepalived
global_defs {
}
vrrp_script chk_nginx {
#必须放在track代码的上方,否则无效,测试了几次是这个情况
script "killall -0 nginx"
#用shell命令检查nginx服务是否存在
interval 1
#时间间隔为1秒检测一次
weight -15
#当nginx的进程不存在了,就把当前的权重-15
}
vrrp_instance VI_1 {
state MASTER
#主LVS是MASTER,从主机时此项要改为BACKUP,要大写
interface eno16777736
#LVS监控的网络接口
virtual_router_id 51
#同一实例下virtual_router_id必须相同,MASTRE/BACKUP 设置值要一样
priority 100
#定义优先级,数字越大,优先级越高,把此份Conf拷贝到另一台机器上时,设置的priority值要比MASTRE权重值低
advert_int 1
#MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {
auth_type PASS
auth_pass 123456
#验证类型和密码,有PASS和AH两种,一般用PASS,据说AH有问题,认证密码主备服务器之间一定要一致,否则出错
}
virtual_ipaddress {
192.168.91.20
#设置虚拟IP,可以有多个地址,每个地址占一行,不需掩码。注意:这个 ip 必须与我们在 lvs 客户端设定的vip相一致
}
track_script {
chk_nginx
#引用上面的vrrp_script定义的脚本名称
}
notify_master "/etc/keepalived/changemail.py master"
notify_backup "/etc/keepalived/changemail.py backup"
notify_fault "/etc/keepalived/changemail.py fault"
#指定当切换到主、备及故障状态时,执行的脚本
}

5、测试 亲测可用

6、说明

    当MASTER存在时,所有的请求都发到MASTER上,MASTER宕机之后才发到BACKUP上,MASTER恢复正常之后,所有的请求继续发到MASTER上。