LNMP高可用架构落地方案
一、总体架构与组件冗余
二、关键配置示例
http {
upstream backend {
least_conn;
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 {
listen 80;
server_name www.example.com;
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;
}
}
}
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.10.100/24; }
}
[www]
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
-- 主库
CREATE USER 'repl'@'%' IDENTIFIED BY 'StrongPass!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
-- my.cnf
[mysqld]
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
-- 从库
[mysqld]
server-id=2
relay_log=/var/log/mysql/mysql-relay-bin.log
read_only=1
-- 同步
CHANGE MASTER TO
MASTER_HOST='10.0.2.11',
MASTER_USER='repl',
MASTER_PASSWORD='StrongPass!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
# 全量备份(InnoDB一致性)
mysqldump -u root -p --single-transaction --quick --routines --triggers --default-character-set=utf8mb4 \
--all-databases > /backup/full_$(date +%F).sql
# 主从一致性校验(Percona Toolkit)
pt-table-checksum --host=10.0.2.11 --user=checksum --password=xxx --databases=your_db
以上示例涵盖负载均衡、故障转移、PHP-FPM并发、MySQL复制与备份校验的关键做法,可直接按实际IP/路径/版本调整。
三、故障切换与运维要点
四、监控、备份与演练