Nginx + Keepalived 实现高可用配置

服务器环境:Centos7.4

目的:为了实现Nginx高可用

Tomcat为了演示明显,我这边安装了Tomcat服务

环境

虚拟IP:192.168.43.15

虚拟机一:192.168.43.12(作主服务器) 安装tomcat、Nginx和Keepalived服务

虚拟机二:192.168.43.13(作从服务器) 安装tomcat、Nginx和Keepalived服务

 

关闭防火墙

顺序:启动Tomcat--->修改并启动Nginx--->修改并启动Keepalived

 

 

步骤一:安装Tomcat并启动(两台服务器上都操作,放个测试页面,这边不做介绍)。效果如下

 

 

步骤二:安装Nginx服务,配置反向代理,效果如下(不做详细描述,见另一篇文档) 两台服务器都要

 

 

步骤三:安装Keepalived服务

1、安装Keepalived(两台服务器安装)

[root@localhost ~]# yum -y install keepalived
[root@localhost ~]# rpm -qa keepalived
keepalived-1.3.5-1.el7.x86_64
[root@localhost ~]# rpm -ql keepalived
/etc/keepalived
/etc/keepalived/keepalived.conf     #主配置文件
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/lib/systemd/system/keepalived.service
....

 

2、配置主机名称(两台服务器都修改)

[root@localhost ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   wangzy12    #手动添加,自定义

 

 3、修改主服务器配置

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# vi keepalived.conf
! 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.43.12    #邮箱地址
   smtp_connect_timeout 30
   router_id wangzy12  #服务器主机名
}
#手动添加,执行检测脚本。脚本目录自己定义,
vrrp_script chk_http_port {
   script "/opt/nginx_check.sh"   #添加Nginx检测脚本
   interval 2  #检测间隔
   weight -20  #条件成立,权重-20

}

vrrp_instance VI_1 {
    state MASTER    #服务器标注,从服务器改成BACKUP即可
    interface ens33    #网卡名称,ifconfig查看即可
    virtual_router_id 51   #虚拟路由ID,与从服务器保持一致
    priority 100  #优先级,主服务器要比从服务器高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.43.15  #虚拟访问IP
    }
}

 

4、修改主服务器配置

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# vi keepalived.conf
! 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.43.12    #邮箱地址
   smtp_connect_timeout 30
   router_id wangzy13  #服务器主机名
}
#手动添加,执行检测脚本。脚本目录自己定义,
vrrp_script chk_http_port {
   script "/opt/nginx_check.sh"   #添加Nginx检测脚本
   interval 2  #检测间隔
   weight -20  #条件成立,权重-20

}

vrrp_instance VI_1 {
    state MASTER    #服务器标注,从服务器改成BACKUP即可
    interface ens33    #网卡名称,ifconfig查看即可
    virtual_router_id 51   #虚拟路由ID,与从服务器保持一致
    priority 90  #优先级,主服务器要比从服务器高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.43.15  #虚拟访问IP
    }
}

 

5、添加检测脚本(两台服务都添加)

[root@localhost ~]# vi /opt/nginx_check.sh 
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
    /opt/tengine-2.3.2/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

[root@localhost ~]# chmod 755 /opt/nginx_check.sh 

 

6、启动Keepalived主服务器

[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl status keepalived

 

 

7、启动Keepalived从服务器

[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl status keepalived

 

 

 

8、查看虚拟IP情况

主服务器(43.12):

[root@localhost ~]# ip a

 

 

 

 

 

从服务器(43.13):

[root@localhost sbin]# ip a

 

 

 

 

9、访问效果

访问虚拟地址:http://192.168.43.15/ ,展现的页面为主服务页面

 

 

 

 

 

10、关闭主服务故障的Keepalived和Nginx,模拟主服务故障,看页面是否正常

1、主服务操作

[root@localhost sbin]# systemctl stop keepalived
[root@localhost sbin]# ./nginx -s stop
[root@localhost sbin]# ps -ef|grep nginx
root       2497   1042  0 16:03 pts/0    00:00:00 grep --color=auto nginx
[root@localhost sbin]# ip a

 

 

2、从服务器查看虚拟IP是否跳转过来

[root@localhost sbin]# ip a

 

 

 

3、再次访问虚拟地址:http://192.168.43.15/  页面,可以看到服务器已经自动跳转到了从服务上,但是访问地址还是不变的。由此实现了Keepalived高可用

 

 

 

 

结尾:当我们将主服务服务重新启动后,访问地址不会自动跳转到主服务上去,但是从服务服务挂掉后就又自动跳转到主服务器。从而让我们有足够的时间优化配置服务器

 

posted on 2020-04-22 16:15  wangzy-Zj  阅读(319)  评论(1编辑  收藏  举报