การตรวจสุขภาพ HAProxy: ใช้ httpchk และสังเกต?


10

ฉันใช้ HAProxy 1.4.18 กับการกำหนดค่าแบ็กเอนด์ต่อไปนี้

backend staging
  option httpchk HEAD /check.txt HTTP/1.0
  http-check disable-on-404
  default-server error-limit 1 on-error mark-down
  server staging01 x.x.x.x:80 check observe layer7
  server staging02 x.x.x.x:80 check observe layer7

เซิร์ฟเวอร์กำลังเรียกใช้หลายแอปพลิเคชันบน apache / ผู้โดยสาร

การรวมกันของ httpchk และ disable-on-404 ช่วยให้สามารถปิดระบบได้อย่างนุ่มนวลและลบเซิร์ฟเวอร์ออกจาก lb ได้อย่างง่ายดายในขณะที่ยังสามารถเข้าถึงได้โดยตรง (เช่นสำหรับการทดสอบ)

ฉันพยายามตั้งค่าการสังเกตเพื่อปิดเซิร์ฟเวอร์เมื่อแอปพลิเคชันไม่ทำงาน ฉันกำหนดค่าแอปพลิเคชันบน staging02 แล้วดังนั้นจึงส่งคืน 500 เสมอมันถูกทำเครื่องหมายลงหลังจาก 500 แรก แต่แล้วทำเครื่องหมายขึ้นที่ httpchk ถัดไป

นี่คือล็อกไฟล์:

Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 2 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is UP, reason: Layer7 check passed, code: 200, info: "OK", check duration: 0ms. 2 active and 1 backup servers online. 0 sessions requeued, 0 total in queue.

มีวิธีรวมเช็คทั้งสองนี้หรือไม่


เพียงเพื่อให้แน่ใจว่า HAProxy เป็นปัญหาแน่นอนคุณสามารถค้นหาบันทึกการจับคู่สามบรรทัดจากเซิร์ฟเวอร์ Apache แบ็กเอนด์ของคุณและเพิ่มลงในคำถามของคุณหรือไม่
Ladadadada

หนึ่งในเซิร์ฟเวอร์ apache มีการกำหนดค่าผิดพลาดอย่างผิดพลาดเพื่อให้แอปพลิเคชันทั้งหมดในนั้นส่งคืนรหัสข้อผิดพลาด 500 อย่างไรก็ตาม /check.txt ใช้งานได้ทุกครั้งเว้นแต่ฉันจะลบไฟล์ ฉันต้องการให้เซิร์ฟเวอร์ apache ปิดใช้งานหากมีข้อผิดพลาด 500 ส่งคืนแม้ว่าไฟล์ check.txt ยังคงอยู่ที่นั่น
ouranos

คำตอบ:


4

ความแตกต่างที่ผมเข้าใจตอนนี้เป็น /check.txt ว่าไม่จริงกลับ 200 ตอบสนอง แต่คำขอทั้งหมดไปยังโปรแกรมประยุกต์กลับ 500 HAProxy เห็น 500s กลับมาจากการร้องขอพร็อกซีและใช้เซิร์ฟเวอร์ออกจากสระว่ายน้ำ แต่แล้วก็เริ่มต้นของตัวเอง ตรวจสอบรับ 200 และทำให้เซิร์ฟเวอร์กลับมาอยู่ในกลุ่ม

ทางออกจะต้องทำอย่างใดอย่างหนึ่ง:

  1. กำหนดค่า Apache มากกว่าการประยุกต์ใช้เพื่อให้ทุกคำขอส่งกลับตอบสนอง 500 /check.txtแม้แฟ้มแบบคงที่
  2. เปลี่ยน/check.txtเป็นแอพ Ruby ที่มีตรรกะเพียงพอที่จะเลือกระหว่างการตอบสนอง 200 ถึง 500 เมื่อเหมาะสม
  3. ตั้งinterค่าเป็นสิ่งที่ไร้สาระเช่น 3600 ซึ่งควรให้เวลาหนึ่งชั่วโมงในการทำการทดสอบของคุณหรือ (หากเซิร์ฟเวอร์ทำงานด้วยตัวเอง) จะช่วยแก้ปัญหาและนำกลับมาใช้ใหม่
  4. ตั้งinterค่าเป็นบางอย่างที่เล็กกว่าเช่น 60 แต่ตั้งriseค่าเป็นอะไรที่สูงกว่าเช่น 60 ซึ่งจะให้เวลาหนึ่งชั่วโมงก่อนที่เซิร์ฟเวอร์จะถูกเพิ่มกลับไปที่พูล (หมายเหตุทั้งสองรายการนี้อยู่ในอันดับสุดท้ายเพราะอาจเป็นแนวคิดที่ไม่ดี)

ใช่นั่นคือสิ่งที่เกิดขึ้น ฉันคิดว่าฉันจะต้องกำจัด/check.txtและชี้ httpchk ไปที่แอปพลิเคชันเดียว check.txtไฟล์เป็นประโยชน์ได้อย่างรวดเร็วและอย่างสง่างามลบเซิร์ฟเวอร์จากทุก HAProxy (3 ของพวกเขาในการตั้งค่า HA เพียงคนเดียวเท่านั้นที่ใช้งาน) ดูเหมือนว่าdisable serverจะไม่คงอยู่ระหว่างการโหลดซ้ำ
ouranos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.