nginx官方文件 之 http負載均衡 學習筆記

2022-09-16 01:42:08 字數 3778 閱讀 5788

大致可以分兩類:

(1)不能保證使用者的每一次請求都通過負載均衡到達同一伺服器。

(2)可保證使用者的每一次請求都通過負載均衡到達同一伺服器。

第二類的應用場景:

1、如果伺服器有快取機制,讓使用者訪問之前已快取過的伺服器可以加快響應速度。

2、若使用者參與需要多個步驟,如:a.填寫表單,b.下單並付款,c.提示購買成功。這些步驟需要儲存會話狀態才能使事務順利進行。

第(1)類:

round robin(輪詢)還可以加上伺服器權重

解釋:伺服器收到請求數的比重是 5:3:1

注:肯定比上面的都好使,畢竟是 nginx plus 才有的收費功能。

第(2)類:

解釋:等於把上面ip hash變成了$request_uri hash

下面三種方法都是基於cookie 機制,只是劃分粒度越來越細。

(1)stickycookie

srv_id

expires

domain

path

cookie_name

瀏覽器保留 cookie 的時間

cookie 的域

cookie 的路徑

(2)stickyroute

nginx 會按照順序搜尋$route_cookie$route_uri,並選擇第乙個非空的引數用作 route,下同。

(3)stickylearn

這是一種比前兩種方法更複雜的會話永續性方法。

引數createlookup分別指定變數來指示如何建立新會話和搜尋已經存在的會話。

會話儲存在 shared memory zone,名字和大小在zone引數中配置。在64位平台上乙個 megabyte zone可以儲存大概 8000 個會話。在timeout引數指定的期間內沒有被訪問的會話將被從 zone 上移除,預設為 10 分鐘。

注:對於上述的第(2)類

如果某個 server 不用了,若直接刪掉這個 server,會打亂 hash 初始化分配的規則。

推薦的做法是,給server加上down,即不打破原有規則,同時讓請求交給臨近的下一台伺服器處理。(如下面**,10.117.0.2 的請求交給 10.117.0.3 來處理)。這樣等宕機的伺服器恢復,「保證使用者的每一次請求都通過負載均衡到達同一伺服器」的功能也會恢復正常。

解釋:

平時只是 10.117.0.1,10.117.0.2,10.117.0.3 伺服器執行中,10.117.0.4 只是待命狀態。但當 3 臺都宕機了後,第 4 台才會收到請求

一旦有可用的節點恢復服務,該節點則不再使用,又進入後備狀態

好處:伺服器慢啟動功能可防止最近恢復的伺服器被連線淹沒,這可能會導致伺服器再次被標記為失敗。

缺點:如果 upstream 中只有一台伺服器,那麼slow_start引數會被忽略。

1、如果max_conns的限制達到了,請求被放入 queue

2、如果queue排滿或者在timeout時間內無法選擇上游伺服器,客戶端將接到乙個錯誤。

寫在前面:

1、當 nginx 認為某個伺服器不可用時,它會暫時停止向伺服器傳送請求,等待fail_timeout後重試,直到它再次處於活動狀態。

2、如果所有節點均失效,備機也為失效時,nginx 會對所有節點恢復為有效,重新嘗試探測節點。

只有當請求發往伺服器節點才能檢查

引數

解釋預設值

proxy_next_upstream

失敗條件

error timeout invalid_header(更多見下圖)

max_fails

失敗的次數

fail_timeout

伺服器被nginx標記為失效的時長

10判斷伺服器失效的條件:

在請求發往伺服器前 nginx 就會定期自行檢查

zone引數定義了被 worker 程序共享的並用來儲存伺服器組配置的記憶體區域。

健康監測的時間間隔是 10s,在失敗 3 次後會認為是不可用的,以後需要兩次通過監測才能認為是可用的。

判斷伺服器失效的條件:

判斷伺服器失效的條件:

除了 connect refuse / time out

還有 status != 200-399 / content-type != text/html / body ~ "maintenance mode"

待寫待寫

參考資料

2【 nginx 的負載均衡原理 】

Nginx 官方文件翻譯 nginx 控制

可以用訊號控制nginx。主程序的id預設情況下被寫入 usr local nginx logs nginx.pid檔案。這個名字可以在配置時修改或者在nginx.conf檔案中使用pid指令。主程序支援以下訊號 term,int 快速關閉 quit 友好的關閉 hup 修改配置,保持乙個時區的改變...

官方文件之Cookie

蘋果文件翻譯內容 由於http協議的無狀態性,客戶端通常使用的持久化儲存資料都是來自於攜帶cookies的url網路請求 系統缺省會每次在傳送網路請求的時候在請求頭裡面設定cookie,我們通常沒有管理他,通過charles軟體抓包可以明顯的看到請求頭裡面多了個set cookie 引數 url l...

nginx官方文件筆記4 壓縮

壓縮可以顯著降低傳輸的response資料大小,但是因為是執行時會對效能有影響,不會二次壓縮 預設壓縮只會壓縮mime type為text html的資料,如果想要壓縮別的需要自己指定,預設只會壓縮大小超過20byte的資料可以自己指定指定gzip min lengthdirective,預設ngi...