大型網站性能策略:詳細解析nginx負載均衡(3)

發表于:2014-07-14來源:IT博客大學習作者:不詳點擊數: 標簽:負載均衡
場景2 server_4掛掉,其他正常; 場景3 server_3、server_4掛掉,其他正常; 場景4 server_*均恢復正常服務。 上述四個場景將按照時間順序進行,每個場景將建立在

  場景2 server_4掛掉,其他正常;

  場景3 server_3、server_4掛掉,其他正常;

  場景4 server_*均恢復正常服務。

  上述四個場景將按照時間順序進行,每個場景將建立在上一個場景基礎上,被測試對象無需做任何操作,以最大程度模擬實際情況。另外,考慮到測試工具自身的特點,在easyabc上的測試壓力在17000左右,polygraph上的測試壓力在4000左右。以上測試均保證被測試對象可以正常工作,且無任何notice級別以上(alert/error/warn)的日志出現,在每個場景中記錄下server_*的qps用于最后的策略分析。

  3.4. 測試結果

  表1和圖1是輪詢策略在兩種測試工具下的負載情況。對比在兩種測試工具下的測試結果會發現,結果完全一致,因此可以排除測試工具的影響。從圖表中可以看出,輪詢策略對于均衡性和容災性都可以做到很好的滿足。

  表2和圖2是fair策略在兩種測試工具下的負載情況。fair策略受環境影響非常大,在排除了測試工具的干擾之后,結果仍然有非常大的抖動。從直觀上講,這完全不滿足均衡性。但是從另一個角度出發,恰恰是由于這種自適應性確保了在復雜的網絡環境中能夠物盡所用。因此,在應用到工業生產中之前,需要在具體的環境中做好測試工作。

  以下圖表是各種hash策略,所不同的僅僅是hash key或者是具體的算法實現,因此一起做對比。實際測試中發現,通用hash和一致性hash均存在一個問題:當某臺后端的機器掛掉時,原有落到這臺機器上的流量會丟失,但是在ip hash中就不存在這樣的問題。正如上文中對ip hash源碼的分析,當ip hash失效時,會退化為輪詢策略,因此不會有丟失流量的情況。從這個層面上說,ip hash也可以看成是輪詢的升級版。

  圖5為ip hash策略,ip hash是nginx內置策略,可以看做是前兩種策略的特例:以來源ip為key。由于測試工具不便于模擬海量ip下的請求,因此這里截取線上實際的情況加以分析,如下圖所示:

  圖5 ip hash策略

  圖中前1/3使用輪詢策略,中間段使用ip hash策略,后1/3仍然是輪詢策略??梢悦黠@的看出,ip hash的均衡性存在著很大的問題。原因并不難分析,在實際的網絡環境中,有大量的高校出口路由器ip、企業出口路由器ip等網絡節點,這些節點帶來的流量往往是普通用戶的成百上千倍,而ip hash策略恰恰是按照ip來劃分流量,因此造成上述后果也就自然而然了。

  4. 總結與展望

  通過實際的對比測試,我們對nginx各個負載均衡策略進行了驗證。下面從均衡性、一致性、容災性以及適用場景等角度對比各種策略。

  以上從源碼和實際的測試數據角度分析說明了nginx負載均衡的策略,并給出了各種策略適合的應用場景。通過本文的分析不難發現,無論哪種策略都不是萬金油,在具體的場景下應該選擇哪種策略一定程度上依賴于使用者對這些策略的熟悉程度。希望本文的分析和測試數據能夠對讀者有所幫助,更希望有越來越多、越來越好的負載均衡策略產出。

  5. 參考資料

  http://wiki.nginx.org/HttpUpstreamConsistentHash

  http://wiki.nginx.org/HttpUpstreamFairModule

  http://wiki.nginx.org/HttpUpstreamRequestHashModule

  http://www.web-polygraph.org/

  http://nginx.org/

原文轉自:http://blogread.cn/it/article/5608?f=wb2

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97