LNMP(Linux+Nginx+MySQL+PHP)架构的高可用性解决方案旨在确保Web服务在硬件故障、网络问题或软件崩溃时仍能持续运行。以下是全面的高可用实施方案。
upstream backend {
server 192.168.1.101:80 weight=5;
server 192.168.1.102:80;
server 192.168.1.103:80 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
#!/bin/bash
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /data/www/ | while read file
do
rsync -avz --delete /data/www/ backup@192.168.1.102:/data/www/
done
session.save_handler = redis
session.save_path = "tcp://192.168.1.110:6379?auth=password"
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
sync_binlog = 1
[mysqld]
server-id = 2
relay_log = mysql-relay-bin
read_only = 1
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/var/lib/mysql
user=mha
password=mhapass
ping_interval=3
repl_user=repl
repl_password=replpass
ssh_user=root
[server1]
hostname=192.168.1.201
candidate_master=1
[server2]
hostname=192.168.1.202
candidate_master=1
[server3]
hostname=192.168.1.203
no_master=1
# 在所有存储节点上执行
gluster volume create gv0 replica 3 192.168.1.301:/data/brick1 192.168.1.302:/data/brick1 192.168.1.303:/data/brick1
gluster volume start gv0
#!/bin/bash
innobackupex --user=backup --password=backuppass --no-timestamp /backup/$(date +%Y%m%d)/
innobackupex --apply-log /backup/$(date +%Y%m%d)/
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
output.logstash:
hosts: ["192.168.1.401:5044"]
数据恢复流程:
服务切换流程:
定期演练:
通过以上方案,LNMP架构可实现99.99%以上的可用性,满足大多数企业级应用的需求。