ngx_http_upstream_module模块允许自定义一组服务器。它们可以在指令proxy_pass、fastcgi_pass和 memcached_pass中被引用到。
基于 upstream 模块负载均衡配置
- 依次调整配置
配置文件加载顺序:nginx.conf --> conf.d/*.conf 文件 conf.d/*.conf 中内容是 server 模块,upstream 模块平级且先于 server 模块配置,放到 nginx.conf 中。
# 负载均衡
upstream backserver {
server 127.0.0.1:8080;
}
include /etc/nginx/conf.d/*.conf;
对应调整 conf.d/XXX.conf
location / {
root html;
index index.html index.htm;
proxy_pass http://backserver; // 反向代理转向 upstream
}
负载均衡策略
-
轮询(默认)
每个请求按时间顺序逐一分配到不同的服务器,如果后端服务down掉,能自动剔除。
upstream backserver {
server 192.168.2.171;
server 182.168.2.172;
}
-
权重轮询
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.2.171 weight=10;
server 182.168.2.172 weight=20;
}
-
访问ip_hash
按每个请求访问的ip的hash结果分配,用于将每个访问ip固定访问一个服务器。
upstream backserver {
ip_hash;
server 192.168.2.171;
server 182.168.2.172;
}
-
访问url_hash
按每个请求访问的url的hash结果分配,用于将每个访问url定向到同一个服务器。
upstream backserver {
server 192.168.2.171;
server 182.168.2.172;
hash $request_uri;
hash_method crc32;
}
-
fair
fair fast 思想,按后端服务的响应时间来分配,响应时间短的优先分配。
upstream backserver {
server 192.168.2.171;
server 182.168.2.172;
fair;
}