Linux LAMP下如何实现负载均衡
导读:Linux LAMP 负载均衡实现指南 一、方案总览与选型 常见负载均衡器 软件:Nginx、HAProxy、Apache(mod_proxy_balancer)、LVS(IPVS) 硬件:F5、Citrix NetScaler 典...
Linux LAMP 负载均衡实现指南
一、方案总览与选型
- 常见负载均衡器
- 软件:Nginx、HAProxy、Apache(mod_proxy_balancer)、LVS(IPVS)
- 硬件:F5、Citrix NetScaler
- 典型架构
- 客户端 → 负载均衡器(VIP) → 多台 Apache/PHP 后端(可横向扩展)
- 数据库层使用 MySQL 主从/集群 与 Web 层解耦,避免单点
- 适用场景
- Nginx/HAProxy:应用层(第7层)灵活路由、健康检查、权重/会话保持
- LVS+Keepalived:传输层(第4层)高性能、配合 DR 模式实现高吞吐与高可用
二、方案一 Nginx 或 HAProxy 反向代理
- 部署步骤
- 安装组件(以 CentOS/RHEL 为例)
- Nginx:
sudo yum install -y epel-release & & sudo yum install -y nginx - HAProxy:
sudo yum install -y haproxy
- Nginx:
- 配置负载均衡器
- Nginx 示例(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/lb.conf)
http { upstream backend { server 192.168.1.101:80; server 192.168.1.102:80; # 可按需添加权重、备份等:server 192.168.1.103:80 weight=2 backup; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } - HAProxy 示例(/etc/haproxy/haproxy.cfg)
global log /dev/log local0 log /dev/log local1 notice daemon defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http_front bind *:80 default_backend http_back backend http_back balance roundrobin server s1 192.168.1.101:80 check server s2 192.168.1.102:80 check
- Nginx 示例(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/lb.conf)
- 启动与热重载
- Nginx:
sudo systemctl enable --now nginx & & sudo nginx -t & & sudo systemctl reload nginx - HAProxy:
sudo systemctl enable --now haproxy & & sudo haproxy -c -f /etc/haproxy/haproxy.cfg & & sudo systemctl reload haproxy
- Nginx:
- 后端 Apache 示例(/etc/httpd/conf.d/vhost.conf)
< VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html < Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted < /Directory> < /VirtualHost> - 测试与验证
- 访问负载均衡器 VIP/DNS,观察多台后端是否按策略分发
- 查看 access/error 日志与负载均衡器统计页(HAProxy 可启用 stats)
- 安装组件(以 CentOS/RHEL 为例)
三、方案二 LVS IP 负载均衡 + Keepalived 高可用
- 适用场景:极高并发、对吞吐敏感,且后端为 HTTP/HTTPS/TCP 服务
- 核心要点
- LVS 工作于第 4 层,支持 NAT/DR/TUN 三种转发模式;DR(Direct Routing) 性能最佳,常用于生产
- Keepalived 提供 VIP 漂移 与 RS 健康检查,消除单点
- 快速步骤
- 在 Director 上安装并启用 ipvsadm、keepalived
- 配置 Keepalived(示例为 DR 模式思路)
- 定义 VIP 与 real_server 列表,设置调度算法(如 rr/wrr)
- 启用 vrrp_instance 与 virtual_server 段,配置 HTTP_GET/SSL_GET 健康检查
- 在 Real Servers 上
- 绑定 VIP 到 lo:0(ARP 抑制),开启 ARP 忽略/限制
- 保证回程不经过 Director(DR 要求),服务端口与 VIP 一致
- 验证
ipvsadm -Ln查看调度表与后端状态- 停掉某台 RS,确认 VIP 与连接自动切换,无中断或少量丢包
四、共享内容与数据库层设计
- 静态资源与代码同步
- 使用 NFS 共享 /var/www/html,多台 Web 统一挂载,避免内容不一致
- 示例:NFS Server 导出目录,Web 节点
/etc/fstab挂载到 /var/www/html
- 会话保持
- 应用无状态优先;有状态可用 IP Hash(Nginx)、Cookie 插入/会话亲和(HAProxy)等
- 数据库高可用
- MySQL 主从复制 或 InnoDB Cluster/MGR,读写分离与故障切换
- 应用连接 写库 VIP/读写分离中间件,避免写操作被负载均衡到从库
五、健康检查、监控与优化
- 健康检查
- HAProxy:
option httpchk或http-check expect;后端配置check - Nginx:被动失败重试与超时、主动健康检查模块(商业版或 nginx-plus)
- LVS+Keepalived:
HTTP_GET/SSL_GET与脚本探针,自动摘除异常 RS
- HAProxy:
- 监控与告警
- 采集 连接数、5xx 比例、响应时延、后端健康 等指标,设置阈值告警
- 结合 日志分析 与 业务埋点 定位瓶颈
- 性能与安全优化
- 启用 压缩、缓存(如 CDN/反向代理缓存)、连接复用;限制单 IP 并发与速率
- 证书与协议:优先 TLS 1.2+,合理配置 HSTS、OCSP Stapling
- 架构优化:引入 Redis/Memcached 缓存热点数据,减轻数据库压力
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux LAMP下如何实现负载均衡
本文地址: https://pptw.com/jishu/775040.html
