温馨提示×

LNMP环境下如何做负载均衡

小樊
38
2025-10-15 21:28:58
栏目: 云计算

LNMP环境下实现负载均衡的完整步骤

1. 配置Nginx作为负载均衡器

Nginx是LNMP架构中最常用的软件负载均衡器,通过upstream模块定义后端服务器组,将请求分发到多个服务器。

  • 定义后端服务器组:在Nginx配置文件(如/etc/nginx/nginx.conf/etc/nginx/conf.d/lb.conf)中添加upstream块,列出后端PHP服务器的IP或域名(如192.168.1.101:9000192.168.1.102:9000)。
  • 选择负载均衡算法:Nginx支持多种算法,默认是轮询(Round Robin)(均匀分发请求);若需根据服务器性能分配权重,可使用加权轮询server 192.168.1.101:9000 weight=3;);若需同一客户端IP固定访问同一服务器(如会话保持),可使用IP哈希ip_hash;);若需将请求分发给当前连接数最少的服务器,可使用最少连接least_conn;)。
  • 配置代理转发:在server块中添加location指令,将请求转发到upstream组,并设置必要的请求头(如HostX-Real-IP),确保后端服务器获取真实客户端信息。
  • 测试与重启:使用nginx -t检查配置语法,无误后用systemctl restart nginx重启Nginx使配置生效。

2. 配置PHP-FPM处理并发请求

PHP-FPM是PHP的进程管理器,需调整其参数以应对负载均衡带来的并发请求。

  • 修改进程池配置:编辑PHP-FPM配置文件(如/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:空闲进程的最大数量(避免占用过多内存)。
  • 重启PHP-FPM:修改后执行systemctl restart php-fpm使配置生效。

3. 配置MySQL主从复制(可选,提升数据库性能)

若应用存在大量数据库读操作,可通过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_RunningSlave_SQL_Running是否为Yes(表示复制正常)。

4. 实现高可用性(可选,避免单点故障)

为防止负载均衡器(Nginx)本身故障,可使用Keepalived实现虚拟IP(VIP)漂移,确保服务连续性。

  • 安装Keepalived:在Nginx负载均衡器上执行apt install keepalived(Ubuntu)或yum install keepalived(CentOS)。
  • 配置Keepalived:编辑/etc/keepalived/keepalived.conf文件,定义虚拟IP(如192.168.1.100)和故障转移策略(如主备服务器的priority值,主服务器设为101,备服务器设为100)。
  • 启动Keepalived:执行systemctl start keepalived并设置开机自启(systemctl enable keepalived)。
  • 验证故障转移:停止主服务器的Keepalived服务,观察备服务器是否自动接管虚拟IP(可通过ping 192.168.1.100验证)。

5. 测试与监控

  • 测试负载均衡:通过浏览器或curl命令访问虚拟IP或域名,多次刷新页面,检查请求是否被分发到不同后端服务器(可通过后端服务器的日志确认)。
  • 监控性能:使用监控工具(如Prometheus+Grafana)监控Nginx、PHP-FPM、MySQL的性能指标(如请求量、响应时间、CPU/内存使用率),及时发现瓶颈并优化配置。

通过以上步骤,可实现LNMP环境下的负载均衡,提升应用的处理能力和可靠性。实际部署中,可根据业务需求调整配置(如增加后端服务器数量、优化算法、添加缓存层等)。

0