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;
}