기본 설정
우리는 한 쌍의 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 설정을 끄면 이러한 문제가 사라졌습니다.
우리는 지금 이 문제의 원인이 무엇인지 알아내려고 노력하고 있습니다. 규모가 클 수도 있고(그럴 것 같지도 않습니다), 아니면 어딘가(어디?)에 구성이 잘못되어 있는 걸까요?
어떤 도움이라도 대단히 감사하겠습니다.
루벤