TCP 모드 + "투명 클라이언트 IP"에서 HAProxy와의 연결이 끊어졌습니다.

TCP 모드 + "투명 클라이언트 IP"에서 HAProxy와의 연결이 끊어졌습니다.

기본 설정

우리는 한 쌍의 PFsense 상자에서 HAProxy를 실행하고 있습니다. 앞에는 여러 IP 주소를 제공하고 있으며, 각 IP 주소에 대해 그 뒤에는 한 쌍의 SSL 오프로더가 있습니다.

HAProxy는 둘 사이의 부하를 분산하는 데 사용됩니다. 구성은 대략 이렇습니다.

frontend FOO_FRONT_80
    bind            5.5.5.5:80 name 5.5.5.5:80  transparent 
    mode            tcp
    log             global
    maxconn         10000
    timeout client  30000
    use_backend FOO_BACK_80



backend FOO_BACK_80
    mode            tcp
    log             global
    option          log-health-checks
    balance         source
    timeout connect 30000
    timeout server  30000
    retries         3
    source ipv4@ usesrc clientip
    server          FOO_LB_001 10.0.0.21:80 check inter 10000  weight 100 
    server          FOO_LB_002 10.0.0.22:80 check inter 10000  weight 100 

이는 수만 개의 동시 연결을 제공하고 있습니다.

사진은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

문제

로드 밸런서에 대한 모든 일반 GET 요청은 OK를 거칩니다. 그러나 POST 요청(요청 본문이 50kBytes보다 큰 모든 것)은 그렇지 않습니다. HAProxy와 백엔드 Apache 사이의 연결이 끊어진 것 같습니다.

연구실 환경에서는 이를 재현할 수 없었습니다. 그러나 프로덕션에서는 투명 클라이언트 IP 설정을 끄면 이러한 문제가 사라졌습니다.

우리는 지금 이 문제의 원인이 무엇인지 알아내려고 노력하고 있습니다. 규모가 클 수도 있고(그럴 것 같지도 않습니다), 아니면 어딘가(어디?)에 구성이 잘못되어 있는 걸까요?

어떤 도움이라도 대단히 감사하겠습니다.

루벤

관련 정보