HAProxy 및 Golang Fiber 인스턴스의 상태 확인 실패 및 502 오류

HAProxy 및 Golang Fiber 인스턴스의 상태 확인 실패 및 502 오류

서버 A가 클라이언트 역할을 하고 HAProxy를 통해 서버 B와 통신하는 설정이 있습니다. 서버 B는 4개의 유사한 Golang Fiber 인스턴스를 실행하며, 각 인스턴스에는 EC2 t3xlarge 인스턴스에서 Prefork가 활성화되어 있습니다. 서버 B는 초당 수천 개의 요청을 처리합니다. 그러나 상태 확인 문제와 HAProxy에서 반환된 502 오류가 발견되었습니다. 이는 상태 확인 실패를 나타낼 가능성이 높습니다.

프런트엔드 구성:

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

관찰:

  1. 모든 서버가 예상보다 여러 번 상태 확인에 실패합니다.
  2. 서버 A의 로그에 표시된 것처럼 HAProxy에서 자주 502 오류가 반환됩니다.

질문:

  1. 이 설정에서는 빈번한 상태 확인 실패 및 502 오류의 관찰된 동작이 예상됩니까?
  2. 상태 확인 실패의 근본 원인을 파악하고 문제를 해결하는 방법이 있습니까?
  3. 상태 확인의 신뢰성을 향상하고 502 오류를 줄이기 위해 어떤 조정이나 미세 조정을 할 수 있습니까?
  4. 서버 설정 구성을 처음 접하는 경우 고려해야 할 모범 사례나 추가 확인 사항이 있습니까?

이 문제 해결에 대한 통찰력이나 지침을 주시면 감사하겠습니다. 또한 도움이 될 설정에 대한 추가 세부정보를 제공할 준비가 되어 있습니다. 감사합니다!

관련 정보