Nginx 健康檢查

2021-09-04 05:59:32 字數 2065 閱讀 7123

nginx 的健康檢查這塊筆者在網上看了很多文章,基本都是零零散散的,講各種實現方式,沒有一篇能完整的講當下的 nginx 實現健康檢查的幾種方式,應該選哪一種來使用,於是筆者想總結一篇。

一、目前 nginx 支援兩種主流的健康檢查模式

主動檢查模式

nginx 服務端會按照設定的間隔時間主動向後端的 upstream_server 發出檢查請求來驗證後端的各個 upstream_server 的狀態。 如果得到某個伺服器失敗的返回超過一定次數,比如 3 次就會標記該伺服器為異常,就不會將請求**至該伺服器。

一般情況下後端伺服器需要為這種健康檢查專門提供乙個低消耗的介面。

被動檢查模式

nginx 在**請求過程中會自動的監測每個後端伺服器對請求的響應狀態,如果某個後端伺服器對請求的響應狀態在短時間內累計一定失敗次數時,nginx 將會標記該伺服器異常。就不會**流量給該伺服器。 不過每間隔一段時間 nginx 還是會**少量的一些請求給該後端伺服器來探測它的返回狀態。 以便識別該伺服器是否恢復。

後端伺服器不需要專門提供健康檢查介面,不過這種方式會造成一些使用者請求的響應失敗,因為 nginx 需要用一些少量的請求去試探後端的服務是否恢復正常。

二、目前使用 nginx 實現健康檢查的幾種方式

1.使用開源模組 nginx_upstream_check_module

這是我目前找到的讓原生 nginx 通過新增開源模組,免費實現主動健康檢查的唯一方法。 下面我會詳細介紹這種方式的安裝和配置過程

2.使用商業版 nginx plus

這種方法需要收費,可獲得技術支援

3.使用**開源的 tengine 代替 nginx

這種方式也免費,可行。

三、這裡我們演示第一種方法的實現,使用開源模組 nginx_upstream_check_module

作業系統環境:centos6.8 ,這裡預設已經安裝好了編譯所需的開發環境

1.安裝編譯 nginx 所需的軟體包

yum install pcre pcre-devel openssl openssl-devel -y
2.選擇 nginx 版本,編譯安裝(編譯前記得給 nginx 打對應補丁)
#!/bin/bash

tar xf nginx-1.14.0.tar.gz

unzip nginx_upstream_check_module-master.zip

cd nginx-1.14.0

# 打補丁,注意編譯前一定要有打補丁這步,不然新增的模組編譯不生效

make && make install

3.配置和應用
# nginx.conf

# 配置健康檢查的狀態監控頁

# check_status [html|csv|json]

# 也可以在請求監控頁的時候帶上引數以輸出不同的格式,/status?format=html | /status?format=csv | /status?format=json

location /status

location ~ /.svn/

access_log /alidata/log/nginx/access/evalue.log json;

}

nginx健康檢查

通常我們會使用nginx的ngx http upstream module模組來配置伺服器組,示例如下 upstream springboot server 在30s內 fail timeout,預設值為10s 與服務端通訊失敗2次 max fails,預設值為1,設定為0則認為服務端一直可用 則認...

nginx 健康檢查

upstream backend 處理過程 1 nginx 在 請求過程中會自動的監測每個後端伺服器對請求的響應狀態,如果某個後端伺服器對請求的響應狀態在短時間內累計一定失敗次數時,nginx 將會標記該伺服器異 常。就不會 流量給該伺服器。不過每間隔一段時間 nginx 還是會 少量的一些請求給該...

Nginx被動健康檢查和主動健康檢查

1.被動健康檢查 nginx自帶有健康檢查模組 ngx http upstream module,可以做到基本的健康檢查,配置如下 upstream cluster server nginx只有當有訪問時後,才發起對後端節點探測。如果本次請求中,節點正好出現故障,nginx依然將請求轉交給故障的節點...