zl程序教程

您现在的位置是:首页 >  工具

当前栏目

keepalived详解(三)——keepalived与Nginx配合实战

Nginx 详解 实战 配合 Keepalived
2023-09-14 09:01:44 时间

今天继续给大家介绍Linux运维相关知识,本文主要内容是keepalived与Nginx服务实战。

一、实战目的与环境

今天,我们使用keepalived实现两台Nginx服务器之间的高可用主备架构,实现对Nginx服务器的主备备份,系统架构如下:
Nginx设备1:192.168.136.14
Nginx设备2:192.168.136.15
keepalived虚拟IP:192.168.136.20

二、实战配置

首先,在两台设备上分别安装Nginx和keepalived服务,keepalived和Nginx服务既可以采用源码的方式进行安装,也可以采用YUM的方式进行安装。在keepalived和Nginx安装完之后,修改keepalived配置文件,如下所示:

global_defs {
        notification_email {
                pzz@pzz.com
        }
        notification_email_from
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id 192.168.136.14
}
vrrp_script check_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
        weight -20
}
vrrp_instance NGINX {
        state MASTER
        interface ens32
        virtual_router_id 1
        priority 100
        advert_int 5
        authentication {
                auth_type PASS
                auth_pass 123456
        }
        virtual_ipaddress {
                192.168.136.20
        }
        track_script {
                check_nginx
        }
}

另一台设备上的keepalived配置文件如下所示:

global_defs {
        notification_email {
                pzz@pzz.com
        }
        notification_email_from
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id 192.168.136.15
}
vrrp_script check_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
        weight -20
}
vrrp_instance NGINX {
        state BACKUP
        interface ens32
        virtual_router_id 1
        priority 80
        advert_int 5
        authentication {
                auth_type PASS
                auth_pass 123456
        }
        virtual_ipaddress {
                192.168.136.20
        }
        track_script {
                check_nginx
        }
}

在备用设备上,基本上与主用设备配置相同,存在差异的地方在于priority被改为80,router_id被改为备用设备自身的IP地址,state被改为BACKUP。
然后,我们需要编写keepalived配置文件中的Nginx服务检测脚本,根据keepalived配置,脚本文件为:/etc/keepalived/nginx_check.sh内容为:

#!/bin/bash
# 2022-02-20
# by pzz
# used to realise the keepalived detection to nginx
NUM=`ps -ef| grep nginx | grep -v "grep"| grep -v "check"|wc -l`
echo $NUM
if [ $NUM -ne 2 ];then
        systemctl stop keepalived
fi

该脚本两个设备完全相同。

三、效果检验

最后,我们来验证一下我们的keepalived和Nginx配置结果。当两台设备的keepalived和Nginx服务全部开启后,可以看到在主用设备上的IP地址,如下所示:
在这里插入图片描述
由于keepalived自身没有专门的日志,因此查看启动情况需要查看/var/log/messages文件,主用设备上该文件如下所示:
在这里插入图片描述
备用设备上该文件如下所示:
在这里插入图片描述
突然终端主用设备上的Nginx服务,期间在主机浏览器上尝试ping该架构的虚拟IP地址,如下所示:
在这里插入图片描述
此外,尝试访问该虚拟IP地址的Nginx服务,发现发生变动,如下所示:
主用Nginx停机前:
在这里插入图片描述
主用Nhinx停机后:
在这里插入图片描述
综上,可以看出,当主用设备的Nginx服务关闭后,备用设备能够检测到主用设备上的Nginx服务宕机,并且立即切换备用设备,使得Nginx服务提供正常,keepalived+Nginx服务配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200