nginx+keepalived实现主备高可用搭建过程

1.实验物料

基本的理论在这里就不过多说了,我们就是先只实现主备模型,双主模型我们后续再说。
在这里插入图片描述
对于keepalived的理论不是很理解的同学,请参考我之前写的lvs的相关内容:《LVS负载均衡DR模式的搭建过程(不用keepalived)》《LVS+keepalived实现高可用的DR模式负载均衡的搭建过程》

2.软件安装

1.安装虚拟机

这里我安装了两台linux centos7 64的虚拟机,以nat的网络方式配置,两台机器的ip 分别为192.168.222.102和192.168.222.103。至于安装过程,这里不再详细说明,不会的同学可以根据我之前的博客《VMware虚拟机下安装CentOS(NAT模式)》来进行参考。

2.安装nginx

这里我分别在192.168.222.102和192.168.222.103安装nginx,关于安装过程,这里不再想起介绍,不会的同学请参考我之前的博客《CentOS-7下安装Nginx的详细过程》来进行安装。

3.keepalived安装及配置

1.下载及安装

yum install keepalived -y

在这里插入图片描述
安装完成后,软件配置在etc/keepalived下
在这里插入图片描述

2.配置keepalived

1.先备份一下原始配置文件

cp keepalived.conf keepalived.conf.bak

在这里插入图片描述
2.配置:
192.168.222.102 MASTER上的配置:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_http_port {
    script "/opt/chk_nginx.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.222.150/24 dev eth0 lable eth0:3
    }
}

192.168.222.103 BACKUP上的配置:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_http_port {
    script "/opt/chk_nginx.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.222.150/24 dev eth0 lable eth0:3
    }
}

3.编写nginx自动化监测脚本

在这里插入图片描述
脚本内容如下:

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
echo "$counter"
if [ "${counter}" = "0" ]; then
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        service keepalived stop
    fi
fi

3.启动运行

1.启动nginx

分别在两台虚拟机上执行命令:

/usr/local/nginx/sbin/nginx 

在这里插入图片描述

2.启动keepalived

分别在两台虚拟机上执行命令:

service keepalived start

在这里插入图片描述

3.查看vip是否成功

在192.168.222.102 MASTER执行:

ip addr

在这里插入图片描述
在192.168.222.103 MASTER执行:
在这里插入图片描述
配置成功。

4.验证

1.正常情况

直接访问http://192.168.222.150,运行正常:
在这里插入图片描述

2.挂掉keepalived

挂掉192.168.222.102 MATER:

service keepalived stop

在这里插入图片描述
此时查看ip
在这里插入图片描述
看到VIP 192.168.222.150 消失
然后我们查看192.168.222.103 BUCKUP的ip
在这里插入图片描述
看到VIP 192.168.222.150 飘到了BUCKUP上,完成了故障转移。
我们再看一下页面是否能访问:
在这里插入图片描述
仍然正常进行。

3.重启keepalived的MASTER

在192.168.222.102 MATER 重新启动keepalived:

service keepalived start

在这里插入图片描述
查看ip:
在这里插入图片描述
VIP又重新飘回了来了。
在这里插入图片描述
VIP在BUCKUP上消失了。

4.关掉nginx

关掉nginx后,2秒后又会重启nginx,如果重启失败,会杀掉keepalived,VIP会再次飘到BUCKUP上。

5.注意问题

  1. keepalied 的配置中,要把vrrp_strict这个参数注释掉,否则无法ping通VIP,也无法访问VIP.,还会出现脑裂,就是主备都有VIP;
  2. 注意要编写nginx的自动化监测脚本;
  3. 关掉防火墙,关掉防火墙,关掉防火墙,重要的事情说三遍。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值