Nginx健康檢查模塊

在本小節咱們介紹一個用於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。

相關文章
相關標籤/搜索