Linux LAMP负载均衡实现
小樊
41
2025-11-30 06:45:43
Linux LAMP负载均衡实现
一 架构与组件
- 负载均衡器:优先选用Nginx或HAProxy;大规模四层场景可用LVS;极简方案可用DNS轮询(功能有限)。
- Web层:多台Apache/PHP服务器,建议统一使用PHP-FPM并通过反向代理转发请求。
- 数据层:MySQL主从复制(写主读从)或集群,避免单点。
- 文件与静态资源:用NFS或对象存储共享/分发静态文件,保证多台Web内容一致。
- 高可用:负载均衡器可结合Keepalived实现VIP与故障转移;监控建议用Prometheus + Grafana。
二 方案一 Nginx作为负载均衡器
- 安装与启用
- Debian/Ubuntu:sudo apt-get install nginx
- CentOS/RHEL:sudo yum install nginx && sudo systemctl enable --now nginx
- 核心配置示例(/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;
}
server {
listen 80;
server_name example.com;
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;
}
}
}
- 检查与生效:sudo nginx -t && sudo systemctl reload nginx。
三 方案二 HAProxy作为负载均衡器
- 安装与启用
- Debian/Ubuntu:sudo apt-get install haproxy
- CentOS/RHEL:sudo yum install haproxy && sudo systemctl enable --now 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
option httpchk GET /health
server web1 192.168.1.101:80 check
server web2 192.168.1.102:80 check
- 检查与生效:sudo haproxy -c -f /etc/haproxy/haproxy.cfg && sudo systemctl reload haproxy。
四 后端Web与数据库配置要点
- Web层(Apache + PHP-FPM)
- 建议以PHP-FPM方式运行PHP,Apache使用proxy_fcgi转发;示例VirtualHost片段:
- <VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<FilesMatch .php$>
SetHandler “proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/var/www/html”
- 多台Web内容一致:使用NFS共享DocumentRoot或在CI/CD中统一发布。
- 数据库层(MySQL)
- 采用主从复制:主库开启二进制日志(log-bin),从库执行CHANGE MASTER TO …; START SLAVE; 实现读写分离(写主库、读从库)。
五 健康检查 会话保持 高可用与监控
- 健康检查
- Nginx:在upstream中使用server … max_fails=3 fail_timeout=30s; 或结合主动健康检查。
- HAProxy:使用option httpchk GET /health,并配置check参数对后端做HTTP/应用层健康检查。
- 会话保持
- 无状态应用优先;有状态场景可选IP Hash(Nginx)或cookie 会话保持(HAProxy)。
- 高可用与VIP
- 两台负载均衡器部署Keepalived,配置VRRP与VIP,实现故障自动切换;大规模四层可用LVS + Keepalived。
- 监控与告警
- 采集Nginx/HAProxy访问与错误日志、后端连接数/响应时延等指标,使用Prometheus + Grafana可视化并设置阈值告警。