2013-11-13 3 views
2

мы получили странную проблему мы испытываем в течение нескольких месяцев:HAproxy: Keepalive соединения не сбалансированы равномерно

нагрузка на нашем кластере (HTTP, продолжительная оставайся в живых связи с большим количеством очень коротким (< 100 мс) распределяется очень неравномерно. Все серверы настроены одинаково, но некоторые соединения, которые пропускают тысячи запросов в секунду, просто отправляются только на один сервер. Мы пробовали обе стратегии балансировки нагрузки, но это не помогает. Кажется, что это строго соблюдается.

плохое поведение бэкенд имеет следующие параметры:

option tcpka 
option http-pretend-keepalive 

Является ли option http-server-close для покрытия этого вопроса? Если я получу это правильно, он закроет и снова откроет много соединений, что означает нагрузку на системы? Разве нет способа открыть соединения, но равномерно сбалансировать трафик? Я попытался включить этот вариант, но он убивает все наши бэкэнды при загрузке.

ответ

4

HAProxy в настоящее время поддерживает только HTTP-подключения keep-alive к клиенту, а не к серверу. Если вы хотите, чтобы иметь возможность проверять (и баланс) каждый запрос HTTP, вы в настоящее время есть использовать один из следующих вариантов

# enable keepalive to the client 
option http-server-close 

# or 

# disable keepalive completely 
option httpclose 

option http-pretend-keepalive не меняет реальное поведение HAProxy в отношении подключения обработки. Вместо этого он предназначен как средство обхода для серверов, которые не работают хорошо, когда они видят не-keepalive-соединение (как генерируется HAProxy на серверный сервер).

Ожидается, что поддержка продолжения работы на серверном сервере будет в финальной версии HAProxy 1.5. Но фактическая область действия может по-прежнему меняться, и конечная дата релиза когда-то будет в будущем ...

+0

и он не включен в текущую бета-версию? – Tobias

+0

Пока нет, нет. Но, как я уже сказал, Вилли посвятил себя этой функции. –

+0

Обратите внимание, что поскольку это было написано, HAProxy 1.5 был выпущен. Он поддерживает keepalive-соединения на всем пути от интерфейса к серверу. Однако он не поддерживает объединение пулов, то есть отправляет запросы из нескольких интерфейсных подключений по одному серверному соединению. Тем не менее, это может быть частью 1,6. –

1

Только FYI, он присутствует в последней версии 1.5-dev20 (но берем с собой исправления, поскольку он поставляется с несколько регрессий).

Смежные вопросы