Nginx 內提供多種 Load Balance 演算法
Round robin
是 Nginx load balance 預設方法
上篇的測試我們其實還可以加入 weight 設定
upstream app {
server my-app:5000 weight=2;
server my-app-2:5001;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app;
}
}
my-app 會比 my-app-2 多收到兩倍訊息
Least connections
Nginx會比較目前active連線數,會導向目前最少連線的那個server
upstream app {
least_conn;
server my-app:5000;
server my-app-2:5001;
}
Least time (NGINX Plus only)
會參考當前連線和之前 request 的 response time,選擇最小統計值的 server
least_time 後的參數是用來決定如何算 response time,header 是當收到 response header 就算 response time,last_byte 則是等到收完整個 response 才算
upstream backend {
least_time (header | last_byte);
server web1;
server web2;
server web3;
}
Hash
hash 後接文字或Nginx變數,以此計算每個 request 的 hash,並用 hash 結果來決定要送到哪個 server
upstream backend {
hash $scheme$request_uri;
server web1;
server web2;
server web3;
}
IP Hash
只適用 HTTP
會以用戶端 IP 來算 hash
upstream backend {
ip_hash;
server web1;
server web2;
server web3;
}
參考資料/推薦閱讀
1. https://www.nginx.com/blog/choosing-nginx-plus-load-balancing-techniques/
沒有留言:
張貼留言