Pemeriksaan Pasif
Untuk pemeriksaan kesihatan pasif, nginx dan nginx serta memantau peristiwa semasa ia berlaku dan cuba memulihkan sambungan yang gagal. Jika itu masih tidak berfungsi, sumber terbuka nginx dan nginx plus akan menandakan pelayan sebagai tidak tersedia dan berhenti menghantar permintaan kepadanya buat sementara waktu sehingga ia ditandakan aktif semula.
Syarat di mana pelayan huluan ditandakan sebagai tidak tersedia ditakrifkan untuk setiap pelayan huluan dengan parameter huluan arahan pelayan dalam blok:
fail_timeout - set tanda pelayan Masa berbilang percubaan gagal mesti dibuat jika tidak tersedia, dan masa pelayan ditandakan sebagai tidak tersedia (lalai ialah 10 saat).
max_fails - Menetapkan bilangan percubaan gagal yang mesti berlaku semasa fail_timeout sebelum pelayan ditandakan sebagai tidak tersedia (lalai ialah 1 percubaan). Dalam contoh berikut, jika nginx gagal menghantar permintaan kepada pelayan atau tidak menerima respons 3 kali dalam masa 30 saat, ini bermakna pelayan tidak tersedia dalam masa 30 saat:
upstream backend { server backend1.example.com; server backend2.example.com max_fails=3 fail_timeout=30s; }
Perkara yang perlu diberi perhatian Ya, jika hanya terdapat satu kumpulan pelayan, parameter fail_timeout dan max_fails diabaikan dan pelayan tidak sekali-kali ditandakan sebagai tidak tersedia.
Permulaan Lambat Pelayan
Pelayan yang dipulihkan baru-baru ini boleh dibanjiri sambungan dengan mudah, yang mungkin menyebabkan pelayan ditandakan sebagai tidak tersedia lagi. Permulaan perlahan membolehkan pelayan huluan memulihkan beratnya secara beransur-ansur daripada sifar kepada nilai nominalnya selepas ia pulih atau tersedia. Ini boleh dilakukan dengan menyatakan parameter slow_start modul pelayan huluan:
upstream backend { server backend1.example.com slow_start=30s; server backend2.example.com; server 192.0.0.1 backup; }
Nota: Jika terdapat hanya satu pelayan dalam kumpulan, parameter slow_start akan diabaikan dan pelayan tidak akan sekali-kali ditandakan sebagai tidak tersedia. Permulaan perlahan ialah ciri proprietari nginx plus
semakan aktif nginx plus
nginx plus boleh melakukan ini dengan menghantar permintaan pemeriksaan kesihatan khas ke setiap pelayan dan Periksa kesihatan pelayan huluan secara berkala dengan mengesahkan respons yang betul.
Untuk membolehkan pemeriksaan kesihatan aktif:
1 Dalam proses menghantar permintaan (proxy_pass) kepada kumpulan huluan di blok lokasi, sertakan arahan health_check:
server { location / { proxy_pass http://backend; health_check; } }
Coretan ini mentakrifkan pelayan yang sepadan dengan semua permintaan ke lokasi / kumpulan huluan yang dihantar ke hujung belakang panggilan. Ia juga membolehkan pemantauan kesihatan lanjutan menggunakan arahan health_check: Secara lalai, nginx plus menghantar permintaan "/" kepada setiap pelayan dalam bahagian belakang kumpulan setiap lima saat.
Pemeriksaan kesihatan gagal jika berlaku sebarang ralat komunikasi atau tamat masa (kod status yang dikembalikan oleh pelayan adalah di luar julat 200-399). Pelayan ditandakan sebagai tidak sihat dan nginx plus tidak akan menghantar permintaan pelanggan kepadanya sehingga ia lulus pemeriksaan kesihatan semula.
Pilihan pilihan lain: Anda boleh menentukan port lain untuk pemeriksaan kesihatan, contohnya, untuk memantau kesihatan banyak perkhidmatan pada hos yang sama. Gunakan parameter port arahan untuk menentukan health_check port baharu:
server { location / { proxy_pass http://backend; health_check port=8080; } }
2 Dalam kumpulan pelayan huluan, gunakan arahan zon untuk menentukan kawasan memori kongsi:
http { upstream backend { zone backend 64k; server backend1.example.com; server backend2.example.com; server backend3.example.com; server backend4.example.com; } }
. Kawasan ini adalah antara semua proses pekerja yang dikongsi di kalangan kumpulan huluan dan menyimpan konfigurasi kumpulan huluan. Ini membolehkan proses pekerja menggunakan set kaunter yang sama untuk menjejak respons daripada pelayan dalam kumpulan.
Nilai lalai untuk pemeriksaan kesihatan aktif boleh ditindih menggunakan argumen kepada arahan health_check:
location / { proxy_pass http://backend; health_check interval=10 fails=3 passes=2; }
Di sini, argumen selang meningkatkan kelewatan antara pemeriksaan kesihatan daripada lalai 5 saat kepada 10 Saat . Parameter gagal memerlukan pelayan gagal tiga pemeriksaan kesihatan untuk menandakannya sebagai tidak sihat (bermula dari nilai lalai). Akhir sekali, parameter pas bermakna pelayan mesti lulus dua semakan berturut-turut sebelum boleh ditanda sihat semula, bukannya nilai lalai.
Nyatakan url yang diminta
Nyatakan parameter uri dalam arahan health_check untuk menetapkan laluan permintaan pemeriksaan kesihatan:
location / { proxy_pass http://backend; health_check uri=/some/path; }
Uri yang ditentukan Akan dilampirkan pada nama domain pelayan atau alamat IP yang ditetapkan untuk pelayan di blok huluan. Untuk pelayan pertama dalam kumpulan sampel bahagian belakang yang diisytiharkan di atas, pemeriksaan kesihatan meminta uri http://backend1.example.com/some/path.
Tentukan syarat tersuai
Anda boleh menetapkan syarat tersuai yang mesti dipenuhi oleh respons agar pelayan lulus pemeriksaan kesihatan. Syarat ditakrifkan dalam blok padanan, yang dirujuk dalam hujah arahan health_check.
1. Pada peringkat http {}, nyatakan padanan {} blok dan namakannya, sebagai contoh: 'server_ok'
http { #... match server_ok { # tests are here } }
2.health_check dengan menyatakan parameter padanan blok dan padanan Nama blok parameter:
http { #... match server_ok { status 200-399; body !~ "maintenance mode"; } server { #... location / { proxy_pass http://backend; health_check match=server_ok; } } }
Pemeriksaan kesihatan lulus jika kod status respons berada dalam julat 200-399 dan badannya tidak mengandungi rentetan: 'mod penyelenggaraan'
Arahan padanan membolehkan nginx plus menyemak kod status, medan pengepala dan badan respons. Gunakan arahan ini untuk mengesahkan bahawa status berada dalam julat yang ditentukan, bahawa respons mengandungi pengepala atau bahawa pengepala atau badan sepadan dengan ungkapan biasa. Arahan padanan boleh mengandungi syarat status, keadaan badan dan berbilang syarat tajuk. Respons mesti memenuhi semua syarat yang ditetapkan dalam blok perlawanan untuk pelayan lulus pemeriksaan kesihatan.
例如,下面的 match 指令匹配有状态代码响应 200,精确值 text/html 的content-type 标题,页面中的文字:'welcome to nginx!'.
match welcome { status 200; header content-type = text/html; body ~ "welcome to nginx!"; }
以下示例使用感叹号(!)来定义响应不得通过运行状况检查的特征。在这种情况下,健康检查在非 301,302,303,或 307状态码,同时并没有 refresh 头信息时将通过检查,。
match not_redirect { status ! 301-303 307; header ! refresh; }
健康检查可以在其他非 http 协议中启用, 例如 fastcgi, , scgi, 甚至 tcp 和 udp。
很多很好的特性,就是需要 nginx plus 才能使用。
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi pemeriksaan kesihatan http Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!