Я занимаюсь настройкой ряда серверов в качестве прокси для нашего сервера приложений, в первую очередь для того, чтобы скрыть IP-адрес сервера приложений в рамках комплекса мер по борьбе с DDOS.
Моя цель состоит в том, чтобы HAProxy принимал краткосрочные соединения HTTP / 1.0 и перенаправлял их на бэкэнд через постоянные соединения, чтобы значительно сократить накладные расходы, теряемые в процессе соединения, медленный запуск и т. Д.
У меня эта конфигурация частично работает, но я все еще наблюдаю гораздо более высокую скорость подключения к бэкэнду, чем ожидалось - при расследовании выяснилось, что каждое бэкэнд-соединение обслуживает от 1 до 5 запросов, а затем сбрасывается стороной HAProxy.
Эти пакеты сброса всегда происходят после того, как полностью получен ответ от сервера, до отправки любого дальнейшего запроса, и они происходят после, казалось бы, случайной задержки - иногда до 0,1 с, иногда до 20 секунд. Изменение настроек тайм-аута HAProxy, похоже, не действует.
Кто-нибудь знает, что может вызвать такое поведение HAProxy или как мне лучше его отладить?
Редактировать: Забыл упомянуть, что мне не удалось заставить серверные части генерировать какие-либо значимые журналы, даже используя tcplog
Конфигурация (отредактировано):
global
log /dev/log local0
log /dev/log local1 notice
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
maxconn 16384
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
option http-keep-alive
timeout connect 5s
timeout client 50s
timeout server 50s
timeout http-keep-alive 50s
timeout http-request 30s
maxconn 4000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
# Temporary setting, egress is fragile w/ high rate of connections
default-server maxconn 200
frontend fe-web
bind 0.0.0.0:80
acl cloudflare src -f /etc/haproxy/cloudflare_ips
block if !cloudflare
use_backend be-web
frontend fe-legacy
bind 0.0.0.0:29080
option forwardfor header CF-Connecting-IP
use_backend be-legacy
backend be-web
server srv-web 46.105.16.9:34020 check
option httpchk HEAD / HTTP/1.1\r\nHost:\ legacy-domain
backend be-legacy
server srv-legacy 46.105.16.9:34020 check
option httpchk HEAD / HTTP/1.1\r\nHost:\ legacy-domain