keepalived nginx 主备配置

keepalived  nginx 主备配置(多主多备同理)

1.Nginx服务安装

  nginx 不区分主备,在两台服务上安装两个即可。

  安装参考:https://www.cnblogs.com/zwcry/p/9454647.html

2.Keepalived服务安装

  keepalived 区分主备、多主多备的。

  keepalived 多主多备 是把 单主单备 复制多份,调下优先级配置即可。

  安装参考:https://www.cnblogs.com/zwcry/p/9542867.html

  主备配置参考:https://www.cnblogs.com/zwcry/p/9549756.html

3.环境描述

  两台服务器(已按照1、2教程安装)

  IP.192.168.159.129

    nginx 已安装

    keepalived 已安装

  IP.192.168.159.130

    nginx 已安装

    keepalived 已安装

4.修改keepalived.conf配置

  192.168.159.129 (主)keepalived.conf

    cd /etc/keepalived/  #进入默认配置目录

    vim keepalived.conf  #编辑配置信息

    修改为如下内容

! Configuration File for keepalived

vrrp_script chk_nginx {  #虚拟路由沉余协议脚本
  script "/etc/keepalived/script/nginx_chk.sh"  #执行脚本 该脚本权限必须是可以执行的X
  interval 2  #上面的脚本没两秒执行一次
  weight 0  #权重  0为不变
}

vrrp_instance VI_1 {
  state MASTER  #两个值(主:MASTER  备:BACKUP),必须大写
  interface ens33  #网卡接口,ip a查看,上面主备搭建教程有讲
  virtual_router_id 51  #虚拟路由ID,主备或多主多备,需要全部设置一样
  priority 101  #优先级,越高越优先使用该服务
  advert_int 1  #多个keepalived的通讯检测间隔,单位秒
  authentication {  #认证类型与密码,主备或多主多备需要设置一样
    auth_type PASS
    auth_pass 1111
  }

  track_script {  #执行脚本
    chk_nginx  #上面定义的vrrp_script chk_nginx
  }

    virtual_ipaddress {
      192.168.159.110  #定义虚拟IP,换行可以定义多个
    }
  }

  192.168.159.130(备) keepalived.conf

    cd /etc/keepalived/  #进入默认配置目录

    vim keepalived.conf  #编辑配置信息

! Configuration File for keepalived

vrrp_script chk_nginx {
  script "/etc/keepalived/script/nginx_chk.sh"
  interval 2
  weight 0
}

vrrp_instance VI_1 {
  state BACKUP
  interface ens33
  virtual_router_id 51
  priority 101
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }

  track_script {
    chk_nginx
  }

  virtual_ipaddress {
    192.168.159.110
  }
}    

5.编写vrrp_script  nginx_chk.sh脚本(该脚本必须有执行权限)

  192.168.159.129(主)nginx_chk.sh

    cd /etc/keepalived/script/  #无目录,自己创建

    vim nginx_chk.sh  编辑脚本

    添加如下内容  

#!/bin/bash
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
  /usr/local/nginx/sbin/nginx
  sleep 2
  if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
    /etc/init.d/keepalived stop
  fi
fi

保存

chmod nginx_chk.sh  #赋值执行权限 

  192.168.159.130(备) nginx_chk.sh

    cd /etc/keepalived/script/  #无目录,自己创建

    vim nginx_chk.sh  编辑脚本

    添加如下内容  

#!/bin/bash
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
  /usr/local/nginx/sbin/nginx 
  sleep 2
  if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
    /etc/init.d/keepalived stop
  fi
fi

保存

chmod nginx_chk.sh  #赋值执行权限 

 

6.测试

  1)停止nginx,nginx自动重启成功

    

  2)停止主keepalived,虚拟IP自动切换至备keepalived

    

    

    

  3)访问虚拟IP自动跳转至nginx

    

  4)其他测试不演练了

注:Keepavlied不影响Nginx服务,Keepalived运行状态或非运行状态,Nginx该怎样还是怎样。

  Keepalied只是配合lvs将访问虚拟IP的请求,转发到虚拟IP所在服务器上。而这台服务器上的Nginx监听到后,再做应用层的请求转发。

猜你喜欢

转载自www.cnblogs.com/zwcry/p/9561317.html