While we were building a new machine that will serve as a Haproxy server proxy frontend to tunnel some traffic to a number of backends,
came across weird oddity. The call requests sent to the haproxy and redirected to backend servers, were being written in the log twice.
Since we have two backend Application servers hat are serving the request, my first guess was this is caused by the fact haproxy
tries to connect to both nodes on each sent request, or that the double logging is caused by the rsyslogd doing something strange on each
received query. The rsyslog configuration configured to send via local6 facility to rsyslog is like that:
$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
#2022/02/02: HAProxy logs to local6, save the messages
local6.* /var/log/haproxy.log
The haproxy basic global and defaults and frontend section config is like that:
global
log 127.0.0.1 local6 debug
chroot /var/lib/haproxy
pidfile /run/haproxy.pid
stats socket /var/lib/haproxy/haproxy.sock mode 0600 level admin
maxconn 4000
user haproxy
group haproxy
daemon
defaults
mode tcp
log global
# option dontlognull
# option httpclose
# option httplog
# option forwardfor
option redispatch
option log-health-checks
timeout connect 10000 # default 10 second time out if a backend is not found
timeout client 300000
timeout server 300000
maxconn 60000
retries 3
listen FRONTEND1
bind 10.71.80.5:63750
mode tcp
option tcplog
log global
log-format [%t] %ci:%cp %bi:%bp %b/%s:%sp %Tw/%Tc/%Tt %B %ts %ac/%fc/%bc/%sc/%rc %sq/%bq
balance roundrobin
timeout client 350000
timeout server 350000
timeout connect 35000
server backend-host1 10.80.50.1:13750 weight 1 check port 15000
server backend-host2 10.80.50.2:13750 weight 2 check port 15000
After quick research online on why this odd double logging of request ends in /var/log/haproxy.log it turns out this is caused by the
log global defined double under the defaults section as well as in the frontend itself, hence to resolve simply had to comment out the log global in Frontend, so it looks like so:
listen FRONTEND1
bind 10.71.80.5:63750
mode tcp
option tcplog
# log global
log-format [%t] %ci:%cp %bi:%bp %b/%s:%sp %Tw/%Tc/%Tt %B %ts %ac/%fc/%bc/%sc/%rc %sq/%bq
balance roundrobin
timeout client 350000
timeout server 350000
timeout connect 35000
server backend-host1 10.80.50.1:13750 weight 1 check port 15000
server backend-host2 10.80.50.2:13750 weight 2 check port 15000
Next just reloaded haproxy and one request started leaving only one trail inside haproxy.log as expected 🙂
More helpful Articles

Tags: cfg, check, client, due, haproxy, option, port, requests, tcp, var