nginx-keepalived【配置教程】

什么是高可用

  • 两台相同的业务系统,当某一台故障时,另外一台自动接管、提供服务
  • 尽可能的希望我们的业务,持续不间断的提供服务

如何实现高可用

  • keepalived:基于vrrp(虚拟路由冗余协议)协议实现高可用(运行在网络层面)
  • 解决局域网中配置静态网关出现单点失效现象的路由协议

抢占式-配置(web-01)master

[root@nginx ~]# yum -y install keepalived.x86_64

[root@nginx ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
globa_defs {
  router_id lb01            :表示身份
}
vrrp_instance VI_1 {
  state MASTER
  interface eth0            :绑定在eth0的网卡
  virtual_router_id 50      :组id
  priority 100              :优先级
  advert_int 1              :每隔一秒探测是否存活
  authentication {
    auth_type PASS
    auth_pass 111
}
  virtual_ipaddress {
    192.168.200.111         :虚拟的IP地址
  }
}

 抢占式-配置(web-02)backup

[root@nginx ~]# yum -y install keepalived.x86_64

[root@nginx ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived
global_defs {
   
     router_id lb02
   }


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.111
    }
}

非抢占式【配置文件】

  • 首先节点机器都需要是backup角色
  • 通过优先级确定谁是master
  • 增加nopreempt

为什么要使用非抢占式

  • 默认抢占式我们发现当master节点出现故障之后虚拟VIP会漂移到backup节点使用,当master恢复后又会将VIP抢占回来
  • 故障和回复过程中出现了两次的VIP的漂移。如果在业务场景中是不适用的,我们可以使用非抢占式,当master恢复后不抢占VIP,backup继续使用VIP工作

 web-01配置

global_defs {
   
     router_id lb01
   }


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    nopreempt     
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.111
    }
}

 web-02配置

global_defs {
   
     router_id lb01
   }


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    nopreempt     
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.111
    }
}

keepalived【通过脚本监控nginx状态】

  • 上面的使用方式是当服务节点出现故障停机、主机失联、keepalived服务故障,VIP才会切换飘逸,与nginx的运行状态没有任何关联
  • 我们可以通过脚本监控nginx健康状态,实现地址飘逸

 脚本的编写

#!/bin/bash
nginx_status=$(pidof nginx | wc -l)
if [ ${nginx_status} -eq 0 ];then
  systemctl restart nginx &> /dev/null
  sleep 2
  nginx_status=$(pidof nginx | wc -l)
  if [ ${nginx_status} -eq 0 ];then
    systemctl stop keepalived &> /dev/null
  fi
fi

chmod +x ke.sh

将脚本添加到keepalived配置中

global_defs {
   
     router_id lb01
   }
vrrp_script ckeck_web {
    script "/sh/ke.sh"    
    interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    nopreempt     
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.111
    }
    track_script {
        check_web    
    }
}
global_defs {
   
     router_id lb01
   }
vrrp_script ckeck_web {
    script "/sh/ke.sh"    
    interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 99
    advert_int 1
    nopreempt     
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.111
    }
    track_script {
        check_web    
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦有一把琐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值