Разрыв соединения с HAProxy в режиме TCP + «прозрачный клиентский IP»

Разрыв соединения с HAProxy в режиме TCP + «прозрачный клиентский IP»

Базовая настройка

Мы запускаем HAProxy в паре коробок PFsense. Спереди мы обслуживаем кучу 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 к балансировщикам нагрузки проходят нормально. Но запросы POST (все, что имеет тело запроса > 50 кбайт) не проходят, поскольку соединение, по-видимому, разрывается между HAProxy и бэкэнд-апачами.

В лабораторной среде нам не удалось воспроизвести это. Но в производстве эти проблемы исчезли, когда мы отключили прозрачную настройку клиентского IP.

Сейчас мы пытаемся выяснить, что может быть причиной этого. Может ли это быть большой (сомневаюсь) или это какая-то неправильная конфигурация где-то (где?).

Любая помощь будет высоко оценена.

рубен

Связанный контент