keepalived

一、关于本文

本文记录使用keepalived搭建高可用nginx服务的过程。

环境:

两台配置好Nginx服务的主机,同一网段。

二、步骤

2.1 配置master服务器

  2.1.1 安装keepalived服务。

[root@ruanwenwu-001 ~]# yum -y install keepalived
已加载插件:fastestmirror, priorities
base                                                            | 3.6 kB  00:00:00     
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"

 2.1.2 配置keepalived配置文件

  /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id lb01
}

vrrp_script check {     #定义脚本
   script "/usr/local/sbin/check_ng.sh" 
   interval 2    
   weight 2  
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.38.139
    }
    track_script {     #调用脚本
       check
    }
}

  注意看注释,重要的解释都在里面。

  我们在看虚拟ip的时候这样看:

  2.1.3 配置进程监控脚本/usr/local/sbin/check_ng.sh

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

  改变check_ng.sh的权限为755,其实就是为它增加可执行权限。

  2.1.4 开启keepalived服务

[root@ruanwenwu-001 ~]# systemctl start keepalived
[root@ruanwenwu-001 ~]# vim /var/log/messages
[root@ruanwenwu-001 ~]# ps aux|grep keep
root      10508  0.0  0.1 120228  1392 ?        Ss   17:37   0:00 /usr/sbin/keepalived -D
root      10509  0.0  0.2 120228  2348 ?        S    17:37   0:00 /usr/sbin/keepalived -D
root      10510  0.0  0.2 124484  2640 ?        S    17:37   0:00 /usr/sbin/keepalived -D
root      10623  0.0  0.0 112680   972 pts/1    R+   17:37   0:00 grep --color=auto keep

2.2 配置slave的keepalived

! Configuration File for keepalived

global_defs {
   router_id lb01
}

vrrp_script check {     #定义脚本
   script "/usr/local/sbin/check_ng.sh" 
   interval 2    
   weight 2  
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.38.139
    }
    track_script {     #调用脚本
       check
    }
}

我们发现,备的配置和主的配置只有3点不同。

1.stat

2.priority

3.router_id

三、访问测试

现在我们在192.168.38.128上开启了Nginx服务,在192.168.38.129上也开启了nginx服务。修改服务器上的文件,让他们显示不同的内容。

192.168.38.128上:

 

192.168.38.129上:

虚拟ip上:

 

    

发现一切都跟我们预想的一样。那么,如果这时候,我们关闭192.168.38.128上的keepalived服务。看看。

[root@ruanwenwu-001 html]# systemctl stop keepalived
[root@ruanwenwu-001 html]# ps aux|grep keep
root      17654  0.0  0.0 112680   972 pts/1    S+   18:16   0:00 grep --color=auto keep

然后再通过虚拟ip访问:

 

 已经自动跳到bak机器192.168.38.129上了。keepalived配置成功!

posted @ 2018-01-26 18:18  andyliud  阅读(194)  评论(0编辑  收藏  举报