-
步骤1 准备基础环境(两台以上 Web 节点)
- 安装组件:sudo apt update && sudo apt install -y nginx php-fpm mariadb-server
- PHP-FPM 建议用 Unix Socket:编辑 /etc/php/<版本>/fpm/pool.d/www.conf,设置 listen = /run/php/php<版本>-fpm.sock;Nginx 站点配置中 fastcgi_pass 指向该 socket。
- 基础安全与证书:运行 mysql_secure_installation;如需 HTTPS,使用 certbot --nginx 申请 Let’s Encrypt 证书。
-
步骤2 配置 Nginx 负载均衡(对外或对内入口)
- 在负载均衡器或入口 Nginx 上配置 upstream:
http { upstream backend { server 10.0.1.11:80; server 10.0.1.12: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; } } }
- 后端节点 Nginx 仅处理本地 PHP-FPM,不再对外暴露 80/443(由入口统一承载)。
-
步骤3 部署 Keepalived VIP(实现入口或节点故障漂移)
- 安装:sudo apt install -y keepalived
- 主节点 /etc/keepalived/keepalived.conf 示例:
vrrp_script chk_nginx { script “systemctl is-active --quiet nginx”; interval 2; fall 2; rise 2; }
vrrp_instance VI_WEB { state MASTER; interface eth0; virtual_router_id 51; priority 100; advert_int 1; authentication { auth_type PASS; auth_pass YourPass; } virtual_ipaddress { 192.168.1.100/24 }; track_script { chk_nginx } }
- 备节点:state BACKUP、priority 90,其余一致;启动服务后,VIP 将自动漂移到 MASTER。
- 说明:也可在“负载均衡器前”再挂一层 Keepalived VIP,形成双入口冗余。
-
步骤4 配置 MariaDB/MySQL 主从复制(数据层故障转移基础)
- 主库 my.cnf:server-id=1;log-bin=/var/log/mysql/mysql-bin.log;重启后创建复制用户并授权:CREATE USER ‘repl’@‘%’ IDENTIFIED BY ‘StrongPass!’; GRANT REPLICATION SLAVE ON . TO ‘repl’@‘%’; FLUSH PRIVILEGES; 记录 SHOW MASTER STATUS 的 File/Position。
- 从库 my.cnf:server-id=2;read_only=ON;relay_log=/var/log/mysql/mysql-relay-bin.log;重启后执行 CHANGE MASTER TO …;START SLAAVE;用 SHOW SLAVE STATUS\G 确认 Slave_IO_Running/Slave_SQL_Running=Yes。
- 应用侧建议读写分离:写主库、读从库,降低主库故障影响面。
-
步骤5 文件与静态资源(避免本地单点)
- 用户上传建议直传 OSS/MinIO,Nginx 对 /uploads/ 做 301 重定向;或采用共享存储(如 NFS/GlusterFS)并配套健康检查与回退策略。
-
步骤6 监控与告警(缩短 MTTR)
- 部署 Prometheus + Grafana,采集 Nginx(连接/请求/5xx)、PHP-FPM(进程/队列)、MySQL(复制延迟、连接数)等指标,设置阈值告警并联动故障演练。