NGINX 集群负载与配置管理
NGINX 集群负载与配置管理
多层负载均衡架构
在企业级应用中,负载均衡架构通常采用多层设计,形成完整的流量分发体系:
- 
DNS解析:第一道流量分配 - 通过DNS服务器返回不同IP地址,实现地理区域或机房级别的负载均衡
- 优点:实现简单,成本低
- 缺点:无法感知后端服务状态,TTL缓存影响故障转移速度
 
- 
CDN加速:边缘节点缓存 - 静态资源缓存(JS/CSS/图片)
- 动态内容加速(BGP Anycast路由优化)
- DDoS防护、访问控制
 
- 
LVS:四层负载均衡 - 工作在传输层(TCP/UDP),基于IP负载均衡技术
- 低延迟、高吞吐量,适合处理大量并发请求
 
- 
Nginx:七层负载与反向代理 - 工作在应用层(HTTP/HTTPS),基于内容请求分发
- 支持更复杂的负载均衡算法和内容处理
 
- 
Apisix:云原生API网关 - 提供强大的路由管理、认证、限流等功能
- 适合微服务架构和云原生环境
 
典型场景:小规模应用可直接使用Nginx七层代理;高并发场景需要CDN+LVS+Nginx分层处理;云原生微服务架构建议加上Apisix等安全网关。
LVS简介
LVS (Linux Virtual Server) 是由章文嵩博士于1998年5月发起的开源项目,是中国早期具有代表性的自由软件项目之一。
核心特点:
- 采用三层架构:前端负载调度器、中间服务器池、底层共享存储
- 三种IP负载均衡技术:
- VS/NAT:基于网络地址转换,服务器需通过调度器进行通信
- VS/TUN:采用IP隧道技术,服务器可直接响应客户端
- VS/DR:通过直接路由机制,在数据链路层转发请求
 
三种技术比较:
| 特性 | VS/NAT | VS/TUN | VS/DR | 
|---|---|---|---|
| 服务器类型 | 任意 | 隧道 | 非ARP设备 | 
| 服务器网络 | 私有LAN/WAN | LAN | LAN | 
| 服务器数量 | 低(10~20) | 高(100+) | 高(100+) | 
| 服务器网关 | 调度器 | 自有路由器 | 自有路由器 | 
LVS是Linux内核的一部分,广泛应用于Web、邮件等高并发场景,形成覆盖千级节点的集群框架。
Keepalived简介
Keepalived是一个用于实现高可用的软件,主要功能包括:
- RealServer健康状态检查:监控后端服务器的健康状况
- LoadBalance主机与Backup主机之间failover:实现主从或主主模式的高可用
- 虚拟IP(VIP)管理:通过VRRP协议实现IP地址的自动转移
Keepalived在LVS集群中扮演关键角色,确保在主节点故障时,备节点能够接管服务,保证系统的高可用性。
Keepalived工作原理:
- 通过VRRP协议形成虚拟路由器
- 主节点(MASTER)负责处理流量
- 备节点(BACKUP)监控主节点状态
- 当主节点故障时,备节点接管虚拟IP,继续提供服务
NGINX集群负载搭建
基础环境准备
- 
关闭防火墙和SELinux(实验环境简化,生产环境需配置端口放行) # CentOS systemctl stop firewalld && systemctl disable firewalld setenforce 0 # 永久关闭需编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled
- 
测试网络互通:确保负载均衡器能与后端服务器通信 ping 192.168.1.11 -c 3 ping 192.168.1.12 -c 3
后端Web服务器部署
- 
安装Nginx(在所有后端服务器上执行) # CentOS yum install epel-release -y yum install nginx -y# Ubuntu apt update apt install nginx -y
- 
配置差异化测试页面(区分后端服务器) # 后端1 (192.168.1.11) echo "<h1>Backend Server 1 (192.168.1.11)</h1>" > /usr/share/nginx/html/index.html# 后端2 (192.168.1.12) echo "<h1>Backend Server 2 (192.168.1.12)</h1>" > /usr/share/nginx/html/index.html
- 
启动并验证服务 systemctl start nginx && systemctl enable nginx curl localhost # 本地验证 curl 192.168.1.11 # 跨机验证
负载均衡器配置(LVS+Keepalived+Nginx)
- 
安装LVS和Keepalived yum install -y ipvsadm keepalived
- 
配置Keepalived(主节点和备节点配置不同) 主节点配置(/etc/keepalived/keepalived.conf): vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100} }virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.1.101 80 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.1.102 80 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}} }备节点配置:将 state改为BACKUP,priority改为90
- 
启动Keepalived systemctl start keepalived systemctl enable keepalived
- 
配置Nginx后端服务器ARP抑制(在后端服务器上执行): echo "net.ipv4.conf.all.arp_ignore = 1" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.conf.all.arp_announce = 2" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
验证配置
- 
访问虚拟IP: http://192.168.1.100- 应能轮询显示后端服务器的测试页面
 
- 
故障转移验证: - 关闭LVS主节点的Keepalived,查看备节点是否接管虚拟IP
- 访问虚拟IP,确认服务是否正常
 
负载均衡算法
Nginx支持多种负载均衡算法:
- 轮询(Round Robin):默认算法,按服务器顺序依次分发请求
- 加权轮询(Weighted Round Robin):根据服务器性能分配不同权重
- IP哈希(IP Hash):根据客户端IP地址进行哈希计算,确保同一客户端请求始终发送到同一服务器
- 最少连接(Least Connections):将请求分发到当前连接数最少的服务器
配置示例:
upstream backend_servers {server 192.168.1.101:80 weight=3;server 192.168.1.102:80 weight=1;least_conn;
}
总结
NGINX集群负载与配置管理是构建高性能、高可用系统的关键。通过LVS+Keepalived+Nginx的组合,可以实现:
- 四层负载均衡(LVS):高效处理大量并发请求
- 七层负载均衡(Nginx):基于内容的智能请求分发
- 高可用性(Keepalived):确保服务持续可用
这种多层负载均衡架构能有效应对高并发场景,提高系统的吞吐量、伸缩性和可靠性,是企业级应用的首选架构方案。

