Dukungan Stream Hulu Pemeriksaan Kesehatan (TCP/UDP/HTTP), dan berikan antarmuka HTTP untuk mendapatkan status backend-server "
Modul ini dapat memberikan NGINX dengan pemeriksaan kesehatan server backend aktif (Jenis Cek mendukung 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 berlaku ../ngx_stream_upstream_check_module/nginx-stable-1.12+.patch
./auto/configure --with-stream --add-module = ../ngx_stream_upstream_check_module/
buat && buat instal
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 ;
}
}
}Sintaksis:
Periksa interval = milidetik [fall = count] [rise = count] [timeout = milidetik] [default_down = true | false] [type = tcp | udp | http] [port = check_port]
Default: Interval = 30000 Fall = 5 Rise = 2 Timeout = 1000 Default_down = True Type = TCP
Konteks: Stream/Hulu
Perintah ini dapat mengaktifkan fungsi pemeriksaan kesehatan dari server backend.
Interval: Interval antara paket pemeriksaan kesehatan yang dikirim ke backend.
Fall (Fall_Count): Jika jumlah kegagalan berturut -turut mencapai Fall_count, server dianggap turun.
Rise (rise_count): Jika jumlah keberhasilan mencapai Rise_Count, server dianggap Naik.
Timeout: Timeout dari permintaan kesehatan backend.
Default_down: Menetapkan status server di awal. Jika itu benar, itu berarti defaultnya turun. Jika salah, sudah habis. Nilai standarnya benar, yang berarti bahwa server awalnya percaya bahwa itu tidak tersedia, dan itu hanya akan dianggap sehat setelah paket pemeriksaan kesehatan mencapai sejumlah waktu yang sukses.
Jenis: Jenis Paket Pemeriksaan Kesehatan, sekarang mendukung jenis berikut
Port: Tentukan port periksa server backend. Anda dapat menentukan port server backend yang berbeda dari layanan nyata. Misalnya, backend menyediakan aplikasi dengan port 443. Anda dapat memeriksa status port 80 untuk menentukan status kesehatan backend. Standarnya adalah 0, yang berarti sama dengan port yang disediakan oleh server backend.
Sintaks: check_keepalive_requests request_num
Default: 1
Konteks: Stream/Hulu
Instruksi ini dapat mengonfigurasi jumlah permintaan yang dikirim oleh koneksi, dan nilai defaultnya adalah 1, yang berarti bahwa Nginx menutup koneksi setelah menyelesaikan satu permintaan.
Sintaks: check_http_send http_packet
Default: "get / http / 1.0 r n r n"
Konteks: Stream/Hulu
Petunjuk ini dapat mengonfigurasi konten permintaan yang dikirim oleh Paket Pemeriksaan Kesehatan HTTP. Untuk mengurangi jumlah data yang dikirimkan, disarankan untuk menggunakan metode "kepala".
Saat menggunakan koneksi panjang untuk pemeriksaan kesehatan, Anda perlu menambahkan header permintaan tetap hidup ke perintah ini, seperti: "head / http / 1.1 r nconnection: Keep-Alive r n r n". Pada saat yang sama, saat menggunakan metode "Dapatkan", ukuran URI yang diminta tidak boleh terlalu besar untuk memastikan bahwa itu dapat ditransfer dalam 1 interval, jika tidak, itu akan dianggap sebagai pengecualian server atau jaringan backend dengan modul pemeriksaan kesehatan.
Sintaks: check_http_expect_alive [http_2xx | http_3xx | http_4xx | http_5xx]
Default: http_2xx | http_3xx
Konteks: Stream/Hulu
Petunjuk ini menentukan status keberhasilan balasan HTTP, dan secara default, status 2xx dan 3xx dianggap sehat.
Sintaks : ukuran check_shm_size
Default : 1m
Contex : Stream
Semua status pemeriksaan kesehatan server backend disimpan dalam memori bersama, dan instruksi ini dapat mengatur ukuran memori bersama. Standarnya adalah 1m. Jika Anda memiliki lebih dari 1.000 server dan memiliki kesalahan selama konfigurasi, Anda mungkin perlu memperluas ukuran memori.
Sintaks: l4check_status [html | csv | json]
Default: l4check_status html
Konteks: HTTP/Server/Lokasi