• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
2022
博客园    首页    新随笔    联系   管理    订阅  订阅

keepalived高可用 -04

keepalived高可用

一、高可用keepalived与nginx

Nginx默认监听在所有的IP地址上,VIP会飘到一台节点上,相当于那台nginx多了VIP这么一个网卡,所以可以访问到nginx所在机器

如果nginx宕机,会导致用户请求失败,但是keepalived没有挂掉不会进行切换,所以需要编写一个脚本检测Nginx的存活状态,如果不存活则kill掉keepalived
1.nginx故障切换脚本
[root@lb01 ~]# vim check_web.sh
#!/bin/sh
nginxpid=$(ps -ef | grep [n]ginx | wc -l)
#1.判断Nginx是否存活,如果不存活则尝试启动Nginx
if [ $nginxpid -eq 0 ];then
    systemctl restart nginx &>/dev/null
    sleep 3
    #2.等待3秒后再次获取一次Nginx状态
    nginxpid=$(ps -ef | grep [n]ginx | wc -l) 
    #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
    if [ $nginxpid -eq 0 ];then
        systemctl stop keepalived
    fi
fi
#给脚本增加执行权限

[root@lb01 ~]# chmod +x /root/check_web.sh  
[root@lb01 ~] ./check_web.sh  (两者都行)

## 把lb01的脚本复制给lb02   

[root@lb01 ~]# scp -r check_web.sh 10.10.0.6:/root/
[root@lb02 ~]# chmod +x /root/check_web.sh  
[root@lb02 ~] ./check_web.sh  (两者都行)
2.使用keepalived配置文件调用nginx切换脚本
1、配置抢占式时
#只需要在主节点配置  #修复好了,负载均衡的服务,一直都是跑在lb01上的,所以监听的一直都是主节点负载均衡的nignx有没有出问题,假如脚本检测到主节点的nginx有问题,就会把keepilved停止,lb02ping不通VIP,LB02自己会生成VIP,当我们把LB01主节点修号了,因为配置了抢占式,主节点会把VIP抢回来,所以之需要在主节点配,但是不重要,一般配置最好都是非抢占式。
[root@lb02 ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
    router_id lb02
}

	 #给此脚本起个名字,什么名字都可以,给下面的调用使用。
vrrp_script check_web {
    script "/root/check_web.sh"
    #每5秒执行一次脚本,脚本执行内容不能超过5秒,否则会中断再次重新执行脚本
    interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 50
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.0.102
    }
    #调用计划的脚本  --调用
    track_script {
        check_web
    }
}

# 配置抢占式时,备节点配置脚本
# 配置抢占式时,两边都要配置脚本
2、配置非抢占式时
#先给原文件备份一下
[root@lb01 keepalived]# mkdir aa
[root@lb01 keepalived]# mv keepalived.conf aa/
[root@lb01 keepalived]# ll
total 4
drwxr-xr-x 2 root root  29 Apr 10 13:16 aa

#主节点也要配置
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
    router_id lb01
}

vrrp_script check_web {
    script "/root/check_web.sh"
    interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 50
    priority 10.10.0.102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.0.102
    }
    track_script {
        check_web
    }
}
## 把lb01的脚本复制给lb02   

[root@lb01 ~]# scp -r/etc/keepalived/keepalived.conf 10.10.0.6:/etc/keepalived/
## 把lb01改成lb02

# 然后实现两台keepalived VIP飘逸
[root@lb01 keepalived]# vim/etc/nginx/nginx.conf
# 故意改错     user  www;  改成   us3e2r  www;
[root@lb01 keepalived]# systemctl stop nginx

[root@lb02 keepalived]# systemctl restart keepalived
[root@lb02 keepalived]# systemctl restart keepalived
[root@lb02 keepalived]# ip addr | grep 10.10.0.102
    inet 10.10.0.102/32 scope global eth0
3.测试
1.将VIP所在机器nginx的配置文件修改错误
2.停止nginx
3.查看VIP是否切换
posted @ 2021-04-10 13:56  博客之记  阅读(45)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3