Является ли протокол HAProxy (1.7.5) синхронным (т. Е. Блокирующим) или асинхронным (т. Е. Неблокирующим)?

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

Спасибо!

2
задан 1 May 2017 в 13:56
2 ответа

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

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

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

1
ответ дан 3 December 2019 в 09:58

@geeko,

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

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

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

3
ответ дан 3 December 2019 в 09:58

Теги

Похожие вопросы