アップストリームヘルスチェック(TCP/UDP/HTTP)をサポートし、BackEnd-Serverステータスを取得するためのHTTPインターフェイスを提供します」
このモジュールは、NGINXにアクティブなバックエンドサーバーの健康チェックを提供できます(チェックタイプTCP/UDP/HTTPをサポート)。
git clone https://github.com/zhouchangxun/nginx/nginx.git git clone https://github.com/zhouchangxun/ngx_stream_upstream_check_module.git
cd nginx/; Git Apply ../NGX_STREAM_UPSTREAM_CHECK_MODULE/NGINX-STABLE-1.12+.PATCH
./auto/configure -with-stream -add-module = ../ngx_stream_upstream_check_module/
&& make install
stream {
upstream tcp - cluster {
# simple round-robin
server 192.168 .0 .1 : 22 ;
server 192.168 .0 . 2 : 22 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 default_down = true type = tcp ;
}
upstream udp - cluster {
# simple round-robin
server 192.168 .0 .3 : 53 ;
server 192.168 .0 . 4 : 53 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 default_down = true type = udp ;
}
upstream http - cluster {
# simple round-robin
server 192.168 .0 .5 : 80 ;
server 192.168 .0 . 6 : 80 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 type = http ;
check_keepalive_requests 100 ;
check_http_send "HEAD / HTTP/1.1 r n Connection: keep-alive r n r n " ;
check_http_expect_alive http_2xx http_3xx ;
}
server {
listen 522 ;
proxy_pass tcp - cluster ;
}
server {
listen 53 ;
proxy_pass udp - cluster ;
}
server {
listen 8080 ;
proxy_pass http - cluster ;
}
}
http {
server {
listen 80 ;
location / status {
l4check_status ;
}
}
}構文:
間隔= milliseconds [fall = count] [rise = count] [timeout = milliseconds] [default_down = true | false] [type = tcp | udp | http] [port = check_port]
デフォルト:インターバル= 30000転倒= 5 Rise = 2 Timeout = 1000 Default_Down = True Type = TCP
コンテキスト:ストリーム/アップストリーム
このコマンドは、バックエンドサーバーのヘルスチェック機能をオンにすることができます。
間隔:バックエンドに送信されたヘルスチェックパケット間の間隔。
fall(fall_count):連続した障害の数がfall_countに到達した場合、サーバーはダウンと見なされます。
Rise(Rise_Count):成功の数がRise_Countに達した場合、サーバーは上がっていると見なされます。
タイムアウト:バックエンドヘルスリクエストのタイムアウト。
default_down:最初にサーバーステータスを設定します。それが本当なら、それはデフォルトがダウンしていることを意味します。それが偽の場合、それはアップです。デフォルト値は真です。つまり、サーバーは最初は利用できないと考えており、健康チェックパッケージが特定の数の成功した時間に達した後にのみ健康と見なされます。
タイプ:ヘルスチェックパッケージの種類、次のタイプをサポートするようになりました
ポート:バックエンドサーバーのチェックポートを指定します。実際のサービスとは異なるバックエンドサーバーのポートを指定できます。たとえば、バックエンドはポート443のアプリケーションを提供します。ポート80のステータスを確認して、バックエンドの健康状態を決定できます。デフォルトは0です。これは、バックエンドサーバーが提供するポートと同じことを意味します。
構文:check_keepalive_requests request_num
デフォルト:1
コンテキスト:ストリーム/アップストリーム
この命令は、接続によって送信されるリクエストの数を構成でき、デフォルト値は1です。つまり、Nginxは1つのリクエストを完了した後に接続を閉じます。
構文:check_http_send http_packet
デフォルト:「get / http / 1.0 r n r n」
コンテキスト:ストリーム/アップストリーム
この指令は、HTTP Health Checkパケットによって送信された要求コンテンツを構成できます。送信されるデータの量を減らすために、「ヘッド」メソッドを使用することをお勧めします。
ヘルスチェックに長い接続を使用する場合、「head / http / 1.1 r nconnection:keep-alive r n r n」など、このコマンドにキープアライブリクエストヘッダーを追加する必要があります。同時に、「GET」メソッドを使用する場合、要求されたURIのサイズが1つの間隔内で転送できるように大きすぎてはいけません。そうしないと、ヘルスチェックモジュールによってバックエンドサーバーまたはネットワーク例外と見なされます。
構文:check_http_expect_alive [http_2xx | http_3xx | http_4xx | http_5xx]
デフォルト:http_2xx | http_3xx
コンテキスト:ストリーム/アップストリーム
この指令は、HTTP返信の成功ステータスを指定し、デフォルトでは2XXと3XXのステータスが健全であると見なされます。
構文:CHECK_SHM_SIZEサイズ
デフォルト:1m
contex :ストリーム
すべてのバックエンドサーバーの健康チェックステータスは共有メモリに保存され、この命令は共有メモリのサイズを設定できます。デフォルトは1Mです。構成中に1,000を超えるサーバーがあり、エラーがある場合は、メモリのサイズを拡張する必要がある場合があります。
構文:l4check_status [html | csv | json]
デフォルト:L4Check_Status HTML
コンテキスト:HTTP/サーバー/場所