如何在Debian上实现LNMP的负载均衡
导读:在 Debian 上用 Nginx 做 LNMP 负载均衡 一 架构与准备 组件角色 负载均衡器:部署 Nginx,对外提供 80/443,反向代理到后端 Nginx+PHP-FPM 节点。 后端节点:每台运行 Nginx+PHP-FP...
在 Debian 上用 Nginx 做 LNMP 负载均衡
一 架构与准备
- 组件角色
- 负载均衡器:部署 Nginx,对外提供 80/443,反向代理到后端 Nginx+PHP-FPM 节点。
- 后端节点:每台运行 Nginx+PHP-FPM,提供静态资源与动态脚本执行。
- 数据库层:建议部署 MySQL/MariaDB 主从复制 或集群,读写分离由应用或中间件完成。
- 网络与解析
- 负载均衡器与后端互通(开放 80/443 及后端 PHP-FPM 端口/套接字所需访问)。
- 为域名准备 DNS 或 /etc/hosts 解析,便于测试。
- 基础软件
- 负载均衡器与后端均安装 Nginx;后端安装与 PHP 版本匹配的 PHP-FPM(如 php7.4-fpm/php8.2-fpm)。
二 部署步骤
- 安装 Nginx(负载均衡器)
- 执行:
sudo apt update & & sudo apt install nginx
- 执行:
- 配置负载均衡器
- 新建配置:
sudo nano /etc/nginx/conf.d/load_balancer.conf - 示例(轮询,可按需替换为最少连接/权重/IP 哈希等策略):
http { upstream backend { least_conn; server 10.0.0.11:80 max_fails=3 fail_timeout=30s; server 10.0.0.12:80 max_fails=3 fail_timeout=30s; server 10.0.0.13:80 backup; # 备用节点 } server { listen 80; server_name www.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
- 新建配置:
- 部署后端节点(Nginx+PHP-FPM)
- 安装:
sudo apt install nginx php-fpm - PHP-FPM 示例(以 php7.4-fpm 为例):
/etc/php/7.4/fpm/pool.d/www.conflisten = /run/php/php7.4-fpm.socklisten.owner = www-data; listen.group = www-data
- 后端 Nginx 示例(/etc/nginx/sites-available/default 或 conf.d/default.conf)
server { listen 80; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } - 启动:
sudo systemctl enable --now nginx php7.4-fpm
- 安装:
- 数据库层建议
- 部署 MySQL 主从复制(或主主/组复制/InnoDB Cluster),实现数据冗余与读扩展;应用侧或中间件实现读写分离。
三 策略与健康检查要点
- 负载均衡算法
- 轮询(默认)、加权轮询(weight)、最少连接(least_conn)、IP 哈希(ip_hash,会话保持)、URL 哈希(hash $request_uri,提升缓存命中)。
- 健康检查与故障隔离
- 开源版 Nginx 通过
max_fails与fail_timeout实现被动健康检查(如:max_fails=3 fail_timeout=30s)。 - 主动健康检查与更丰富策略可使用 Nginx Plus 或外部探活/摘除机制(如脚本摘除不健康节点)。
- 开源版 Nginx 通过
- 会话保持
- 有状态会话优先用 ip_hash;或应用侧使用 Redis 等集中式 Session 存储。
四 安全与高可用
- 安全加固
- 启用 HTTPS/TLS(Let’s Encrypt/certbot),对外仅开放 443,将 80→443 跳转。
- 限制管理接口与后端管理路径访问;开启 防火墙(UFW/iptables);隐藏版本信息;限制请求方法;为代理头与 FastCGI 参数做最小化配置。
- 高可用
- 部署 双负载均衡器 + Keepalived VIP,实现故障自动漂移;后端应用无状态化,会话存入 Redis 或数据库。
- 数据库层采用 主从复制/集群,结合应用读写分离或中间件(如 ProxySQL/MaxScale)提升可用与读扩展。
五 验证与运维
- 验证
- 配置检查:
sudo nginx -t - 访问测试:
curl -I http://www.example.com;多节点后端可在响应头加入标识(如add_header X-Backend $server_addr;)观察分发情况。 - 后端日志:
/var/log/nginx/access.log、/var/log/php7.4-fpm.log(或对应版本)。
- 配置检查:
- 监控与优化
- 监控:Prometheus + Grafana 采集 Nginx(stub_status)、PHP-FPM(status)、系统资源;设置告警。
- 优化:按并发调整 worker_processes/worker_connections,开启 Gzip/Brotli,静态资源走 CDN,后端连接复用与超时调优。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Debian上实现LNMP的负载均衡
本文地址: https://pptw.com/jishu/762422.html
