Назад | Перейти на главную страницу

Разорвано соединение с 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 (что-либо с телом запроса> 50kBytes) не работают, поскольку соединение, очевидно, разрывается между HAProxy и внутренними Apache.

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

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

Любая помощь будет принята с благодарностью.

Рубен