剖析Nginx的負載均衡模組

來源:互聯網
上載者:User
關鍵字 nginx 負載均衡模組

負載均衡模組決定哪個後端伺服器可以分到特定的請求;現有的實現有通過輪轉法或者對請求的某些部分進行雜湊處理。 這一節將會介紹HTTP://www.aliyun.com/zixun/aggregation/13996.html">負載均衡模組的註冊和調用,並以upstream_hash模組為例子( 原始程式碼 )。 Upstream_hash模組對在 nginx.conf中確定的某個變數進行雜湊。

一個負載均衡模組有以下六個方面:

1. 啟動配置指令需要調用一個註冊函數registration function(比如:hash)

2. 註冊函式定義合法的伺服器選項(比如:weight=),同時註冊上游主機初始化函數upstream initialization function

3. 上游主機初始化函數在配置確認好以後被調用:

a) 解析伺服器名稱,指向特定的IP位址
b) 為每個socket分配空間
c) 設定同伴初始化函數peer initialization function的回檔入口

4. 同伴初始化函數在每個請求來臨的時候調用一次,設置一個負載均衡函數可以進入和操作的資料結構體。

5. 負載均衡函數load-balancing function決定這個請求的去向;在用戶端請求 來時至少被調用一次(如果後端伺服器回復失敗,可能要更多次數)。 這裡 發生的東西很有趣。

6. 最後,在和特定的後端伺服器結束通信的時候,同伴釋放函數peer release function會更新統計(通信是否成功或失敗)。
有很多內容,我將會一點點得展開。

5.1.啟動指令

指令聲明,既確定了他們的有效存在位置,也給出會調用哪個函數。 對於負載均衡的模組應該有的標識NGX_HTTP_UPS_CONF,以便Nginx知道這個指令只在upstream配置部分有效。 它應該提供一個指向註冊函數的指標。 下面是upstream_hash模組的指令聲明:

{ ngx_string("hash"),
NGX_HTTP_UPS_CONF| NGX_CONF_NOARGS,
ngx_HTTP_upstream_hash,
0,
0,
Null },

其他沒什麼了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.