CentOS 上 LNMP 负载均衡实操指南
一 架构与准备
二 方案一 Nginx 反向代理负载均衡(最常用)
http {
upstream backend {
least_conn; # 最少连接
server 10.0.0.11:80 max_fails=3 fail_timeout=30s;
server 10.0.0.12:80 max_fails=3 fail_timeout=30s;
server 10.0.0.13:80 max_fails=3 fail_timeout=30s backup; # 备用
}
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;
# 连接复用与缓冲优化
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering on;
proxy_buffer_size 16k;
proxy_buffers 16 16k;
}
}
}
server {
listen 80;
server_name www.example.com;
root /usr/share/nginx/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 方式A:TCP
fastcgi_pass 127.0.0.1:9000;
# 方式B:UDS(需取消 listen.allowed_clients 限制)
# fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
}
location ~ /\.ht { deny all; }
}
[www]
listen = 127.0.0.1:9000
; 若用 UDS:listen = /var/run/php-fpm/php-fpm.sock
; listen.allowed_clients = 127.0.0.1 ; 使用 UDS 时按需调整
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
三 方案二 LVS 四层负载均衡(更高并发场景)
yum -y install ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.232.100:80 -s rr
ipvsadm -a -t 192.168.232.100:80 -r 192.168.232.135:80 -g
ipvsadm -a -t 192.168.232.100:80 -r 192.168.232.136:80 -g
ifconfig lo:0 192.168.232.100 broadcast 192.168.232.100 netmask 255.255.255.255 up
route add -host 192.168.232.100 dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
四 数据库与会话保持
session.save_handler = redis
session.save_path = "tcp://192.168.2.5:6379"
五 健康检查与性能优化