O registro em log do HAProxy (1.7.5) é síncrono (isto é, o bloqueio) ou assíncrono (ou seja, não é bloqueado)?

3

Precisamos garantir que os logs HAProxy sejam realmente gravados no disco com êxito antes de entregar as solicitações futuras aos nossos servidores. Em outras palavras, precisamos que o HAProxy registre de forma síncrona e bloqueie até que os logs sejam gravados no disco com segurança. Isso é possível? Como?

Obrigado!

    
por geeko 01.05.2017 / 12:56

2 respostas

3

@geeko,

O HAProxy não faz nenhum registro em disco, somente para o syslog.

No 1.7 Manual de gerenciamento, mas é o mesmo para todas as versões:

For logging, HAProxy always relies on a syslog server since it does not perform any file-system access. The standard way of using it is to send logs over UDP to the log server (by default on port 514). Very commonly this is configured to 127.0.0.1 where the local syslog daemon is running, but it's also used over the network to log to a central server.

    
por 03.05.2017 / 16:59
2

Dado que os logs não são escritos localmente no disco a partir do HAProxy e enviados apenas via syslog (e geralmente através do UDP), não há nenhuma maneira real de garantir que cada log visto pelo haproxy é escrito.

Na verdade, quando você começa a martelar 10's de milhões de solicitações por balanceador de carga em um único ponto, você pode descobrir que a coleta de lixo em seu receptor de syslog pode até mesmo causar a queda de logs.

Por exemplo, estimamos que perdemos cerca de 30.000 entradas de logs por dia devido à coleta de lixo (essa é uma pequena fração do que vemos em nossas máquinas haproxy e consideramos que ela esteja dentro da margem de erro aceitável)

    
por 03.05.2017 / 17:03