首页主机资讯Linux LNMP如何实现高可用架构

Linux LNMP如何实现高可用架构

时间2025-12-08 11:00:04发布访客分类主机资讯浏览283
导读:架构总览与分层设计 入口层:使用Nginx/HAProxy做反向代理与负载均衡,对外暴露VIP或域名;在入口前可叠加LVS+Keepalived实现四层高可用与跨节点漂移。 Web层:多台 Nginx + PHP-FPM 实例组成集群,横...

架构总览与分层设计

  • 入口层:使用Nginx/HAProxy做反向代理与负载均衡,对外暴露VIP或域名;在入口前可叠加LVS+Keepalived实现四层高可用与跨节点漂移。
  • Web层:多台 Nginx + PHP-FPM 实例组成集群,横向扩展,统一由上游负载均衡分发。
  • 数据层:MySQL 采用主从复制实现读写分离与故障切换;对一致性要求更高可考虑 Group Replication/Galera Cluster;自动故障转移可用 MHA/Orchestrator
  • 文件层:用户上传与静态资源使用 GlusterFS/Ceph 等共享存储或对象存储;静态资源接入 CDN 降低源站压力。
  • 监控与告警:部署 Prometheus + Grafana,辅以 Zabbix/Nagios;日志集中与可视化用于快速排障。
  • 自动化与备份:用 Ansible 做配置与发布;定期全量与增量备份,确保可快速恢复。

入口与负载均衡高可用

  • Nginx 作为七层负载均衡示例:定义 upstream 池、设置策略与健康检查、开启连接复用,并在异常时自动故障转移。
  • 关键要点:
    • 负载均衡策略可选:轮询、加权轮询、最少连接、IP 哈希 等。
    • 故障转移与健康检查:使用 max_fails/fail_timeout、主动探测与“切换/恢复”阈值;必要时采用 backup 节点。
    • 连接复用:配置 keepalive 减少握手开销。
    • 重试策略:开启 proxy_next_upstream 控制失败重试与超时。
  • 示例配置片段:
    • Nginx 负载均衡与故障转移
      http {
      
        upstream backend {
          
          server 10.0.1.11:80 max_fails=3 fail_timeout=30s;
          
          server 10.0.1.12:80 max_fails=3 fail_timeout=30s;
          
          server 10.0.1.13:80 backup;
          
          keepalive 32;
      
        }
      
      
        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;
          
      
            proxy_next_upstream on;
          
            proxy_next_upstream_tries 3;
          
            proxy_next_upstream_timeout 5s;
      
          }
      
        }
      
      }
          
      
    • 如需四层与更稳的 VIP 漂移,可在前端部署 LVS+Keepalived;或在两台入口 Nginx 上用 Keepalived 提供 VRRP VIP,主备自动切换。

数据库高可用与读写分离

  • 主从复制(入门与通用):
    • 主库开启 server-idlog_bin,创建复制账号并授予 REPLICATION SLAVE;从库设置 server-id/relay_log,通过 CHANGE MASTER TO …; START SLAVE; 建立复制;用 SHOW SLAVE STATUS\G 检查同步状态。
  • 读写分离与中间件:应用侧或中间件(如 MyCAT)将写发往主库、读发往从库,提升吞吐与可用性。
  • 更高可用与自动故障转移:对一致性与可用性要求更高时,采用 MySQL Group Replication/Galera Cluster;自动切换可用 MHA/Orchestrator
  • 示例要点(主从):
    • 主库配置
      [mysqld]
      server-id=1
      log-bin=mysql-bin
      binlog_format=ROW
      
    • 从库配置与建立复制
      [mysqld]
      server-id=2
      relay-log=mysql-relay-bin
      
      CHANGE MASTER TO
        MASTER_HOST='master_ip',
        MASTER_USER='repl',
        MASTER_PASSWORD='pwd',
        MASTER_LOG_FILE='mysql-bin.000001',
        MASTER_LOG_POS=154;
          
      START SLAVE;
      
      
    • 读写分离可结合中间件或应用路由策略落地。

Web 层与共享存储

  • PHP-FPM 多实例与横向扩展:
    • 多台 Web 节点各自运行 PHP-FPM,Nginx 通过 unix socket 或 TCP 转发 .php 请求;按并发调优 pm.max_children/start_servers/min_spare_servers/max_spare_servers
    • 示例(Nginx + PHP-FPM,Unix Socket):
      location ~ \.php$ {
          
        include fastcgi_params;
          
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
      
      }
          
      
  • 会话与一致性:无状态优先;如需会话保持可用 IP 哈希 或外置 Redis 集中会话。
  • 文件与静态资源:
    • 用户上传目录与静态资源使用 GlusterFS/Ceph 等共享存储,避免单点;
    • 静态资源接入 CDN,源站开启 HTTPS 与缓存策略。

监控、自动化与演练

  • 监控与告警:
    • 系统与应用指标用 Prometheus 采集、Grafana 可视化;可用性、延迟、错误率与复制延迟设阈值告警;
    • 也可用 Zabbix/Nagios 做主机与服务级监控。
  • 自动化与配置管理:
    • Ansible 批量部署 Nginx/PHP-FPM/MySQL、推送配置与证书,降低人为失误;
  • 备份与恢复:
    • 定期全量/增量备份(如 mysqldump 或物理备份),定期校验与演练恢复流程;
  • 安全与测试:
    • 全链路 TLS、最小权限、防火墙与 WAF;
    • 定期故障演练(停库、断网、宕机、节点剔除)验证切换时效与数据一致性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux LNMP如何实现高可用架构
本文地址: https://pptw.com/jishu/765730.html
env命令在Shell中怎么运行 Linux下env命令如何执行

游客 回复需填写必要信息