linux

LNMP环境下如何实现高可用架构

小樊
51
2025-11-24 08:38:29
栏目: 编程语言

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/路径/版本调整。

三、故障切换与运维要点

四、监控、备份与演练

0
看了该问题的人还看了