การสนับสนุนสตรีมการตรวจสุขภาพอัปสตรีม (TCP/UDP/HTTP) และให้อินเทอร์เฟซ HTTP เพื่อรับสถานะแบ็กเอนด์เซิร์ฟเวอร์ "
โมดูลนี้สามารถให้การตรวจสอบสุขภาพเซิร์ฟเวอร์แบ็กเอนด์ที่ใช้งาน Nginx (ตรวจสอบประเภทการตรวจสอบรองรับ TCP/UDP/HTTP)
git clone https://github.com/zhouchangxun/nginx/nginx.git git โคลน 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-tream-Add-Module = ../ngx_stream_upstream_check_module/
ทำ && ทำให้ติดตั้ง
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 ;
}
}
}ไวยากรณ์:
ตรวจสอบช่วงเวลา = มิลลิวินาที [fall = count] [rise = count] [หมดเวลา = มิลลิวินาที] [default_down = true | false] [type = tcp | udp | http] [port = check_port]
ค่าเริ่มต้น: Interval = 30000 Fall = 5 Rise = 2 TimeOut = 1000 default_down = type 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 ปิดการเชื่อมต่อหลังจากเสร็จสิ้นการร้องขอหนึ่งครั้ง
ไวยากรณ์: check_http_send http_packet
ค่าเริ่มต้น: "get / http / 1.0 r n r n"
บริบท: สตรีม/ต้นน้ำ
คำสั่งนี้สามารถกำหนดค่าเนื้อหาคำขอที่ส่งโดย HTTP Health Check Packet เพื่อลดปริมาณข้อมูลที่ส่งขอแนะนำให้ใช้วิธี "หัว"
เมื่อใช้การเชื่อมต่อที่ยาวนานสำหรับการตรวจสุขภาพคุณต้องเพิ่มส่วนหัวคำขอเก็บรักษาไว้ในคำสั่งนี้เช่น: "head / http / 1.1 r nconnection: Keep-Alive r n r n" ในเวลาเดียวกันเมื่อใช้วิธี "รับ" ขนาดของ 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/เซิร์ฟเวอร์/ที่ตั้ง