Запускаю HAproxy для балансировки нагрузки между толстым клиентом и серверами. Один клиент работает, другой (другая программа) -- нет. В логах для обоих информация видаDec 28 15:57:18 srv8 haproxy[58838]: 192.22.222.28:65134 [28/Dec/2018:15:57:18.821] public static/s2 0/0/8 269 -- 1/1/0/0/0 0/0Конфиг:
$ cat /etc/haproxy/haproxy.cfg
global
debug
log /dev/log local0 debug
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.httpfrontend public
log global
bind srv8:7180 name clear
mode http
log global
option httplog
maxconn 100
timeout client 30s
option tcplog
default_backend staticbackend static
log global
mode http
balance roundrobin
retries 2
option redispatch
timeout connect 5s
timeout server 5s
server s1 srv17:7100
server s2 srv17:7102
server s3 srv18:7100
server s4 srv18:7102Информацию ловит rsyslog:
$ cat /etc/rsyslog.d/49-haproxy.conf
# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
&~Что сделать, чтобы было больше информации в логе?
> global
> debugСреди прочего этим ты запретил fork, так что работает только один процесс.
> server s1 srv17:7100
> server s2 srv17:7102
> server s3 srv18:7100
> server s4 srv18:7102Выглядит как-то подозрительно - разные порты одного сервера включены в roundrobin. Ты действительно этого хотел?
> Что сделать, чтобы было больше информации в логе?Убери debug из global и запусти вручную в консоли haproxy -d
>> global
>> debug
> Среди прочего этим ты запретил fork, так что работает только один процесс.Для решаемой задачи не имеет значения. Я мог бы закомментировать все сервера-бэкэнды кроме одного. Но на будущее учту, спасибо.
> Выглядит как-то подозрительно - разные порты одного сервера включены в roundrobin. Ты
> действительно этого хотел?Да, именно так. Разные порты обслуживаются разными процессами. Было бы на машинах больше ядер — было бы больше портов.
>> Что сделать, чтобы было больше информации в логе?
> Убери debug из global и запусти вручную в консоли haproxy -dСпасибо. Мануал говорит, что это эквивалентно global debug. Сейчас попробовал — так видно гораздо больше. Вопрос: как всё это писать в файл?
>> Убери debug из global и запусти вручную в консоли haproxy -d
> Спасибо. Мануал говорит, что это эквивалентно global debug. Сейчас попробовал — так
> видно гораздо больше. Вопрос: как всё это писать в файл?Перенаправь STDOUT:
haproxy -d > debug.log
>>> Убери debug из global и запусти вручную в консоли haproxy -d
>> Спасибо. Мануал говорит, что это эквивалентно global debug. Сейчас попробовал — так
>> видно гораздо больше. Вопрос: как всё это писать в файл?
> Перенаправь STDOUT:
>
> haproxy -d > debug.log
>Я имел в виду помимо пайпов. Как слать отладочную информацию в syslog-овские логи?
Интересную проблему обнаружил на другой машине. Если запускаю с ключом -d, ругается "[WARNING] 008/180549 (26265) : <debug> mode incompatible with <quiet>, <daemon> and <systemd>. Keeping <debug> only." и ничего в консоль не пишет. Если запускать с -V, не ругается, но тоже ничего не пишет. Чтобы писало, нужны оба: и -d, и -V. "quiet" в конфиге нигде нету.Значит ли это, что при запуске средствами systemd режим debug недоступен?