
У меня есть настройка, в которой сервер A выступает в качестве клиента, взаимодействуя с сервером B через HAProxy. Сервер B запускает четыре похожих экземпляра Golang Fiber, каждый с включенным Prefork на экземпляре EC2 t3xlarge. Сервер B обрабатывает тысячи запросов в секунду. Однако я заметил проблемы с проверками работоспособности и ошибки 502, возвращаемые HAProxy, что, вероятно, указывает на неудачные проверки работоспособности.
Конфигурация интерфейса:
frontend apifront
bind *:9898
maxconn 50000
mode http
log global
default_backend apiserver
Конфигурация бэкэнда:
backend apiserver
mode http
option http-keep-alive
timeout connect 5s
timeout server 30s
timeout queue 60s
timeout check 5s
timeout http-request 10s
timeout http-keep-alive 10s
http-reuse safe
log global
option httpchk GET /health
balance roundrobin
server apiserver1 localhost:9881 check
server apiserver2 localhost:9882 check
server apiserver3 localhost:9883 check
server apiserver4 localhost:9884 check
Наблюдения:
- Все серверы не проходят проверки работоспособности чаще, чем ожидалось.
- HAProxy часто возвращает ошибки 502, как видно из журналов сервера A.
Вопросы:
- Ожидается ли наблюдаемое поведение частых сбоев проверки работоспособности и ошибок 502 в данной настройке?
- Существуют ли способы устранения неполадок и определения первопричины сбоев проверки работоспособности?
- Какие корректировки или доработки можно внести для повышения надежности проверок работоспособности и сокращения количества ошибок 502?
- Какие рекомендации или дополнительные проверки мне, новичку в настройке серверов, следует учитывать?
Буду очень признателен за любые идеи или рекомендации по решению этой проблемы. Я также готов предоставить любые дополнительные сведения о моей настройке, которые помогут. Спасибо!