Nginx:负载均衡
1.轮询
1.1.普通轮询
# 上游服务器
upstream servers {
server 192.168.1.201:3001;
server 192.168.1.201:3002;
server 192.168.1.201:3003;
}
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# 反向代理
proxy_pass http://servers;
proxy_set_header X-Real-IP $remote_addr;
}
...
}
1.2.权重轮询
# 上游服务器
upstream servers {
server 192.168.1.201:3001 weight=2;
server 192.168.1.201:3002;
server 192.168.1.201:3003;
}
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# 反向代理
proxy_pass http://servers;
proxy_set_header X-Real-IP $remote_addr;
}
...
}
2.hash
2.1.ip_hash
# 上游服务器
upstream servers {
ip_hash;
server 192.168.1.201:3001;
server 192.168.1.201:3002;
server 192.168.1.201:3003;
}
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# 反向代理
proxy_pass http://servers;
proxy_set_header X-Real-IP $remote_addr;
}
...
}
2.2.url_hash
# 上游服务器
upstream servers {
hash $request_uri;
server 192.168.1.201:3001;
server 192.168.1.201:3002;
server 192.168.1.201:3003;
}
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# 反向代理
proxy_pass http://servers;
proxy_set_header X-Real-IP $remote_addr;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
...
}
3.least_conn
最少连接
# 上游服务器
upstream servers {
least_conn;
server 192.168.1.201:3001;
server 192.168.1.201:3002;
server 192.168.1.201:3003;
}
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# 反向代理
proxy_pass http://servers;
proxy_set_header X-Real-IP $remote_addr;
}
...
}
4.负载均衡参数
- weight: 权重
- down: 禁用服务器
- backup: 备用服务器,在其他服务器都不可用时会启用
- max_fails: 最大失败的次数
- fail_timeout: max_fails之后,禁用时间
- max_conns: 限制最大连接数