温馨提示×

如何确保Debian LNMP的高可用性

小樊
39
2025-11-09 05:01:05
栏目: 智能运维

1. 负载均衡:分散流量压力
使用Nginx作为反向代理和负载均衡器,将客户端请求分发到多个后端服务器(如Nginx、PHP-FPM实例),避免单点过载。配置upstream模块定义后端服务器组,支持轮询(默认)加权轮询(根据服务器性能分配权重)、IP哈希(确保同一客户端请求固定到同一服务器,解决会话保持问题)等算法。例如:

http {
    upstream backend {
        server 192.168.1.101:80 weight=3;  # 权重高的服务器处理更多请求
        server 192.168.1.102:80;
        server 192.168.1.103:80;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

2. 数据库高可用:主从复制与故障切换
通过MySQL/MariaDB主从复制实现数据同步,当主库故障时,从库可快速接管。配置步骤:

  • 主库设置:修改my.cnf,启用二进制日志(log_bin=mysql-bin)、设置唯一server-id(如1),创建复制用户(repl)并授权;执行SHOW MASTER STATUS记录FilePosition(用于从库同步)。
  • 从库设置:修改my.cnf,设置唯一server-id(如2)、启用中继日志(relay_log=mysql-relay-bin);执行CHANGE MASTER TO命令指定主库信息(主机、用户、密码、FilePosition),启动复制(START SLAVE)。
  • 故障切换:使用Keepalived监控主库状态,当主库宕机时,自动将虚拟IP(VIP)漂移到从库,确保数据库访问连续性。

3. PHP-FPM集群:提升应用处理能力
部署多个PHP-FPM实例,通过Nginx负载均衡分发PHP请求,避免单实例瓶颈。配置多个PHP-FPM池(每个池对应一个实例),修改listen参数为socket(如/run/php/php7.4-fpm.sock)或TCP端口(如127.0.0.1:9001);在Nginx中配置upstream指向这些实例,例如:

upstream php_backend {
    server unix:/run/php/php7.4-fpm.sock;
    server unix:/run/php/php7.4-fpm@www1.sock;
    server unix:/run/php/php7.4-fpm@www2.sock;
}
location ~ \.php$ {
    fastcgi_pass php_backend;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

4. 高可用保障:故障检测与自动切换
使用Keepalived实现Nginx或VIP的高可用,通过VRRP协议监控节点状态。配置主备节点:主节点state MASTER、优先级priority 100;备节点state BACKUP、优先级priority 50;关联健康检查脚本(如pgrep nginx),当主节点故障时,备节点自动接管VIP。例如:

vrrp_instance VI_1 {
    state MASTER;
    interface eth0;
    virtual_router_id 51;
    priority 100;
    advert_int 1;
    authentication { auth_type PASS; auth_pass 1234; }
    virtual_ipaddress { 192.168.1.100; }
    track_script { chk_nginx; }  # 关联健康检查
}

5. 监控与告警:提前发现问题
部署监控工具(如Prometheus+Grafana)实时监控系统状态,包括:

  • 服务器指标:CPU、内存、磁盘使用率;
  • 服务状态:Nginx、MySQL、PHP-FPM的运行状态、响应时间;
  • 业务指标:网站访问量、数据库查询量。
    设置告警阈值(如CPU使用率超过80%触发邮件/短信告警),及时处理异常。

6. 数据备份与恢复:防止数据丢失
定期备份关键数据(数据库、网站文件),使用mysqldump工具备份MySQL(mysqldump -u root -p --all-databases > full_backup.sql),使用rsynctar备份网站文件(rsync -avz /var/www/html /backup/html)。将备份文件存储到异地(如云存储),确保灾难发生时可快速恢复。

7. 安全加固:降低攻击风险

  • 防火墙配置:使用ufw限制访问,仅允许必要端口(如HTTP 80、HTTPS 443、SSH 22);
  • SSH安全:禁用root远程登录(PermitRootLogin no)、使用密钥对认证;
  • SSL加密:为Nginx配置SSL证书(Let’s Encrypt免费获取),启用HTTPS(listen 443 ssl),保护数据传输安全。

0