nginx + keepalived双活配置

一、安装nginx

我们这边默认安装的nginx的是1.12.2的版本,所以我们需要安装1.16.1版本的nginx的,才好,所以我们这边先更新yum源,步骤如下:

1、添加yum源:

[root@shtw-nk08 sbin]# cd /etc/yum.repos.d/
[root@shtw-nk08 sbin]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

2、yum安装nginx

[root@shtw-nk08 nginx]#yum install  nginx

3、查看nginx的版本

[root@shtw-nk08 yum.repos.d]# nginx -v
nginx version: nginx/1.16.1

4、重启、关闭、测试nginx

[root@shtw-nk08 nginx]# nginx  -s  reload  #重启nginx
[root@shtw-nk08 nginx]# nginx  -s  stop  #停止nginx
[root@shtw-nk08 nginx]# nginx  -t  #测试
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

5、如果nginx -s reload报错了,则执行下面脚本:

[root@shtw-nk08 nginx]# nginx -c /etc/nginx/nginx.conf

二、安装keepalived

1、IP的准备

主(nginx)  10.55.202.213
 从(nginx)  10.55.202.214
 虚拟ip(主)  10.55.202.107
 虚拟ip(从)  10.55.202.108

2、安装keepalived

说明:主备都需要安装:

[root@shtw-nk08 keepalived]# yum install keepalived

3、配置文件修改

主nginx的keepalived修改:

[root@shtw-nk08 keepalived]# cd /etc/keepalived/
[root@shtw-nk08 keepalived]# mv keepalived.conf  keepalived.conf.bak
[root@shtw-nk08 keepalived]# vim keepalived.conf
! Configuration File for keepalived

group {
   
    VI_1
 
}

vrrp_script chk_http_port {
    script "/usr/local/sbin/check_ng.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state MASTER      #表示主的nginx
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    mcast_src_ip 10.55.202.213    #主nginx的ip地址
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
       chk_http_port
    }
    virtual_ipaddress {
        10.55.202.107    #主的虚拟ip
    }
}

vrrp_instance VI_2 {
    state BACKUP    #备份的意思
    interface eth0
    virtual_router_id 61
    priority 99
    advert_int 1
    mcast_src_ip 10.55.202.213   #还是主的ip地址
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
       chk_http_port
    }
    virtual_ipaddress {
        10.55.202.108    #备份的虚拟ip地址
    }
}

从的nginx的keepalived的配置:

[root@shtw-nk08 keepalived]# cd /etc/keepalived/
[root@shtw-nk08 keepalived]# mv keepalived.conf  keepalived.conf.bak
[root@shtw-nk08 keepalived]# vim keepalived.conf
! Configuration File for keepalived

group {
   
    VI_1
 
}

vrrp_script chk_http_port {
    script "/usr/local/sbin/check_ng.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP   #表示从的nginx
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    mcast_src_ip 10.55.202.214  #从的ip地址
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
       chk_http_port
    }
    virtual_ipaddress {
        10.55.202.107
    }
}


vrrp_instance VI_2 {
    state MASTER    #表示从的
    interface eth0
    virtual_router_id 61
    priority 100
    advert_int 1
    mcast_src_ip 10.55.202.214   #从的ip地址
    authentication {
        auth_type PASS
        auth_pass 1111
    }   
    track_script {
       chk_http_port
    }  
    virtual_ipaddress {
        10.55.202.108    #从的虚拟ip地址
    }   
} 

4、配置keepalived双活脚本

说明:这个脚本主从两台机器都需要配置,配置好之后,保存(wq)并退出

[root@shtw-nk05 sbin]# cd /usr/local/sbin
[root@shtw-nk05 sbin]# vim 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

5、启动keepalived

[root@shtw-nk08 keepalived]# systemctl  start  keepalived  #启动keepalived

[root@shtw-nk08 keepalived]# systemctl  status  keepalived  #查看keepalived状态

如图:

 

 6、启动验证

nginx和keepalived全部启动之后,在浏览器中测试一下:

1、先输入 10.55.202.213 => 访问成功

2、输入 10.55.202.214 => 访问成功

3、输入 10.55.202.107 和 10.55.202.108  =>访问成功

4、关停 10.55.202.213 之后测试 => 访问失败 ,输入10.55.202.107 => 访问成功

猜你喜欢

转载自www.cnblogs.com/zhangqigao/p/12053901.html