Nginx 作為高性能web服務器,負載均衡是其基本功能之一。 注:負載均衡至少需要兩臺機器
負載均衡
負載均衡可以將請求前端的請求分擔到后端多個節點上,提升系統的響應和處理能力。
負載均衡策略
負載均衡的策略可以大致分為兩大類:內置策略
和擴展策略
內置策略:一般會直接編譯進Nginx內核,常用的有、輪詢、ip hash、最少連接
擴展策略:fair、url hash等
內置策略
- 輪詢策略(輪詢加權/round-robin)</br>
到應用服務器的請求以round-robin/輪詢的方式被分發
</br>
配置
http {
# ... 省略其它配置
upstream tomcats {
server 192.168.0.100:8080 weight=1 fail_timeout=20s;
server 192.168.0.101:8080 weight=2 fail_timeout=20s;
}
server {
server_name www.searchinfogo.com
listen 80;
location / {
proxy_pass http://tomcats;
}
}
# ... 省略其它配置
}
- ip hash </br>
使用hash算法來決定下一個請求要選擇哪個服務器(基于客戶端IP地址)
</br>
配置
http {
# ... 省略其它配置
upstream tomcats {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
ip_hash;
}
server {
server_name www.searchinfogo.com
listen 80;
location / {
proxy_pass http://tomcats;
}
}
# ... 省略其它配置
}
- 最少連接(least_conn) </br>
下一個請求將被分派到活動連接數量最少的服務器
</br>
配置
http {
# ... 省略其它配置
upstream tomcats {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
least_conn;
}
server {
server_name www.searchinfogo.com
listen 80;
location / {
proxy_pass http://tomcats;
}
}
# ... 省略其它配置
}
擴展策略
- fair</br>
配置
http {
# ... 省略其它配置
upstream tomcats {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
fair;
}
server {
server_name www.searchinfogo.com
listen 80;
location / {
proxy_pass http://tomcats;
}
}
# ... 省略其它配置
}
- url hash</br>
配置
http {
# ... 省略其它配置
upstream tomcats {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
hash $request_uri;
hash_method crc32;
}
server {
server_name www.searchinfogo.com
listen 80;
location / {
proxy_pass http://tomcats;
}
}
# ... 省略其它配置
}
weight=1; (weight 默認為1.weight越大,負載的權重就越大)
down; (down 表示單前的server暫時不參與負載)
backup; (其它所有的非backup機器down或者忙的時候,請求backup機器)
max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
fail_timeout:max_fails次失敗后,暫停的時間
最后
nginx -s reload #重啟nginx