基於滴滴雲DC2+Nginx搭建負載均衡方案

java06051515發表於2018-11-14

Nginx是一款輕量級、高效能的Web伺服器,專為高流量應用場景而設計。

本文主要介紹它的健康檢查和負載均衡機制。健康檢查和負載均衡是相輔相成,健康檢查能夠及時標記出服務異常的後端RS,使得資料面負載到可用的RS上,提高系統的可靠性和高可用。

Nginx支援豐富的第三方模組,這裡示例以ngx_http_upstream_round_robin(簡稱RR)做為負載均衡模組,以ngx_http_proxy_module(檢查proxy)作為後端代理模組。

健康檢查有兩種方式:

1)ngx_http_proxy_module模組和ngx_http_upstream_module模組(這是Nginx自帶模組)

2)nginx_upstream_check_module模組(淘寶技術團隊開發)

Nginx的upstream目前支援5種方式的負載演算法:

  • 輪詢(預設)

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除

  • weight

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況

  • ip_hash

每個請求按訪問ip的hash結果分配,每個訪客固定訪問一個後端伺服器,可以解決session的問題

  • fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配

  • url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效

部署步驟

在滴滴雲官網,可以申請多個DC2例項,節省費用:

場景說明

比如,這裡示例四個滴滴雲DC2例項分別為:10.255.10.12(Client)、10.255.44.122(Nginx Proxy)、10.255.15.111(RS1)、10.255.24.133(RS2),這裡的滴滴雲DC2例項需要處在同一個VPC即可,不必同一子網。

配置Nginx負載均衡和健康檢查功能

透過yum install nginx就可以在DC2例項內安裝Nginx服務,Nginx預設是以 conf/nginx.conf作為啟動配置的,我們可以根據自己的需求在nginx.conf(預設路徑是/etc/nginx/nginx.conf)中配置負載均衡和健康檢查。

nginx.conf內容如下(Note:以下所有配置僅僅為測試所用,不代表線上環境真實所用,真正的線上環境需要更多配置和最佳化):

修改配置檔案後,nginx -s reload平滑重啟Nginx,即可生效。

ngx_http_upstream_check_module

該模組可以為Tengine提供主動式後端伺服器健康檢查的功能,該模組在Tengine-1.4.0版本以前沒有預設開啟,它可以在配置編譯選項的時候開啟:./configure --with-http_upstream_check_module

透過curl ,檢視健康檢查狀態:

小結:

滴滴云為使用者提供了SLB,給使用者提供了高可用和高可靠性的負載均衡產品,使用者也可以自己選擇使用Nginx搭建自定義的網路,Nginx提供了豐富的第三方模組,部署靈活,基於DC2+Nginx搭建負載均衡網路也是不錯的選擇。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2219923/,如需轉載,請註明出處,否則將追究法律責任。

相關文章