上一章节,我们只是做了Keepalived宕机的测试,但是并没有针对Nginx进行监控,加入Nginx断开后,keepalived并不知道,因此还没有真正做到当Nginx服务挂掉后,Keepalived能够切换到备用服务器上。接下来我们结合Nginx反向代理来做对虚拟Ip的监控。
此时我们需要把lb01和lb02的Nginx配置文件修改一下
[root@lb01 application]# vim /application/nginx/conf/nginx.conf
http{
.
.
.
upstream default{
server 172.16.1.5:8080;
server 172.16.1.6:8080;
}
server {
listen 10.0.0.3:80; ####将监听地址修改为Keepalived所监听的虚拟IP
server_name localhost;
location / {
proxy_pass http://default;
}
}
}
##注意,nginx配置中无法监听不存在的地址,这里需要修改内核参数,如下:(两个服务器都加上)
[root@lb01 application]# echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
[root@lb01 application]# sysctl -p
这仍然不能满足当Nginx服务挂掉后,Keepalived实现主备切换。那么应该怎么做了?实现Keepalived主备切换的前提条件是keepalived服务挂掉,那么我们便可以将Nginx服务和Keepalived服务关联起来,一旦Nginx服务中断,让Keepalived也跟着一起中断,这样是不是就能实现当Nginx服务中断,Keepalived主备切换,从而10.0.0.3虚拟Ip漂移到10.0.0.6(lb02)上。
这里我们通过shell脚本和定时任务,将Nginx服务与Keepalived服务的生死绑定到一起。
[root@lb01 application]# mkdir scripts
[root@lb01 scripts]# cd /application/scripts/
[root@lb01 scripts]# vim check_web.sh
#!/bin/bash
nginx_info=$(ps -ef|grep [n]ginx|wc -l)
if [ $nginx_info -lt 2 ]
then
/etc/initd./keepalived stop
fi
#请添加执行权限:chmod +x check_web.sh
将check_web.sh脚本加入到Keepalived配置文件中
global_defs {
router_id lb01_lvs
}
vrrp_script check_web { ###该模块需要添加到global_defs和vrrp_instance中间
#定义一个监控脚本,必须要有执行权限
script "/application/scripts/check_web.sh"
#执行脚本间隔时间
interval 2
#脚本执行完成,让优先级和权重值进行运算,从而实现主备切换
weight 2
}
vrrp_instance group01 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
track_script { ##引用执行的脚本
check_web
}
}
###注意:字符与{}之间有空格,否则keepalived不生效
##测试
[root@lb01 application]# /application/nginx/sbin/nginx
[root@lb01 application]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
[root@lb01 application]# /application/nginx/sbin/nginx -s stop
[root@lb01 application]# /etc/init.d/keepalived status ##停止nginx,2s后keepalived也停止
keepalived is stopped
[root@lb01 application]#
最后修改于 2020-01-06 15:01:43
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

