linux

LNMP集群部署方案大揭秘!

小樊
46
2025-08-27 06:59:27
栏目: 编程语言

LNMP集群部署方案核心要点

一、基础环境准备

  1. 系统要求

    • 选择Linux发行版(如CentOS 7/8、Ubuntu 20.04+),关闭防火墙(systemctl stop firewalld)和SELinux(setenforce 0)。
    • 确保节点间网络互通,建议使用内网IP通信。
  2. 软件版本选择

    • Nginx:推荐1.20+版本,支持高并发和动态模块加载。
    • MySQL:优先选择8.0+版本,支持分布式事务和读写分离。
    • PHP:选择7.4+版本,需安装php-fpm扩展以支持Nginx。

二、核心组件部署

  1. Nginx集群(负载均衡层)

    • 安装:通过源码编译或包管理器安装,配置多实例监听不同端口或IP。
    • 负载均衡策略
      • 轮询(默认)upstream backend { server 192.168.1.1:80; server 192.168.1.2:80; }
      • IP哈希ip_hash;(保证同一IP请求固定到同一后端)。
      • 最少连接least_conn;(动态分配请求到低负载服务器)。
    • 高可用:搭配Keepalived实现主备切换,通过VRRP协议共享虚拟IP。
  2. MySQL集群(数据存储层)

    • 主从复制
      • 主库配置:server-id=1; log-bin=mysql-bin;
      • 从库配置:server-id=2; relay-log=mysql-relay-bin; read_only=1;
      • 同步用户授权:CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl';
    • 高可用方案
      • MHA(Master High Availability):自动监控主库故障并切换至从库。
      • MySQL Cluster:支持多主复制和分布式事务,适合高并发场景。
  3. PHP集群(应用层)

    • PHP-FPM部署:通过yum install php-fpm安装,配置多进程池(pm.max_children=10)和动态启停。
    • 会话共享:使用Redis或Memcached存储PHP会话,避免单点故障。

三、高可用与优化策略

  1. 故障转移与容灾

    • Nginx+Keepalived:通过虚拟IP(VIP)实现Nginx主备切换,故障时自动漂移。
    • MySQL主从自动切换:结合MHA工具,检测主库故障后5秒内完成切换。
  2. 性能优化

    • 静态资源分离:Nginx直接处理图片、CSS等静态文件,动态请求转发至PHP。
    • 缓存策略:引入Redis缓存热点数据,减少数据库压力。
    • 连接池优化:调整PHP-FPM的pm.max_childrenpm.start_servers参数,避免进程频繁创建。
  3. 监控与运维

    • 监控工具:Prometheus+Grafana监控服务器状态、Nginx流量、MySQL慢查询。
    • 日志管理:集中收集Nginx访问日志、PHP错误日志,通过ELK(Elasticsearch+Logstash+Kibana)分析。

四、部署架构示例(K8s环境)

  1. Nginx部署:通过Deployment创建3个副本,搭配Service的LoadBalancer类型暴露服务。
  2. MySQL部署:使用StatefulSet部署主从集群,通过Headless Service管理Pod IP。
  3. PHP部署:以Deployment运行PHP-FPM,挂载共享存储(如NFS)存放代码。

五、注意事项

参考来源

0
看了该问题的人还看了