如何利用nginx實現負載均衡(總結)

如何利用nginx實現負載均衡(總結)

1、總結

一句話總結:

推薦使用nginx七層(應用層)負載均衡的實現:配置那是至關的簡單

 

一、nginx配置實例?

|||-beginhtml

#這裏的域名要和下面proxy_pass的同樣
upstream fengzp.com { server 192.168.99.100:42000  weight=1; server 192.168.99.100:42001  weight=2; } server { listen 80; server_name 192.168.99.100; location / { proxy_pass http://fengzp.com; proxy_redirect default; } error_page 500 502 503 504  /50x.html; location = /50x.html { root html; } }

|||-endnginx

主要是location中的proxy_pass http://fengzp.com; 和upstream  fengzp.com 中配置的server

 

 

二、nginx負載均衡中加權重實例?

|||-begindocker

upstream fengzp.com { server 192.168.99.100:42000  weight=1; server 192.168.99.100:42001  weight=2; } 

|||-endtomcat

server    192.168.99.100:42000  weight=1;

 

 

 

三、nginx配置負載均衡中:若是關了tomcat1,再屢次刷新頁面,接下來出現的就會都是tomcat2的頁面,可是時而快時而慢。 緣由及如何解決?

緣由:轉tomcat1時出現等待響應過程:這其中緣由是當若是nginx將請求轉發到tomcat2時,服務器會立刻跳轉成功,可是若是是轉到tomcat1,由於tomcat1已經關閉了,因此會出現一段等待響應過程的過程,要等它失敗後纔會轉到tomcat2。
解決:配置等待時間:等待時間 = proxy_connect_timeout + fail_timeout * max_fails:實例:server 192.168.99.100:42000  weight=1 fail_timeout=2s max_fails=2s;

 

四、nginx配置負載均衡中如何配置每一個服務器具體的等待及響應時間?

proxy_connect_timeout:與服務器鏈接的超時時間,默認60s
fail_timeout:當該時間內服務器沒響應,則認爲服務器失效,默認10s
max_fails:容許鏈接失敗次數,默認爲1

 

五、nginx配置負載均衡中 配置每一個服務器具體的等待及響應時間 實例?

等待時間 = proxy_connect_timeout + fail_timeout * max_fails
server 192.168.99.100:42000  weight=1 fail_timeout=2s max_fails=2s;

 

六、nginx常見的負載均衡策略有哪些?

一、輪詢:這種是默認的策略,把每一個請求按順序逐一分配到不一樣的server,若是server掛掉,能自動剔除。
二、最少鏈接:把請求分配到鏈接數最少的server
三、權重:使用weight來指定server訪問比率,weight默認是1。如下配置會是server2訪問的比例是server1的兩倍。
四、ip_hash:每一個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,能夠解決session的問題。若是server掛掉,能自動剔除。

 

七、nginx負載均衡策略中的ip_hash策略配置實例?

|||-begin服務器

upstream fengzp.com { ip_hash; server 192.168.99.100:42000; server 192.168.99.100:42001; }

|||-endmarkdown

就是在upstream裏面加一個ip_hash;便可

 

 

 

 

2、利用nginx實現負載均衡

轉自或參考:利用nginx實現負載均衡
https://www.cnblogs.com/andyfengzp/p/6434125.html">利用nginx實現負載均衡session

 

一、安裝nginx和tomcat

我這裏是使用docker安裝的。安裝流程可參照 負載均衡

一、安裝nginx和tomcat

我這裏是使用docker安裝的。安裝流程可參照 dockerfilepost

這裏安裝了兩個tomcat,端口分別是42000和42001。第二個tomcat的首頁隨便加了些代碼區分測試

 

二、nginx配置

#這裏的域名要和下面proxy_pass的同樣
upstream  fengzp.com {   
    server    192.168.99.100:42000  weight=1; 
    server    192.168.99.100:42001  weight=2;  
}     

server {  
    listen       80; 
    server_name  192.168.99.100;  

location / {  
        proxy_pass http://fengzp.com;  
        proxy_redirect default;  
    }  

    error_page   500 502 503 504  /50x.html;  
    location = /50x.html {  
        root   html;  
    }  
}

 

三、測試

刷新頁面發現頁面會發生變化,證實負載配置成功。由於我配的權重第二個是第一個的兩倍,因此第二個出現的機率會是第一個的兩倍。

 

四、後續問題

若是關了tomcat1,再屢次刷新頁面,接下來出現的就會都是tomcat2的頁面,可是時而快時而慢。這其中緣由是當若是nginx將請求轉發到tomcat2時,服務器會立刻跳轉成功,可是若是是轉到tomcat1,由於tomcat1已經關閉了,因此會出現一段等待響應過程的過程,要等它失敗後纔會轉到tomcat2。
而這個等待響應的時間咱們是能夠配置的。

這個時間由如下3個參數控制:
proxy_connect_timeout:與服務器鏈接的超時時間,默認60s
fail_timeout:當該時間內服務器沒響應,則認爲服務器失效,默認10s
max_fails:容許鏈接失敗次數,默認爲1

等待時間 = proxy_connect_timeout + fail_timeout * max_fails

若是我這樣配置的話,只需等待6秒就能夠了。

五、負載均衡策略

一、輪詢

這種是默認的策略,把每一個請求按順序逐一分配到不一樣的server,若是server掛掉,能自動剔除。

upstream  fengzp.com {   
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

二、最少鏈接

把請求分配到鏈接數最少的server

upstream  fengzp.com {   
    least_conn;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

三、權重

使用weight來指定server訪問比率,weight默認是1。如下配置會是server2訪問的比例是server1的兩倍。

upstream  fengzp.com {   
    server   192.168.99.100:42000 weight=1; 
    server   192.168.99.100:42001 weight=2;  
}

四、ip_hash

每一個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,能夠解決session的問題。若是server掛掉,能自動剔除。

upstream  fengzp.com {   
    ip_hash;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

ip_hash能夠和weight結合使用。

相關文章
相關標籤/搜索