集群搭建系列教程3:CentOs7虚拟机环境搭建高可用反向代理平台

原创教程,未经允许,禁止转载

集群搭建系列教程3

上一章:

在上一次的教程中,我们成功的在单台虚拟机上搭建一台nginx实现反向代理多台服务器项目的小集群平台

通过测试,我们可以直接访问nginx的ip,然后通过nginx反向代理给我们要访问的资源。

集群中即使有一台项目服务器宕机也不会影响整个集群使用。

但是假如nginx挂掉的话,我们就会无法通过反向代理的方式访问项目。

为了让系统的容灾性更高,我们需要对nginx再次进主从配置,实现系统的高可用性。

搭建准备:

Centos7,nginx-1.12.2,

因为我们上次已经搭建过但nginx的集群,所以可以直接使用镜像文件,所以克隆一份有nginx的虚拟机,然后改名为nginx2,ip为:192.168.229.136

第一部分:配置keepalived

第一步:下载安装

在两台nginx服务器上分别运行如下命令

yum install keepalive

第二步:在两台nginx服务器上分别配置keepalived

服务器:192.168.229.128(主)

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id nginx_server_1
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight 20
    #weight为正数
    #如果脚本执行结果为0,,Master:weight+priority>Backup:weight+priority(不切换)
    #如果脚本执行结果不为0,Master:priority<Backup:priority+weight(切换)
    #weight为负数
    #如果脚本执行结果为0,,Master:priority>Backup:priority(不切换)
    #如果脚本执行结果不为0,Master:priority+weight<Backup:priority(切换)
    #一般来说,weight的绝对值要大于Master和Backup的priority之差
}

vrrp_instance VI_1 {
    state MASTER
    interface eno16777984
    virtual_router_id 51
    mcast_src_ip 192.168.229.128
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.229.222
    }
}
View Code

服务器:192.168.229.136(从)

state 和主不一样,是BACKUP

route_id 和主不一样

priority 小于主机

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id nginx_server_2
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight 20
    #weight为正数
    #如果脚本执行结果为0,,Master:weight+priority>Backup:weight+priority(不切换)
    #如果脚本执行结果不为0,Master:priority<Backup:priority+weight(切换)
    #weight为负数
    #如果脚本执行结果为0,,Master:priority>Backup:priority(不切换)
    #如果脚本执行结果不为0,Master:priority+weight<Backup:priority(切换)
    #一般来说,weight的绝对值要大于Master和Backup的priority之差
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777984
    virtual_router_id 51
    mcast_src_ip 192.168.229.136
    priority 90
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.229.222
    }
}
View Code

第三步:创建脚本文件

分别在两台nginx服务器上运行如下命令

[root@localhost sbin]# cd /etc/keepalived/
[root@localhost keepalived]# touch nginx_check.sh 
[root@localhost keepalived]# vim nginx_check.sh 

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

第四步:更改可执行文件

分别在两台nginx服务器上执行如下命令

chmod +xxx /etc/keepalived/nginx_check.sh

第五步:配置虚拟ip

虚拟ip是提供给外部的一个IP地址,当访问项目时,所有外部请求都可以直接访问这个ip

分别在两台nginx服务器的虚拟机上配置虚拟ip(配置第二台虚拟机时,如果第一台还在启动,这是配置好以后启动会报错提示:job for network.service failed because。。。这是因为同一个网段里只能有一个ip)

执行如下命令:

[root@localhost local]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-ens33

增加一个新的IPADDR=192.168.229.222

[root@localhost sbin]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:59:68:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.229.136/24 brd 192.168.229.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.229.222/24 brd 192.168.229.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe59:68e0/64 scope link 
       valid_lft forever preferred_lft forever
View Code

保存退出以后,重新启动网络服务

systemctl restart network

运行命令查看,

[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d8:75:66 brd ff:ff:ff:ff:ff:ff
    inet 192.168.229.135/24 brd 192.168.229.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.229.222/24 brd 192.168.229.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fed8:7566/64 scope link 
       valid_lft forever preferred_lft forever
View Code

该服务器已经设置了虚拟ip

第六步:启动keepalived

分别在两台nginx服务器上运行如下命令

[root@localhost sbin]# systemctl start keepalived
[root@localhost sbin]# systemctl enable keeplived

第七步:校验

访问第一台ngin服务器:128

访问第二台服务器:136

访问虚拟ip:222

然后让136这个nginx服务器宕机:

再次访问虚拟ip,仍然能够访问到项目,实现了ip漂移

第八步:优化域名访问

在windos的host文件中奖192.168.229.222 映射到www.magicabcweb.com

192.168.229.222            www.magicabcweb.com

直接访问这个域名,发现也是可以访问

 

posted @ 2018-02-01 14:55  一介書生  阅读(186)  评论(0)    收藏  举报