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

HAProxy (1.7.5) ведет журнал синхронно (т. Е. С блокировкой) или асинхронно (т. Е. Без блокировки)?

Мы должны убедиться, что журналы HAProxy действительно успешно записываются на диск, прежде чем передавать поступающие запросы на наши серверы, стоящие за ним. Другими словами, нам нужен HAProxy для синхронного ведения журнала и блокировки до тех пор, пока журналы не будут безопасно записаны на диск. Это возможно? Как?

Спасибо!

@geeko,

HAProxy не ведет журналов на диск, ТОЛЬКО в системный журнал.

Из Руководства по управлению 1.7, но оно одинаково для всех версий:

Для ведения журнала HAProxy всегда полагается на сервер системного журнала, поскольку он не выполняет никакого доступа к файловой системе. Стандартный способ его использования - отправлять журналы по UDP на сервер журналов (по умолчанию на порт 514). Очень часто он настроен на 127.0.0.1, где запущен локальный демон syslog, но он также используется по сети для входа на центральный сервер.

Учитывая, что журналы не записываются локально на диск из HAProxy, а отправляются только через syslog (и обычно через UDP), нет реального способа абсолютно гарантия что каждый журнал, который видит haproxy, записывается.

Фактически, когда вы начнете забивать десятки миллионов запросов на каждый балансировщик нагрузки в одну точку, вы можете обнаружить, что сборка мусора на вашем приемнике системного журнала может даже привести к падению журналов.

Например, по нашим оценкам, мы теряем около 30 000 записей журнала в день из-за сборки мусора (это малая часть того, что мы видим на наших машинах haproxy, и мы считаем, что это находится в пределах допустимой погрешности)