温馨提示×

Linux LAMP集群搭建方案

小樊
39
2025-11-30 06:44:49
栏目: 智能运维

架构总览与组件选型

  • 目标:构建可横向扩展、具备故障自动切换能力的 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 集群,覆盖负载均衡、Web 高可用、数据库高可用与共享存储等关键能力。
  • 推荐拓扑(示例网段:192.168.12.0/24):
    • 负载均衡层:2× HAProxy/Keepalived(主备),对外提供 VIP 192.168.12.21,可选第二 VIP 192.168.12.22 做业务隔离或蓝绿发布。
    • Web 层:2× Apache + PHP-FPM,无状态,静态资源与上传目录通过 NFS 或对象存储共享。
    • 数据库层:1 主 2 从 MariaDB/MySQL,启用主从复制;故障切换可用 MHAOrchestrator;跨机房可加延迟从库与备份从库。
    • 存储层:NFS 共享网站根目录与上传目录,或使用 GlusterFS/CephFS 提升弹性与冗余;数据库数据目录建议本地盘或 DRBD 块复制。
    • 监控告警:Prometheus + Grafana + Node Exporter/HAProxy Exporter,异常联动 Alertmanager 或企业微信/钉钉。

部署步骤

  • 基础环境
    • 系统建议:CentOS 7/8/StreamUbuntu 20.04/22.04;统一 NTP 时间;内核参数与文件句柄按需优化;安全基线(最小权限、禁用不必要端口与服务)。
  • 负载均衡层
    • 安装并配置 HAProxy(HTTP/HTTPS 转发、健康检查、会话保持如 sourcecookie);用 Keepalived 提供 VIP 与主备切换;对外域名解析指向 VIP。
  • Web 层
    • 安装 Apache httpdPHP-FPM,启用必要扩展(如 php-mysql、php-gd、php-mbstring、php-xml);以 ProxyPassMatchfcgi 方式对接 PHP-FPM;静态资源与上传目录通过 NFS 挂载(示例:/var/www 与 /var/www/uploads)。
  • 数据库层
    • 安装 MariaDB/MySQL;初始化安全配置(设置 root 密码、限制远程 root、删除匿名用户);部署 主从复制(GTID 或位点法);按业务选择 半同步复制 提升一致性;定期备份(物理/逻辑)与回放演练。
  • 共享存储与会话
    • 搭建 NFS(服务端导出目录,客户端以 soft,intr 挂载,挂载选项含 rw,sync);会话使用 Redis/Memcached 集中存储,避免单点依赖 NFS 上的 session 文件。

高可用与故障切换设计

  • 负载均衡高可用
    • Keepalived + VIP:主节点异常时 VRRP 优先级切换,VIP 漂移到备节点;健康检查脚本联动降低误切换风险;可配置双 VIP 做灰度与维护窗口。
  • Web 层高可用
    • 多台 Apache + PHP-FPM 无状态部署,配合 HAProxy 健康检查自动摘除异常实例;静态资源与上传目录由 NFS 或对象存储统一供给,避免单点。
  • 数据库高可用
    • 方案一:MHA(Manager + Node)实现主从切换、VIP 漂移与应用透明重连;方案二:Orchestrator 做可视化与自动故障转移;方案三:对写入敏感业务引入 Pacemaker + Corosync 管理 VIP + MySQL 服务 的集群资源(复杂度更高)。
  • 数据与存储高可用
    • 共享目录:NFS 单点风险可通过 DRBD + Pacemaker 或迁移至 GlusterFS/CephFS 分布式文件系统;数据库数据目录优先本地 RAID10DRBD 块复制,避免共享块存储抖动。

关键配置示例

  • Keepalived(主备,VIP 漂移)
    • 主节点 /etc/keepalived/keepalived.conf 片段:
      vrrp_instance VI_1 {
          state MASTER
          interface eth0
          virtual_router_id 51
          priority 100
          advert_int 1
          authentication { auth_type PASS; auth_pass ab007 }
          virtual_ipaddress { 192.168.12.21/24 }
      }
      
    • 备节点 priority 设为 99,其余一致;HAProxy 监听 192.168.12.21:80/443
  • HAProxy(HTTP 转发与健康检查)
    • /etc/haproxy/haproxy.cfg 片段:
      frontend http-in
        bind 192.168.12.21:80
        default_backend lamp_servers
      
      backend lamp_servers
        balance roundrobin
        option httpchk GET /health.php
        server web1 192.168.12.101:80 check inter 2s fall 3 rise 2
        server web2 192.168.12.102:80 check inter 2s fall 3 rise 2
      
  • NFS 共享(Web 静态与上传)
    • 服务端 /etc/exports:
      /var/www 192.168.12.0/24(rw,sync,no_root_squash)
      /var/www/uploads 192.168.12.0/24(rw,sync,no_root_squash)
      
    • 客户端 fstab:
      192.168.12.10:/var/www       /var/www        nfs defaults,soft,intr 0 0
      192.168.12.10:/var/www/uploads /var/www/uploads nfs defaults,soft,intr 0 0
      
  • PHP-FPM 与 Apache 对接(示例)
    • /etc/httpd/conf.d/php-fpm.conf:
      ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/$1
      DirectoryIndex /index.php index.html
      
    • 建议开启 pm.max_children / pm.start_servers 等参数匹配并发;静态资源由 Apache 直接服务。

监控运维与容量规划

  • 监控告警
    • Node Exporter 采集主机指标,HAProxy Exporter 采集后端健康与队列,mysqld_exporter 采集数据库;Prometheus + Grafana 可视化;Alertmanager 对接企业微信/钉钉/短信;关键告警含:VIP 漂移、后端实例宕机、复制延迟、磁盘/IO/延迟异常。
  • 备份与恢复
    • 数据库:每日全量(物理/逻辑)+ 实时/近实时 binlog;定期恢复演练与校验;保留 7–30 天 可回滚窗口;跨地域备份可选对象存储。
  • 容量与扩展
    • 横向扩展 Web 节点(无状态);读写分离(从库承担报表/搜索);热点数据缓存(Redis/Memcached);静态资源上 CDN;数据库瓶颈时引入 分库分表/中间件;会话集中化避免 NFS 依赖。
  • 安全加固
    • 最小权限与 SELinux/AppArmor;数据库最小暴露面(仅内网)、TLS 加密(HAProxy/证书);Web 目录最小权限与防直链;定期漏洞扫描与依赖升级(PHP/Apache/MySQL)。

0