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

Keepalived 与 Nginx 高可用部署方案详解

Keepalived 与 Nginx 高可用部署方案详解

Nginx 作为高性能 Web 服务器和反向代理,在生产环境中通常需要高可用(High Availability, HA)部署以避免单点故障。结合 Keepalived 可以实现主备切换或双活模式。以下是几种主流的高可用方案:


1. 基于 Keepalived + VIP 的主备高可用方案

(1)架构

客户端 → 虚拟IP (VIP)├── Nginx 主节点(Active)└── Nginx 备节点(Backup)
  • VIP (Virtual IP):客户端访问的浮动 IP,由 Keepalived 管理。
  • Keepalived:通过 VRRP 协议实现主备切换,检测 Nginx 健康状态。

(2)部署步骤

① 安装 Nginx 和 Keepalived
# Ubuntu/Debian
sudo apt install nginx keepalived# CentOS/RHEL
sudo yum install nginx keepalived
② 配置 Nginx

/etc/nginx/nginx.conf(主备节点配置相同):

http {upstream backend {server 192.168.1.101:80;  # 后端服务器 1server 192.168.1.102:80;  # 后端服务器 2}server {listen 80;location / {proxy_pass http://backend;}}
}
③ 配置 Keepalived

/etc/keepalived/keepalived.conf(主节点):

vrrp_script chk_nginx {script "/usr/bin/pgrep nginx"  # 检查 Nginx 进程interval 2weight 2
}vrrp_instance VI_1 {state MASTER           # 主节点interface eth0         # 网卡virtual_router_id 51   # VRRP 组 ID(必须相同)priority 100           # 主节点优先级(备节点设为 50)advert_int 1authentication {auth_type PASSauth_pass 1234     # 主备节点密码一致}virtual_ipaddress {192.168.1.100/24   # VIP}track_script {chk_nginx        # 关联健康检查}
}

备节点 只需修改 state BACKUPpriority 50

④ 启动服务
sudo systemctl start nginx
sudo systemctl start keepalived
sudo systemctl enable nginx keepalived

(3)故障切换测试

  • 手动停止主节点 Nginx
    sudo systemctl stop nginx
    
  • 观察 VIP 是否漂移到备节点
    ip addr show eth0
    

2. 基于 Keepalived 的双活模式(多 VIP)

(1)架构

客户端 → DNS 轮询├── Nginx 节点 1(VIP1)└── Nginx 节点 2(VIP2)
  • 两个 VIP:每个 Nginx 节点绑定一个 VIP,DNS 轮询分发流量。
  • 无单点故障:两个节点同时工作,故障时 DNS 自动切换。

(2)配置方式

  • 节点 1(VIP1: 192.168.1.100):
    vrrp_instance VI_1 {state MASTERvirtual_router_id 51priority 100virtual_ipaddress {192.168.1.100/24}
    }
    
  • 节点 2(VIP2: 192.168.1.101):
    vrrp_instance VI_2 {state MASTERvirtual_router_id 52priority 100virtual_ipaddress {192.168.1.101/24}
    }
    
  • DNS 配置
    example.com → 192.168.1.100
    example.com → 192.168.1.101
    

(3)优缺点

  • 优点:无 VIP 争抢,适合高并发场景。
  • 缺点:DNS TTL 影响切换速度。

3. 基于云厂商 LB + Nginx(AWS ALB/NLB)

(1)架构

客户端 → AWS ALB/NLB├── Nginx 节点 1└── Nginx 节点 2
  • 云负载均衡器(如 AWS ALB) 作为入口,分发流量到多个 Nginx 实例。
  • Nginx 负责反向代理、缓存等高级功能。

(2)部署示例(AWS)

  1. 创建 Target Group,注册 Nginx 实例。
  2. 配置 ALB/NLB 监听 80/443,指向 Target Group。
  3. 每个 Nginx 节点独立运行相同配置。

(3)优缺点

  • 优点:云厂商 LB 自带高可用,无需维护 VIP。
  • 缺点:成本较高,依赖云服务。

4. 最佳实践总结

方案适用场景优点缺点
Keepalived + VIP(主备)传统服务器简单可靠备节点闲置
Keepalived 双活(多 VIP)高并发需求无单点故障DNS 依赖
云 LB + NginxAWS/Azure/GCP免维护 LB成本高

推荐选择

  • 大多数场景Keepalived + VIP(简单高效)。
  • 云环境:直接使用 云厂商 LB
  • 超高可用需求双活 + DNS 轮询

5. 监控与维护

  • Nginx 健康检查
    curl -I http://localhost
    
  • Keepalived 日志
    tail -f /var/log/syslog | grep Keepalived
    
  • Prometheus + Grafana:使用 nginx-exporter 监控 Nginx 状态。

通过以上方案,可以确保 Nginx 在故障时自动切换,保障业务连续性。

相关文章:

  • “详规一张图”——上海土地利用数据
  • Dify-6: 部署
  • PostgreSQL 的扩展pg_walinspect
  • copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统
  • C# vs2022 找不到指定的 SDK“Microsof.NET.Sdk
  • 第一部分 -- ①语法分析的概要
  • Flask RESTful 示例
  • 使用obsutil工具在OBS上完成基本的数据存取【玩转华为云】
  • 【WiFi帧结构】
  • github.com 链接127.0.0.1
  • 弯曲问题的几个注解
  • 参数量计算举例
  • 大数据学习(136)-数据埋点
  • Chapter03-Authentication vulnerabilities
  • 期末考试复习总结-第一章《HarmonyOS介绍》
  • 【PX4飞控】右手坐标系与右手系旋转正方向的定义与判断方法
  • SQL SERVER 数据库迁移的三种方法!
  • Text GRAD使用场景的案例分析
  • 光影魔术手 4.7.1 | 经典照片美化软件
  • 【大模型01---Flash Attention】
  • 咸阳网站建设/seo整站优化外包公司
  • 老年人做网站/百度站长电脑版
  • 做java一个网站/最新社会舆情信息
  • 用imac怎么样做网站/哪里有营销策划培训班
  • 成都网站设计培训/营业推广经典案例
  • 网站做计算功能/如何查询网站收录情况