Nginx負載均衡有四種方案配置
1.輪詢
輪詢即Round Robin,根據Nginx組態檔中的順序,依次把客戶端的Web請求分發到不同的后端服務器上,
注意:
- 預設配置就是輪詢策略;
- nginx負載均衡支持http和https協議,只需要修改proxy_pass后協議即可;
- nginx支持FastCGI,uwsgi,SCGI,memcached的負載均衡,只需要把proxy_pass改為fastcgi,uwsgi_pass,scgi_pass,memcached_pass即可;
nginx配置:
http {
upstream webs {
#默認輪詢
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
server {
#監聽埠
listen 80;
#監聽地址,寫ip或者域名
server_name localhost
location / {
#請求轉向webs定義的服務器串列
proxy_pass http://webs;
}
}
}
2.最少連接 least_conn
web請求會被轉發到連接數量最少的服務器上
注意:
- 最少連接負載均衡通過least_conn指令定義;
- 此策略適合請求處理時間長短不一造成服務器過載的情況;
nginx配置:
http {
upstream webs {
#默認輪詢
#ip_hash;
#least_conn
server localhost:8081;
#server localhost:8082;
#server localhost:8083 weight=3;
}
server {
#監聽埠
listen 80;
#監聽地址,寫ip或者域名
server_name localhost
location / {
#請求轉向webs定義的服務器串列
proxy_pass http://webs;
}
}
}
3. IP地址哈希ip_hash
前兩種負載均衡方案中,同一客戶端連續的web請求可能會被分發到不同的后端服務器進行處理,因此如果涉及到會話Session,那么會話會比較復雜,此時可以使用ip_hash的負載均衡策略,同一客戶端連接的Web請求會被分發到同一服務器進行處理,
注意:
- ip哈希負載均衡使用ip_hash指令定義;
- nginx使用請求客戶端的ip地址進行哈希計算,確保使用同一服務器回應請求;
nginx配置:
http {
upstream webs {
#默認輪詢
#ip_hash;
#least_conn
server localhost:8081;
#server localhost:8082;
#server localhost:8083 weight=3;
}
server {
#監聽埠
listen 80;
#監聽地址,寫ip或者域名
server_name localhost
location / {
#請求轉向webs定義的服務器串列
proxy_pass http://webs;
}
}
}
4.基于權重 weight
基于權重的負載均衡即Weighted Load Balancing,在這種方式下,我們可以配置Nginx把請求更多地分發到高配置的后端服務器上,把相對較少的請求分發到低配服務器,
注意:
- 權重負載均衡需要使用weight指令定義;
- 權重越高分配到需要處理的請求越多;
- 此策略可以和最少連接負載和ip哈希策略結合;
- 此策略比較適合服務器硬體配置差別較大的情況;
nginx配置:
http {
upstream webs {
server localhost:8081;
server localhost:8082;
server localhost:8083 weight=3;
}
server {
#監聽埠
listen 80;
#監聽地址,寫ip或者域名
server_name localhost
location / {
#請求轉向webs定義的服務器串列
proxy_pass http://webs;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/149127.html
標籤:java
