Рейтинг:0

HAProxy с тем же запросом иногда отвечает NOSRV, когда бэкенд работает

флаг tr

Я делаю тот же запрос (POST /user/oauth) к haproxy, но иногда я получаю 503, отправка запросов напрямую на сервер всегда работает

вот логи:

  1. local_server~ app/s2 0/0/0/100/100 200 813 - - --VN 1/1/0/0/0 0/0 "POST/пользователь/Oauth HTTP/1.1"
  2. local_server~ app/s1 0/0/1/107/108 200 820 - - --NI 1/1/0/0/0 0/0 "POST/пользователь/Oauth HTTP/1.1"
  3. local_server~ app/NOSRV 0/-1/-1/-1/0 503 216 - - SCNN 1/1/0/0/0 0/0 "POST /пользователь/oauth HTTP/1.1"
  4. local_server~ app/NOSRV 0/-1/-1/-1/0 503 216 - - SCNN 1/1/0/0/0 0/0 "POST /пользователь/oauth HTTP/1.1"
  5. local_server~ app/s2 0/0/1/106/107 200 831 - - --NI 2/2/0/0/0 0/0 "POST/пользователь/Oauth HTTP/1.1"
  6. local_server~ app/s1 0/0/1/3/6206 101 337 - - --NI 3/3/1/1/0 0/0 "ПОЛУЧИТЬ / HTTP/1.1"
  7. local_server~ app/s1 0/0/1/83/84 200 258 - - --VN 2/2/0/0/0 0/0 "POST /transaction/concludeTransaction HTTP/1.1"
  8. local_server~ app/NOSRV 0/-1/-1/-1/0 503 216 - - SCNN 1/1/0/0/0 0/0 "POST /пользователь/oauth HTTP/1.1"
  9. local_server~ app/s2 0/0/1/107/108 200 831 - - --NI 1/1/0/0/0 0/0 "POST/пользователь/Oauth HTTP/1.1"

как вы можете видеть, POST /user/oauth иногда переходит к s1, иногда к s2, а иногда к NOSRV.

иногда он проходит 10 раз подряд, а иногда не работает 10 раз подряд.

вот мой конфиг:

значения по умолчанию
журнал глобальный
режим http
опция httplog
опция
тайм-аут подключения 10000
тайм-аут клиента 50000
тайм-аут сервера 50000
повторяет 3
файл ошибок 400 /etc/haproxy/errors/400.http
файл ошибок 403 /etc/haproxy/errors/403.http
файл ошибок 408 /etc/haproxy/errors/408.http
файл ошибок 500 /etc/haproxy/errors/500.http
файл ошибок 502 /etc/haproxy/errors/502.http
файл ошибок 503 /etc/haproxy/errors/503.http
файл ошибок 504 /etc/haproxy/errors/504.http

внешний локальный_сервер
привязка *:8080 ssl crt /etc/letsencrypt/live/xxx/sslcert.pem
режим http
default_backend приложение

серверное приложение
баланс круговой
cookie SERVERID вставить косвенный nocache
http-send-name-header Хост
сервер s1 172.26.13.134:3000 проверить куки s1
сервер s2 172.26.13.134:3000 проверить куки s2
http-запрос добавить заголовок X-сервера %b

Редактировать:

я перенаправил запрос на быстрый сервер Python, работающий на локальном хосте, и проблема не устранена. поэтому я отредактировал файл конфигурации haproxy, чтобы только сервер s1 127.0.0.1:8086 проверял cookie s1.

и запустите скрипт Python: python3 -m http.server 8086 --bind 127.0.0.1&

когда я ударил почтальона, я получил 3 succ подряд, чем 503.

richv avatar
флаг in
может быть хорошей идеей добавить проверку работоспособности на ваши узлы https://www.haproxy.com/blog/how-to-enable-health-checks-in-haproxy/ ... вы можете сравнить эти временные метки NOSERV с отключенным узлом время и посмотреть, не работают ли оба узла в то время, когда вы получаете ответ NOSERV
флаг tr
это уже есть "проверить", также вызов непосредственно узла всегда работает, и узлы никогда не отключаются. когда я делаю вызов API от почтальона, я получаю эти случайные 503
Рейтинг:0
флаг tr

Я считаю, что проблема в версии, я где-то читал, что версия 1.9 работает лучше, чем 2. * я скачал исходный код и скомпилировал со следующими параметрами make TARGET=linux-glibc USE_PCRE2=1 USE_PCRE2_JIT=1 USE_OPENSSL=1 USE_ZLIB=1 USE_REGPARAM=1 USE_SYSTEMD=1 USE_THREAD=1

как вы можете видеть, я намеренно пропустил параметр lua5, который является единственным отличием от того, который вы получаете от apt-get install.

полученный бинай работает очень хорошо без каких-либо проблем

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.