KeepAlived配置与Nginx高可用

keepalived安装和nginx高可用

一、安装keepalived

1.1  下载keepalived

官方网址 http://keepalived.org ,

下载1.1.19版本:

 wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz

tar -xf keepalived-1.1.19.tar.gz

1.2 安装前准备

如果直接安装keepalived,如./configure有可能会安装错误,所以需要下载插件

 yum install openssl* -y

 yum -y install kernel* #安装内核相关东西

 ln -s /usr/src/kernels/2.6.32-696.23.1.el6.x86_64 /usr/src/linux #建立软连接

 yum -y install popt*

 yum -y install libnl-devel

1.3 安装

./configure --with-kernal-dir=/usr/src/kernels/2.6.32-696.23.1.el6.x86_64

可能会报一下错误,提示openssl没有安装


按照1.2中的步骤安装openssl即可。

 

configure最后出现三个yes表示安装成功

  make

  make install

二、安装后的操作

2.1VIP配置

分别给主备两台机配置VIP

ifconfig eth0:0 192.168.1.105 netmask 255.255.255.0 up

2.2 启动前的一些操作

/bin/cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d

/bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig

mkdir /etc/keepalived -p

/bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived

/bin/cp /usr/local/sbin/keepalived /usr/sbin

/etc/init.d/keepalived start #启动

ps -ef | grep keep #查看keepalived进程

 

/etc/init.d/keepalived stop #停止

三、keepalived配置文件详解

经过上一步的操作,配置文件被存放在/etc/keepalived/keepalived.conf

3.1主配置文件

 

3.2备配置文件

 

3.3 配置详解

1Global_defs{

Router_id LVS_2 #类似于mysqlserverid,主备不可以一样,并且全局唯一

 }

其他配置是关于邮件方面的配置,没什么用。

2vrrp_instance VI_1模块,代表一个实例

Status:分为MASTERBACKUP,必须大写

Interface:指绑定的哪块网卡接口

Virtual_router_id:虚拟路由的 ID 号, 主备两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址  

Priority:节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高

Advert_int 1:组播信息发送间隔,两个节点设置必须一样, 默认 1s

Authentication:两节点必须设置一致。

virtual_ipaddress {

       192.168.1.105/24

} #虚拟IP,主备必须设置一致:并且要与开始时ifconfig eth0:0 192.168.1.105 netmask 255.255.255.0 up设置的虚拟ip一致,这里可以写多个VIP


#下面重点来了

vrrp_script chk_nginx {  

    script "/root/nginx_check.sh"   #检测 nginx 状态的脚本路径

    interval 2   #2s执行一次脚本

    weight -20   ## 如果条件成立,权重-20

}

track_script {  

       chk_nginx  

   } ### 执行 Nginx 监控的服务

 

3、监控nginx的脚本nginx_check.sh  (别忘了chmod +x nginx_check.sh)

#!/bin/bash  

A=`ps -C nginx –no-header |wc -l`  

if [ $A -eq 0 ];then  

/opt/nginx/sbin/nginx  

sleep 2  

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then  

    killall keepalived  

fi  

fi

大概意思是:如果nginx挂掉,则尝试重启nginx,如果还是启动不来nginx,杀死keepalived进程,备节点自动接管主的VIP继续提供服务。当然类似的脚本还有很多,并不需要一定得这么写。

四、关于MASTERBACKUP的理解

1、网上说:根据status:MASTERstatus:BACKUP并不完全区分主备,而是根据priority的大小来确定的,priority大的是主,小的是备。

2、nopreempt属性:

当主节点挂掉后,备节点接管主节点,如果主节点恢复正常后有重新抢夺VIP接管业务。

有的时候我们需要master在恢复正常后不要重新接管VIP,让slave服务器继续为【主】  让后来恢复正常的master服务器为【备】,我们需要在master设置如下属性,slave节点不用改:

Status:BACKUP

nopreempt

意思是:

state MASTER 修改为 state BACKUP 

nopreempt  设置为不抢夺VIP

 

 

 

猜你喜欢

转载自blog.csdn.net/nuoWei_SenLin/article/details/79897574
今日推荐