keepalived+Nginx实现高可用集群配置

 更新时间:2026年05月27日 09:05:18   作者:时光·漫步zth  
本文详细介绍了如何使用Keepalived和Nginx搭建高可用集群,包括配置Keepalived为主从模式,利用虚拟IP实现故障切换,以及通过自定义Shell脚本监控Nginx状态,确保服务连续性,感兴趣的可以了解一下

首先准备两台机器,每个机器都安装有  keepalived  以及 Nginx,nginx 反向代理两个  tomcat  实现负载均衡,所以每个机器上安装docker 以及 tomcat。

1. 配置 Keepalived

1.1 配置 MASTER

第一步:修改 /etc/hosts 文件, 添加:

 127.0.0.1   KEEPALIVED_NGINX_MASTER

第二步:将 KEEPALIVED_NGINX_MASTER 配置到 router_id

第三步:注释掉 vrrp_strict

第四步 :配置 vrrp_instance 的 interface

所以将 interface ens33

第五步:配置 vrrp_instance 的  state 为 MASTER

第六步:配置  virtual_ipaddress

192.168.214.99

全部配置如下:

! 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 KEEPALIVED_NGINX_MASTER
   vrrp_skip_check_adv_addr
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.214.99
    }
}

1.2 配置 BACKUP

第一步:修改 /etc/hosts 文件, 添加:

127.0.0.1   KEEPALIVED_NGINX_BACKUP

第二步:将 KEEPALIVED_NGINX_BACKUP 配置到 router_id

第三步:配置 vrrp_instance 的  state 为 BACKUP

第四步:配置 vrrp_instance 的  statepriority 为 50

其他的配置和 MASTER 保持一致

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 KEEPALIVED_NGINX_BACKUP
   vrrp_skip_check_adv_addr
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.214.99
    }
}

2. 测试 Keepalived

两台机器的 Nginx 访问页面:

通过 Keepalived 虚拟 ip 访问:

宕掉 MASTER : 

3. 通过 shell 脚本优化 keepalived+Nginx 高可用集群

实际情况中 keepalived 不容易挂掉,而容易挂掉的是nginx。

此时的问题是如果 nginx 挂了,但是 keepavlied 没挂,这时候依然可以访问机器但是访问不到服务。

3.1 优化步骤

所以通过 keepalived 的 vrrp_script 配置,来调用自定义shell脚本。

#!/bin/bash
echo 'xxxxxx'
count_nginx=`ps -ef|grep -w nginx|grep -v grep|wc -l`
echo $count_nginx
if [ $count_nginx -eq 0 ];then
    systemctl start nginx.service
    sleep 2
    if [ `ps -ef|grep -w nginx|grep -v grep|wc -l` -eq 0 ];then
        systemctl stop keepalived.service
    fi  
fi

这个 shell 脚本的作用是统计 nginx 进程数,假如是 0 个 说明 Nginx 挂掉了,那就启动 nginx,等2秒,再统计,假如还是0,说明nginx启动失败,就把宕掉 keepalived 切换备份机器,假如不是0,说明启动成功,那就继续运行;

第一步:上面 shell 脚本命名 nginx_check.sh 文件,存/shell/目录下;

第二步:配置  keepalived.conf;

vrrp_script chk_http_port {
 script "/shell/nginx_check.sh" #脚本地址
 interval 2 #检测脚本执行的间隔
 weight 2 #比重
}

第三步:重启 keepalived 

到此这篇关于keepalived+Nginx实现高可用集群配置的文章就介绍到这了,更多相关keepalived Nginx 高可用集群 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx日志轮转与定时启动脚本的实现

    Nginx日志轮转与定时启动脚本的实现

    本文主要介绍了Nginx日志轮转与定时启动脚本的实现,通过批处理脚本rotate-logs.bat实现日志轮转,使用start-nginx.bat启动和重启Nginx服务,借助Windows任务计划程序每日凌晨自动执行日志轮转,确保Nginx服务正常启动,感兴趣的可以了解一下
    2026-04-04
  • nginx部署.net core站点的方法

    nginx部署.net core站点的方法

    这篇文章主要介绍了nginx部署.net core站点的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 详解Nginx SSL快速双向认证配置(脚本)

    详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • nginx配置https的方法示例(免费证书)

    nginx配置https的方法示例(免费证书)

    这篇文章主要介绍了nginx配置https的方法示例(免费证书),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • docker部署nginx并且挂载文件夹和文件操作

    docker部署nginx并且挂载文件夹和文件操作

    这篇文章主要介绍了docker部署nginx并且挂载文件夹和文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Centos7下安装部署nginx的三种方式详解

    Centos7下安装部署nginx的三种方式详解

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,这篇文章主要为大家介绍了Centos7下安装部署nginx的三种方式,希望对大家有所帮助
    2023-08-08
  • Nginx主机域名配置实现

    Nginx主机域名配置实现

    本文主要介绍了Nginx主机域名配置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • nginx部署前端vue项目完整详细指南

    nginx部署前端vue项目完整详细指南

    在使用Nginx部署前端Vue项目时,需要确保项目的生产环境版本已经打包,并且Nginx已经安装并配置在服务器上,下面我们来看看具体步骤吧
    2025-09-09
  • nginx中常见日志分析命令合集

    nginx中常见日志分析命令合集

    这篇文章主要为大家整理了一些nginx中常见日志分析命令,例如 查看实时日志,统计状态码分布,分析客户端 IP等,有需要的小伙伴可以参考一下
    2025-05-05
  • 一文了解nginx中的signal处理机制

    一文了解nginx中的signal处理机制

    nginx利用信号处理机制,可以捕获和处理各种信号,本文主要介绍了nginx中的signal处理机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05

最新评论