keepalived nginx 主备配置

Posted 七脉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  #编辑配置信息

  谨记:该配置慎用空格,可以使用TAB或回车排版,空格会被识别为赋值,导致keepalived运行失败

   修改为如下内容

! 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  #编辑配置信息

  谨记:该配置慎用空格,可以使用TAB或回车排版,空格会被识别为赋值,导致keepalived运行失败  

   修改为以下内容

! 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 BACKUP#两个值(主:MASTER  备:BACKUP),必须大写
	interface ens33#网卡接口,ip a查看,上面主备搭建教程有讲
	virtual_router_id 51#虚拟路由ID,主备或多主多备,需要全部设置一样
	priority 100#优先级,越高越优先使用该服务
	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,换行可以定义多个
	}
}

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 775 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 775 nginx_chk.sh  #赋值执行权限 

6.测试

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

    

 

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

    

    

    

 

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

    

 

  4)其他测试不演练了

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

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

以上是关于keepalived nginx 主备配置的主要内容,如果未能解决你的问题,请参考以下文章

keepalived + lvs + nginx 主备配置案例

nginx+keepalived实现主备模式高可用

keepalived+nginx+apache主备及双活搭建测试

nginx+keepalived 主备搭建

keepAlived主备及双主

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析