前文我們聊了下nginx作為反向**伺服器,**後端動態應用伺服器的配置,回顧請參考今天我們來聊一聊nginx作為反向**伺服器,**一組伺服器的配置(負載均衡);前邊我們只說到了nginx怎麼去**後端伺服器響應客戶端的請求,它在響應客戶端請求的流程是這樣的,使用者請求傳送到nginx**伺服器上,此時nginx伺服器扮演的就是服務端的角色,客戶端是無法感知後端伺服器的存在,而使用者的報文被nginx接收後,nginx**伺服器它會把使用者的請求報文拆開看,使用者請求的資源,然後把使用者的請求資源,拿到自己的location中進行匹配,如果匹配到了,就按照匹配到的location中定義的**規則進行**,在這之前nginx首先會看自己的快取是否存在使用者請求的資源,如果有,它就從快取中響應使用者,如果沒有,它就扮演客戶端的角色,重新對使用者請求重新封裝請求報文,傳送給後端伺服器,後端伺服器收到請求後,把對應資源響應給nginx**伺服器,nginx會把後端伺服器響應的資源,先快取乙份(如果允許快取的話),然後在封裝響應報文,響應客戶端;從這樣乙個過程來看,nginx它既當伺服器角色,又當客戶端角色,而且nginx是可以把使用者的報文拆開,然後再封裝;這是nginx作為**伺服器**後端伺服器響應客戶端請求的乙個過程(後端伺服器是乙個的情況);如果後端伺服器有多個,都是提供者相同的服務,此時我們該怎麼把客戶端的請求**到後端多台伺服器呢?
首先我們來了解下nginx的upstream模組,nginx的upstream模組有兩個,乙個是基於http協議的upstream,它主要是基於http協議定義後端伺服器組,還有乙個就是基於tcp協議的upstream,它主要是基於tcp協議定義後端伺服器組;我們先說nginx的http裡的upstream模組吧!!!
一、ngx_http_upstream_module:此模組用於定義一組伺服器,然後被proxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass和memcached_pass指令引用的伺服器組。意思很簡單,就是把相同的多台伺服器歸併成一組伺服器,然後nginx基於各種協議的**,把請求**到該組上,從而實現把使用者請求**到後端多台伺服器上
1、upstream name :此指令只能用於http配置段中,意思是定義一組後端伺服器組;
2、server address [parameters]:此指令用於upstream配置段中,表示定義upstream配置段中的server成員,以及相關的引數;其中位址的格式支援ip位址加埠的形式,支援unix path路徑,也支援主機名或網域名稱加埠的形式;parameters表示引數,常用的引數有weight=number權重,預設是1,max_fails=number表示失敗嘗試最大次數;超出此處指定的次數,nginx將失敗的server標記為不可用;fail_timeout=time表示設定將伺服器標記為不可用狀態的超時時長;max_conns表示當前的伺服器的最大併發連線數;backup表示將伺服器標記為「備用」,既所有伺服器均不可用時,此伺服器才會被啟用,有點類似lvs裡的sorry server的角色;down表示將伺服器標記為「不可用」
3、least_conn:此指令表示最少連線排程演算法,當server擁有不同的權重時表示wlc演算法
5、hash key [consistent]:基於指定的key的hash表示實現對請求的排程,此處的key可以是文字、變數、或者二者的組合;作用是將請求分類,將同一類請求發往同乙個upstream的server進行響應;
6、keepalive connections:為每個worker程序保留的空閒的長連線數量;
示例:定義一組伺服器名為webserver
假如我們後端伺服器有一台服務出現故障,nginx會不會把使用者的請求排程到出現故障的伺服器上呢?我們知道在lvs做排程器時,前端lvs會把使用者的請求排程到出現故障的伺服器上,我們需要借助keepalived或者其他輔助服務去實現對後端伺服器做健康狀態監測,才能把使用者的請求不排程到有故障的後端伺服器上,nginx會不會呢?
假如後面的兩台主機都宕機了,此時使用者訪問我們的**會不會像lvs那樣,有sorry server 來給使用者說sorry 呢?
以上就是nginx作為負載均衡的常用配置,接下來我們在說說排程演算法
基於源位址hash演算法
基於使用者請求的uri進行繫結,使用者請求同一uri始終排程到某一server上響應,這樣做的好處可以使快取命中提高;
以上就是nginx作為七層**http請求的負載均衡的常用配置;總結一點nginx作為負載均衡使用其中核心的思想就是把同類服務的伺服器先歸併到乙個組裡,然後基於不同協議的**來把使用者的請求反代到該組上,然後基於某種排程演算法來實現把使用者請求排程到某一台server進行響應;
Nginx負載均衡配置(一)
目錄 負載均衡的意義 負載策略 內建策略 輪詢策略 加權輪詢策略 ip hash策略 擴充套件策略 url hash策略 fair策略 sticky策略 負載均衡的目的是為了解決單個節點壓力過大,造成web服務響應過慢,嚴重的情況下導致服務癱瘓,無法正常提供服務的問題。通常乙個訪問量非常大的web ...
Nginx入門之負載均衡配置
nginx負載均衡一些基礎知識 nginx 的 upstream目前支援 4 種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。2 ip has...
Nginx之負載均衡配置(二)
前文我們聊到了nginx作為負載均衡的配置,前端nginx作為排程器排程http或https請求,回顧請參考其實nginx面向客戶端一側它除了可以 http或https的請求外,它還可以 tcp的請求,因為nginx它本身工作在應用層,通常情況下我們把它 tcp的請求叫做偽四層排程 在之前的文章中我...