在本小節咱們介紹一個用於Nginx對後端UpStream集羣節點健康狀態檢查的第三方模塊:nginx_upstream_check_module(https://github.com/yaoweibin/nginx_upstream_check_module)。這個模塊有資料介紹是TaoBao團隊開發的,可是我在GitHua上試圖求證時並無找到直接證據。mysql
這裏須要說明的是,目前有不少Nginx模塊實現Nginx對後端集羣節點的健康監測,不止nginx_upstream_check_module。Nginx官方有一個模塊healthcheck_nginx_upstreams也能夠實現對後端節點的健康監測(https://github.com/cep21/healthcheck_nginx_upstreams有詳細的安裝和使用介紹)linux
咱們回到對nginx_upstream_check_module的講解,要使用這個第三方模塊首先您須要進行下載,而後經過patch命令將補丁打入您原有的Nginx源碼中,而且從新進行編譯安裝。下面咱們來重點講解一下這個模塊的安裝和使用。nginx
下載nginx_upstream_check_module模塊:git
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master 您也能夠直接到GitHua上進行下載,還一個在linux系統上使用git命令進行下載。
解壓安裝,並補丁打入Nginx源碼github
# unzip ./nginx_upstream_check_module-master.zip 注意是將補丁打入Nginx源碼,不是Nginx的安裝路徑: # cd ./nginx-1.6.2 # patch -p1 < ../nginx_upstream_check_module-master/check_1.5.12+.patch 若是補丁安裝成功,您將看到如下的提示信息: patching file src/http/modules/ngx_http_upstream_ip_hash_module.c patching file src/http/modules/ngx_http_upstream_least_conn_module.c patching file src/http/ngx_http_upstream_round_robin.c patching file src/http/ngx_http_upstream_round_robin.h 這裏請注意:在nginx_upstream_check_module官網的安裝說明中,有一個打補丁的注意事項: If you use nginx-1.2.1 or nginx-1.3.0, the nginx upstream round robin module changed greatly. You should use the patch named 'check_1.2.1.patch'. If you use nginx-1.2.2+ or nginx-1.3.1+, It added the upstream least_conn module. You should use the patch named 'check_1.2.2+.patch'. If you use nginx-1.2.6+ or nginx-1.3.9+, It adjusted the round robin module. You should use the patch named 'check_1.2.6+.patch'. If you use nginx-1.5.12+, You should use the patch named 'check_1.5.12+.patch'. If you use nginx-1.7.2+, You should use the patch named 'check_1.7.2+.patch'. 這裏咱們的Nginx的版本是1.6.2,那麼就應該打入check_1.5.12+.patch這個補丁
從新編譯安裝Nginx:sql
注意從新編譯Nginx,要使用add-module參數將這個第三方模塊安裝進去: # ./configure --prefix=/usr/nginx-1.6.2/ --add-module=../nginx_upstream_check_module-master/ # make && make install
經過以上的步驟,第三方的nginx_upstream_check_module模塊就在Nginx中準備好了。接下來咱們講解一下如何使用這個模塊。首先看一下upstream的配置信息:後端
upstream cluster { # simple round-robin server 192.168.0.1:80; server 192.168.0.2:80; check interval=5000 rise=1 fall=3 timeout=4000; #check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello; #check interval=3000 rise=2 fall=5 timeout=1000 type=http; #check_http_send "HEAD / HTTP/1.0\r\n\r\n"; #check_http_expect_alive http_2xx http_3xx; }
上面的代碼中,check部分就是調用nginx_upstream_check_module模塊的語法:安全
check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp|fastcgi]
interval:必要參數,檢查請求的間隔時間。服務器
fall:當檢查失敗次數超過了fall,這個服務節點就變成down狀態。tcp
rise:當檢查成功的次數超過了rise,這個服務節點又會變成up狀態。
timeout:請求超時時間,超過等待時間後,此次檢查就算失敗。
default_down:後端服務器的初始狀態。默認狀況下,檢查功能在Nginx啓動的時候將會把全部後端節點的狀態置爲down,檢查成功後,在置爲up。
type:這是檢查通訊的協議類型,默認爲http。以上類型是檢查功能所支持的全部協議類型。
check_http_send http_packet http_packet的默認格式爲:"GET / HTTP/1.0\r\n\r\n"
check_http_send設置,這個設置描述了檢查模塊在每次檢查時,向後端節點發送什麼樣的信息
check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]
這些狀態代碼表示服務器的HTTP響應上是OK的,後端節點是可用的。默認狀況的設置是:http_2xx | http_3xx
當您根據您的配置要求完成檢查模塊的配置後,請首先使用nginx -t 命令監測配置文件是否可用,而後在用nginx -s reload重啓nginx。
1.四、不得不提的tengine
Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺(http://tengine.taobao.org/)。
您應該懂了,我建議您根據業務的實際狀況,適時在生產環境引入Tengine。但在本博客發佈時,Tengine的2.X版本還不穩定,因此建議實用1.5.2的穩定版本。請記住Tengine就是通過升讀改造後的Nginx。