Nginx负载均衡配置详解
·
NGINX负载均衡配置详解
准备工作
47.112.199.100 #反向代理服务器
47.112.199.101 #真实服务器1
47.112.199.102 #真实服务器2
1.反向代理服务器配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
# 定义后端服务器组
upstream backend {
# 默认轮询算法(请求按顺序分配)
server 47.112.199.101;
server 47.112.199.102;
# 也可以使用其他算法,例如:
# ip_hash; # IP哈希算法,同一IP请求固定到同一服务器
# weight=2; # 加权轮询,第一个服务器权重为2,第二个为1
}
# 配置反向代理服务器
server {
listen 80;
server_name hyztest.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_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
}
2.真实服务器配置
两台后端服务器配置一般保持一致
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /data/www/html;
index index.html index.html;
}
}
}
3.创建测试页面
在两台后端服务器中,分别创建测试页面
vim /data/www/html/index/html
#节点1
<h1>Server 1: 47.112.199.101</h1>
#节点2
<h1>Server 2: 47.112.199.102</h1>
4.启动NGINX访问测试
在浏览器中输入域名hyztest.com访问,可以看到server1和server2轮询访问


5.常用负载均衡算法
① 轮询(默认):默认算法,请求按顺序分配到各服务器
upstream backend {
server 47.112.199.101;
server 47.112.199.102;
}
② 加权轮询:适用于服务器性能不均的场景,如新老服务器混用
upstream backend {
server 47.112.199.101 weight=3; # 性能较强服务器处理3份请求
server 47.112.199.102 weight=1; # 性能较弱服务器处理1份请求
}
③ IP哈希:基于客户端IP哈希,同一IP请求固定到同一服务器,适合需要会话保持的场景
upstream backend {
ip_hash;
server 47.112.199.101;
server 47.112.199.102;
}
④ 最少连接:动态选择当前连接数最少的服务器,适合长连接场景(如WebSocket)
upstream backend {
least_conn;
server 47.112.199.101;
server 47.112.199.102;
}
⑤ URL哈希(需要第三方模块):基于请求URL哈希,相同URL的请求分配到同一服务器,适合缓存服务器
upstream backend {
hash $request_uri consistent;
server 47.112.199.101;
server 47.112.199.102;
}
⑥备用服务器:当主服务器全部不可用时,请求才会分配到备用服务器
upstream backend {
server 47.112.199.101;
server 47.112.199.102 backup;
}
6.高级负载均衡算法
①加权轮询 + 健康检查
upstream backend {
server 47.112.199.101 weight=3 max_fails=2 fail_timeout=30s;
server 47.112.199.102 weight=1 max_fails=2 fail_timeout=30s;
}
②IP哈希+健康检查
upstream backend {
ip_hash;
server 47.112.199.101 max_fails=2 fail_timeout=30s;
server 47.112.199.102 max_fails=2 fail_timeout=30s;
}
参数说明
max_fails=2:在fail_timeout时间内,如果请求失败2次,就将该服务器标记为"down"fail_timeout=30s:标记为"down"后,30秒内不再向该服务器发送请求- 自动剔除:当服务器宕机时,Nginx会自动停止向该服务器发送请求
imeout=30s;
}
> 参数说明
> - `max_fails=2`:在`fail_timeout`时间内,如果请求失败2次,就将该服务器标记为"down"
> - `fail_timeout=30s`:标记为"down"后,30秒内不再向该服务器发送请求
> - **自动剔除**:当服务器宕机时,Nginx会自动停止向该服务器发送请求
> - **自动恢复**:当服务器恢复后,Nginx会继续向其发送请求
更多推荐

所有评论(0)