温馨提示×

Linux LAMP服务器如何实现负载均衡

小樊
42
2025-12-23 21:52:46
栏目: 云计算

Linux LAMP 负载均衡实现指南

一、总体架构与组件

  • 负载均衡层:优先选用软件负载均衡器,如 NginxHAProxy;超大规模或内核级转发可用 LVS;也可使用 Apache httpd 的 mod_proxy_balancer
  • 应用层:多台 Apache/PHP 服务器,建议以 PHP-FPM 方式运行动态请求,静态资源由负载均衡器或各后端直接服务。
  • 数据层:MySQL 采用主从复制、组复制或 InnoDB 集群,读写分离由中间件或应用侧实现。
  • 共享与会话:多后端共享代码/上传目录可用 NFS;会话保持可用 IP Hash 或外置 Redis/Memcached 集中会话存储。
  • 监控与高可用:对负载均衡器与后端实施 健康检查监控告警,必要时为负载均衡器配置 主备

二、方案选型与对比

方案 适用场景 优点 局限
Nginx 通用 HTTP(S) 反向代理与负载均衡 高性能、配置灵活、生态完善 七层代理,非内核级转发
HAProxy 高并发、细粒度调度与健康检查 负载均衡能力强、支持多种算法与健康检查 需掌握其配置语法
LVS 超大规模、四层转发 内核级转发、性能极高 配置与运维复杂度高,需配合 Keepalived
DNS 轮询 入门级、跨地域简单分发 实现简单、成本低 粒度粗、故障切换慢、不可感知后端健康
Apache mod_proxy_balancer 已有 Apache 栈 与 Apache 集成度高 性能与特性通常不及 Nginx/HAProxy

三、快速落地示例

  • 示例一 Nginx 作为七层负载均衡器(HTTP)

    1. 安装:sudo apt install nginx 或 sudo yum install nginx
    2. 配置 /etc/nginx/conf.d/lb.conf:
      http {
      upstream backend {
      server 192.168.1.101:80;
      server 192.168.1.102:80;
      }
      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;
      }
      }
      }
    3. 生效:sudo systemctl restart nginx
      说明:Nginx 作为反向代理/负载均衡器,将请求分发到后端 Apache/PHP 节点,并通过请求头传递客户端信息。
  • 示例二 HAProxy 作为七层负载均衡器(HTTP)

    1. 安装:sudo apt install haproxy 或 sudo yum install haproxy
    2. 配置 /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 web1 192.168.1.101:80 check
      server web2 192.168.1.102:80 check
    3. 生效:sudo systemctl restart haproxy
      说明:HAProxy 支持轮询、最少连接等策略,并提供 HTTP 健康检查 能力。
  • 示例三 LVS 四层负载均衡(DR 模式,内核转发)

    1. 规划:对外 VIP 192.168.1.230;后端 RS1 192.168.1.201RS2 192.168.1.100
    2. Director 上配置:
      sudo ipvsadm -A -t 192.168.1.230:80 -s rr
      sudo ipvsadm -a -t 192.168.1.230:80 -r 192.168.1.201:80 -g
      sudo ipvsadm -a -t 192.168.1.230:80 -r 192.168.1.100:80 -g
    3. 保存:sudo ipvsadm --save
      说明:LVS 工作于 IP 层/四层,适合极高并发;需配合 Keepalived 实现 VIP 漂移与故障切换。

四、会话保持与共享存储

  • 会话保持
    • 使用 IP Hash(Nginx upstream ip_hash)将同一来源 IP 固定到同一后端,适合简单场景。
    • 将 PHP 会话存入 Redis/Memcached,实现跨后端无状态与会话共享。
  • 共享文件
    • 多台 Web 节点共享代码/上传目录可用 NFS(示例:一台 NFS+MariaDB 服务器导出 /vhosts,两台 Apache+PHP-FPM 挂载同一目录)。
  • 健康检查
    • HAProxy 中配置 option httpchk GET /health 等主动健康检查,自动摘除异常节点。

五、数据库高可用与扩展

  • 数据库层建议部署 MySQL 主从复制集群,实现读多写少场景下的读写分离与故障切换;应用或中间件负责路由读写请求。
  • 为降低数据库压力,引入 Redis/Memcached 做页面/数据缓存,减少直接命中数据库的次数。

六、部署与运维要点

  • 健康检查与自动摘除:为负载均衡器开启 HTTP/应用层健康检查,异常节点自动下线,恢复后自动加回。
  • 监控与告警:对 负载均衡器与后端 的 CPU、连接数、5xx 错误率、响应时延进行监控并设置告警阈值。
  • 自动化与弹性:使用 自动化部署/配置管理 工具批量发布与回滚,结合云平台实现 弹性扩缩容
  • 安全加固:限制管理口访问、开启 TLS/HTTPS、隐藏版本信息、为后端启用 限流/熔断 策略。

0