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

На серверах запущено кілька додатків на апаш / пасажир.

Поєднання httpchk та enable-on-404 дозволяє граціозно відключити та видалити сервер із фунта досить легко, в той же час мати можливість безпосередньо отримати доступ (тобто для тестування).

Я намагаюся налаштувати спостереження, щоб відключити сервер, коли програма не працює. Я порушив конфігурацію програми на staging02, тому вона завжди повертає 500. Це правильно позначено DOWN після перших 500, але потім позначено UP на наступному 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 Bakend і додати їх до свого питання?
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.