Nginx是LNMP架构中最常用的软件负载均衡器,通过upstream模块定义后端服务器组,将请求分发到多个服务器。
/etc/nginx/nginx.conf或/etc/nginx/conf.d/lb.conf)中添加upstream块,列出后端PHP服务器的IP或域名(如192.168.1.101:9000、192.168.1.102:9000)。server 192.168.1.101:9000 weight=3;);若需同一客户端IP固定访问同一服务器(如会话保持),可使用IP哈希(ip_hash;);若需将请求分发给当前连接数最少的服务器,可使用最少连接(least_conn;)。server块中添加location指令,将请求转发到upstream组,并设置必要的请求头(如Host、X-Real-IP),确保后端服务器获取真实客户端信息。nginx -t检查配置语法,无误后用systemctl restart nginx重启Nginx使配置生效。PHP-FPM是PHP的进程管理器,需调整其参数以应对负载均衡带来的并发请求。
/etc/php/7.x/fpm/pool.d/www.conf),调整以下关键参数:
pm = dynamic:采用动态进程管理模式(根据负载自动调整进程数);pm.max_children = 50:最大子进程数(根据服务器内存调整,如每进程占用10MB内存,1GB内存可设为50);pm.start_servers = 10:启动时的子进程数;pm.min_spare_servers = 5:空闲进程的最小数量(避免频繁创建进程);pm.max_spare_servers = 20:空闲进程的最大数量(避免占用过多内存)。systemctl restart php-fpm使配置生效。若应用存在大量数据库读操作,可通过MySQL主从复制将读请求分发到从服务器,减轻主服务器压力。
my.cnf文件,设置server-id=1(唯一标识)、开启二进制日志(log_bin=mysql-bin)、指定需要复制的数据库(binlog_do_db=your_database)。my.cnf文件,设置server-id=2(与主服务器不同)、开启中继日志(relay_log=mysql-relay-bin)、设置read_only=1(禁止写入,仅作为从库)。GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';),并记录主服务器的二进制日志位置(SHOW MASTER STATUS;);在从服务器上执行CHANGE MASTER TO命令指向主服务器,然后启动复制(START SLAVE;)。SHOW SLAVE STATUS\G,检查Slave_IO_Running和Slave_SQL_Running是否为Yes(表示复制正常)。为防止负载均衡器(Nginx)本身故障,可使用Keepalived实现虚拟IP(VIP)漂移,确保服务连续性。
apt install keepalived(Ubuntu)或yum install keepalived(CentOS)。/etc/keepalived/keepalived.conf文件,定义虚拟IP(如192.168.1.100)和故障转移策略(如主备服务器的priority值,主服务器设为101,备服务器设为100)。systemctl start keepalived并设置开机自启(systemctl enable keepalived)。ping 192.168.1.100验证)。curl命令访问虚拟IP或域名,多次刷新页面,检查请求是否被分发到不同后端服务器(可通过后端服务器的日志确认)。通过以上步骤,可实现LNMP环境下的负载均衡,提升应用的处理能力和可靠性。实际部署中,可根据业务需求调整配置(如增加后端服务器数量、优化算法、添加缓存层等)。