Kiểm tra sức khỏe HAProxy: sử dụng httpchk và quan sát?


10

Tôi đang sử dụng HAProxy 1.4.18 với cấu hình phụ trợ sau

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

Các máy chủ đang chạy nhiều ứng dụng trên apache / hành khách.

Sự kết hợp giữa httpchk và vô hiệu hóa trên 404 cho phép tắt máy một cách duyên dáng và loại bỏ một máy chủ khỏi lb khá dễ dàng trong khi vẫn có thể truy cập trực tiếp (tức là để thử nghiệm).

Tôi đang cố gắng thiết lập quan sát để vô hiệu hóa máy chủ khi ứng dụng không hoạt động. Tôi đã phá vỡ cấu hình ứng dụng trên staging02 để nó luôn trả về 500. Nó được đánh dấu chính xác XUỐNG sau 500 đầu tiên nhưng sau đó được đánh dấu LÊN tại httpchk tiếp theo.

Đây là tệp nhật ký:

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.

Có cách nào để kết hợp hai kiểm tra đó không?


Chỉ cần chắc chắn rằng HAProxy chắc chắn là vấn đề, bạn có thể tìm thấy ba dòng nhật ký phù hợp từ máy chủ Apache phụ trợ của bạn và thêm chúng vào câu hỏi của bạn không?
Ladadadada

Một trong những máy chủ apache bị cấu hình sai mục đích để tất cả các ứng dụng trên đó trả về mã lỗi 500. Tuy nhiên /check.txt luôn hoạt động trừ khi tôi xóa tệp. Tôi muốn máy chủ apache bị vô hiệu hóa nếu nó trả về 500 lỗi ngay cả khi tệp check.txt vẫn còn đó.
ouranos

Câu trả lời:


4

Sự khác biệt Tôi hiểu tại là /check.txt mà không thực sự trả về một phản ứng 200 nhưng tất cả các yêu cầu cho các ứng dụng trả về một HAProxy 500. thấy 500s trở lại từ các yêu cầu proxy và mất máy chủ ra khỏi hồ bơi nhưng sau đó khởi riêng của mình kiểm tra, nhận 200 và đặt máy chủ trở lại nhóm.

Giải pháp sẽ là thực hiện một trong:

  1. Định cấu hình Apache, thay vì ứng dụng, để mọi yêu cầu trả về 500 phản hồi, thậm chí cả tệp tĩnh /check.txt.
  2. Thay đổi /check.txtthành ứng dụng Ruby chứa logic vừa đủ để chọn giữa 200 và 500 phản hồi khi thích hợp.
  3. Đặt intergiá trị thành một cái gì đó vô lý như 3600. Điều này sẽ cho bạn một giờ để thực hiện thử nghiệm của bạn hoặc (nếu máy chủ tự khắc phục) tìm ra vấn đề và đưa nó trở lại.
  4. Đặt intergiá trị thành một cái gì đó nhỏ hơn như 60 nhưng đặt risegiá trị thành thứ gì đó cao hơn như 60. Điều này cũng sẽ cung cấp cho bạn một giờ trước khi máy chủ được thêm lại vào nhóm. (Lưu ý, hai cái này được liệt kê cuối cùng bởi vì chúng có thể là những ý tưởng rất xấu.)

Vâng, đó là những gì đang xảy ra. Tôi nghĩ rằng tôi sẽ phải loại bỏ /check.txtvà chỉ httpchk vào một ứng dụng. Các check.txttập tin được thuận tiện để nhanh chóng và duyên dáng loại bỏ một máy chủ từ tất cả các HAProxy (3 trong số họ trong thiết lập HA, chỉ có một hoạt động). Dường như disable serverkhông tồn tại giữa các lần tải lại.
ouranos
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.