Debian系统下保障LNMP(Linux+Nginx+MySQL/MariaDB+PHP)高可用性的核心策略
通过负载均衡器将用户请求分发到多个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 backup; # 备用服务器,仅在前端故障时启用
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
针对LNMP核心组件(Nginx、MySQL、VIP),配置自动故障转移机制:
# 主节点Keepalived配置(/etc/keepalived/keepalived.conf)
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51 # 同一网络内唯一ID
priority 100 # 主节点优先级高于备用(备用设为90)
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.200 # VIP,客户端访问此IP
}
}
server-id=1; log_bin=/var/log/mysql/mysql-bin.log; binlog_do_db=your_db;
server-id=2; relay_log=/var/log/mysql/mysql-relay-bin.log; read_only=1;
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;
。mysqldump
全量备份或xtrabackup
增量备份,备份文件存储在异地(如云存储)。示例全量备份命令:mysqldump -u root -p --all-databases --single-transaction --quick --lock-tables=false > /backup/full_backup_$(date +%F).sql
pt-table-checksum
工具定期校验主从数据一致性,避免因同步延迟或失败导致数据不一致。部署监控系统收集服务器性能(CPU、内存、磁盘)、服务状态(Nginx、MySQL、PHP-FPM)等指标,及时触发告警:
使用配置管理工具(如Ansible、SaltStack)自动化部署LNMP组件、配置文件同步和软件更新。例如,Ansible Playbook可实现:
ufw
或iptables
限制入站流量,仅允许HTTP(80)、HTTPS(443)、SSH(22)等必要端口。示例:sudo ufw allow 'Nginx Full' # 允许HTTP和HTTPS
sudo ufw allow ssh
sudo ufw enable
exec
、system
),设置open_basedir
限制脚本访问目录,定期更新PHP版本以修复漏洞。