当前位置: 首页 > news >正文

基于keepalived的Nginx高可用架构

一、概述

Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol)协议 的高可用性解决方案,为了解决静态路由器出现的单点故障问题,它能偶保证网络的不间断、稳定的运行。

二、核心功能

IP 漂移(VIP):通过虚拟 IP(VIP)实现服务的高可用。

健康检查(Health Checking):监控后端服务的状态,自动切换故障节点。

负载均衡:可与 LVS(Linux Virtual Server)结合,提供四层负载均衡

三、keepalived架构与工作原理

   3.1、VRRP协议

多台服务器组成一个虚拟路由器组 ,共享一个虚拟 IP 。通过优先级 选举 Master 节点,其他节点为 Backup。Master 节点定期发送 VRRP 通告,若 Backup 未收到通告,则触发选举新 Master。

   3.2、健康检查

支持 TCP、HTTP、HTTPS、SSL、脚本等多种检查方式。

若 Master 节点的服务异常,Keepalived 自动降低优先级,触发 VIP 漂移到 Backup。

四、配置文件详解

配置文件路径:/etc/keepalived/keepalived.conf

4.1、全局配置块

global_defs {

notification_email {

admin@example.com # 通知邮箱(需邮件服务器支持)

}

notification_email_from keepalived@example.com

smtp_server 127.0.0.1 # SMTP 服务器地址

smtp_connect_timeout 30 # SMTP 连接超时时间

router_id LVS_DEVEL # 节点标识(唯一)

}

4.2、VRRP 实例配置

vrrp_instance VI_1 {
    state MASTER             # 初始状态:MASTER/BACKUP
    interface eth0           # 绑定的物理网卡
    virtual_router_id 51      # 虚拟路由 ID(同一组需相同,范围 0-255)
    priority 100             # 优先级(值越大越优先)
    advert_int 1             # 通告间隔(秒)

    authentication {         # 认证配置
        auth_type PASS       # 认证类型:PASS/AH
        auth_pass 1234       # 密码(同一组需相同)
    }

    virtual_ipaddress {      # 虚拟 IP(VIP)
        192.168.1.100/24 dev eth0
    }

    track_script {           # 关联健康检查脚本
        chk_nginx
    }
}

4.3、健康检查配置

脚本检查实例:

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"  # 自定义脚本路径
    interval 2    # 检查间隔(秒)
    weight -20    # 检查失败时优先级降低的值
}

HTTP检查实例:

virtual_server 192.168.1.100 80 {
    delay_loop 6        # 检查间隔(秒)
    lb_algo rr          # 负载均衡算法(rr/wlc等)
    lb_kind NAT         # LVS 模式(NAT/DR/TUN)
    protocol TCP

    real_server 192.168.1.101 80 {
        weight 1
        HTTP_GET {
            url {
                path /health
                status_code 200
            }
            connect_timeout 3
            retry 3
        }
    }
}

五、基础项目部署

5.1、部署两个静态站点

5.2、安装keepalived

5.3、配置keepalived

六、项目测试

跟踪服务

开启Master 和 Backup 的keepalived服务

客户端测试:

 

模拟 Master宕机,Backup接替Master对外提供服务

systemctl  stop keepalived

客户端测试:

Master恢复正常,Master继续提供服务,Backup停止服务 

模拟 Master上的nginx服务停止,尝试重新启动nginx

keepalived不会对Nginx应用做健康检查,这里利用killall 命令探测服务的运行状态,在应用异常时,VIP 自动漂移。

相关文章:

  • 游戏引擎学习第119天
  • 【前端进阶】05 单线程的JavaScript如何管理任务的
  • Baklib企业CMS智能元数据与协作管理实践
  • 超级详细Spring AI运用Ollama大模型
  • 【CentOS7】安装MinIO
  • P1036 [NOIP 2002 普及组] 选数(dfs+素数筛选)
  • forge-1.21.x模组开发(一)注册方块和物品
  • Vue学习教程-15自定义指令
  • python 使用知识点 pyinstaller 虚拟环境打包
  • Java 18~20 新特性
  • Transformers快速入门-学习笔记
  • 一个基本的pyside6项目模板demo
  • Linux 命令大全完整版(06)
  • 【并发编程】线程池任务抛异常会怎么样?
  • NI Multisim仿真实现39计数器
  • Linux 权限系统和软件安装(二):深入理解 Linux 权限系统
  • 綫性與非綫性泛函分析與應用_3.例題-母本
  • AI发展迅速,是否还有学习前端的必要性?
  • 音视频封装格式:多媒体世界的“容器”与“桥梁”
  • 契约思维驱动开发:OpenAPI的最佳实践
  • 女儿被偷拍后,一个父亲的战斗
  • 博物馆有一项活动40岁以上不能参加?馆方回应
  • “今日海上”对话“今日维也纳”,东西方艺术在上海碰撞
  • 经济日报:美离间国际关系注定徒劳无功
  • 韩国称DeepSeek未经同意将用户数据传至境外,外交部回应
  • 几百元的工资优势已不能吸引人才流动,江苏多地探讨“抢人”高招