利用nginx_upstream_check模塊檢查nginx代理後端存活

       在日常nginx的使用中,經常會出現upstream代理的後端服務器失效的情況,這會導致請求經常會流向失效的後端,導致訪問失敗。若想剔除掉已失效的後端,必須手動註釋或刪除配置,很是麻煩。利用nginx_upstream_check模塊,就可以避免這些問題。

      nginx_upstream_check模塊可以根據指定的檢查週期與參數定期檢查upstream後端的存活情況,若判定某一後端檢查失敗,則標記爲"DOWN"狀態,訪問流量則不再流向該失敗後端服務。


nginx添加nginx_upstream_check模塊:

1:下載模塊。git地址如下:https://github.com/yaoweibin/nginx_upstream_check_module

# unzip nginx_upstream_check_module-master.zip


2:根據nginx版本打補丁(我這裏使用的是nginx-1.12.1版本)。

# cd nginx-1.12.1
# patch -p1 < /usr/local/src/nginx_upstream_check_module-master/check_1.12.1+.patch


3:編譯、安裝nginx,添加上nginx_upstrem_check模塊。

# ./configure --prefix=/usr/local/nginx --user=nobody --group=nobody --add-module=/usr/local/src/nginx_upstream_check_module-master/
# make && make install


4:爲一個upstream服務組配置後端檢查。

upstream xxxxxx
{
    server 172.17.1.164:8080;
    server 172.17.3.164:8080;
    check interval=2000 rise=2 fall=2 timeout=1000 type=http;
    check_http_send "HEAD / HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx http_4xx;
}

其中參數的定義如下:

interval:檢查的週期

fall:允許的檢查失敗次數,若失敗次數超過該值,則後端被標記爲"down"。

rise:檢查的成功次數達到該值,則後端被標記爲“up”。

timeout:檢查的超時時間。

type:後端檢查的協議類型。


5:在某一個請求路徑下運用代理:

location / {
            root   html;
            index index.html index.htm;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host   $host:$server_port;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_pass  http://xxxxxx;
  }

6:開啓後端存活狀態頁面,便於查看後端狀態。

location /status {
            check_status;
            access_log   off;
    }

image.png

可以看到我現在的upstream服務組中,有一個後端是'up'狀態,有一個後端是'down'不可用狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章