Секция global: процессы, логирование, tuning ядра, security limits
Секция
globalуправляет процессом HAProxy: количество процессов, логирование, security limits и tuning ядра.
global
# Процессы и daemon
daemon
master-worker
nbproc 1
nbthread 4
# Логирование
log /dev/log local0 info
log-tag haproxy
# Security limits
ulimit-n 100000
maxconn 50000
# Tuning
tune.ssl.default-dh-param 2048
tune.bufsize 16384
# SSL
ssl-default-bind-ciphers ECDHE+AESGCM:DHE+AESGCM
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-ticketsglobal
daemonНазначение: Запуск HAProxy в фоновом режиме (daemon mode).
Поведение:
/var/run/haproxy.pidКогда использовать:
/etc/init.d/haproxyglobal
master-workerНазначение: Современный режим управления процессами.
Архитектура:
Master Process (управление)
├── Worker Process 1 (трафик)
├── Worker Process 2 (трафик)
└── Agent Process (health checks)
Преимущества:
global
nbproc 1 # Устарело, не использовать в 2.x+
nbthread 4 # Количество потоков на процессnbthread:
nbthread 8nbproc (устарело):
Важно: SSL session sharing не работает между процессами, только между потоками. Используйте nbthread вместо nbproc.
global
log /dev/log local0 infoПараметры:
/dev/log — сокет sysloglocal0 — facility (можно local0-local7)info — уровень логирования (debug, info, notice, warning, err)| Уровень | Описание | Когда использовать |
|---|---|---|
debug | Детальная отладка | Development, troubleshooting |
info | Информация о запросах | Production (стандарт) |
notice | Только важные события | High-traffic production |
warning | Предупреждения | Минимальное логирование |
err | Только ошибки | Критичные системы |
global
log /var/log/haproxy.log local0 infoНе рекомендуется для production:
global
log-tag haproxyНазначение: Добавляет тег к сообщениям для фильтрации в syslog.
Пример в syslog:
Jan 15 10:23:45 server haproxy[1234]: ...
global
ulimit-n 100000Назначение: Устанавливает мягкий лимит на количество открытых файловых дескрипторов (FD).
Расчёт:
ulimit-n = maxconn × 2 + резерв
ulimit-n = 50000 × 2 + 1000 = 101000
Почему × 2:
Системные требования:
# Проверка текущего лимита
ulimit -n
# Установка в /etc/security/limits.conf
haproxy soft nofile 100000
haproxy hard nofile 100000global
maxconn 50000Назначение: Максимальное количество одновременных соединений для всего процесса.
Отличие от ulimit-n:
maxconn — ограничение на уровне HAProxyulimit-n — ограничение на уровне ОСРекомендации:
global
tune.ssl.default-dh-param 2048Назначение: Размер DH параметров для DHE cipher suites.
Безопасность:
2048 — минимум для production4096 — для повышенных требований безопасностиglobal
tune.bufsize 16384Назначение: Размер буфера для HTTP заголовков.
Когда увеличивать:
Значения:
4096 — по умолчанию (достаточно для большинства)16384 — для больших заголовков32768 — extreme casesglobal
tune.maxrewrite 1024Назначение: Буфер для HTTP rewrite операций (reqadd, reqdel, http-request).
Когда менять:
global
ssl-default-bind-ciphers ECDHE+AESGCM:DHE+AESGCM:ECDHE+SHA256:DHE+SHA256Современные cipher suites (2024):
ECDHE+AESGCM — предпочтительно (быстро, безопасно)DHE+AESGCM — fallback для старых клиентовRC4, DES, 3DES, MD5global
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-ticketsПараметры:
ssl-min-ver TLSv1.2 — запретить TLS 1.0/1.1no-tls-tickets — отключить session tickets (security)ssl-max-ver TLSv1.3 — разрешить TLS 1.3global
ssl-default-server-ciphers ECDHE+AESGCM:DHE+AESGCMНазначение: Cipher suites для соединений HAProxy → backend (если используется SSL).
global
# Режим работы
master-worker
nbthread 8
# Логирование
log /dev/log local0 info
log-tag haproxy
# Limits
ulimit-n 100000
maxconn 50000
# SSL
tune.ssl.default-dh-param 2048
ssl-default-bind-ciphers ECDHE+AESGCM:DHE+AESGCM:ECDHE+SHA256:DHE+SHA256
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
ssl-default-server-ciphers ECDHE+AESGCM:DHE+AESGCM
# Tuning
tune.bufsize 16384
tune.maxrewrite 1024
# Stats socket (для управления)
stats socket /var/run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30sДля высокой производительности настройте sysctl:
# /etc/sysctl.d/60-haproxy.conf
# Увеличиваем очередь входящих соединений
net.core.somaxconn = 10240
# Разрешаем reuse TIME_WAIT сокетов
net.ipv4.tcp_tw_reuse = 1
# Уменьшаем время FIN_WAIT
net.ipv4.tcp_fin_timeout = 15
# Расширяем диапазон ephemeral ports
net.ipv4.ip_local_port_range = 1024 65535
# Увеличиваем буферы TCP
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# Отключаем slow start после idle
net.ipv4.tcp_slow_start_after_idle = 0Применение:
sudo sysctl -p /etc/sysctl.d/60-haproxy.conf# Проверка ulimit
cat /proc/$(pidof haproxy)/limits | grep "open files"
# Проверка maxconn через stats socket
echo "show info" | socat /var/run/haproxy/admin.sock stdio | grep Maxconn
# Проверка sysctl
sysctl net.core.somaxconn
sysctl net.ipv4.ip_local_port_rangemaster-worker + nbthread — современный режим работыulimit-n должен быть ≥ maxconn × 2 + резервИзучим секцию defaults: таймауты, режимы работы, логины по умолчанию.
Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.