// DevOps
Проксирование TCP-соединений с HAProxy: Руководство для начинающих
Опубликовано 22.09.2026
Введение
Если вы начинающий системный администратор или разработчик, наверняка сталкивались с задачей управления сетевым трафиком.
Один из мощных инструментов для этого — HAProxy, высокопроизводительный балансировщик нагрузки для TCP и HTTP.
В этой статье мы разберём:
- что такое TCP-проксирование,
- зачем использовать HAProxy,
- пример конфигурации для новичков,
- советы по безопасности и мониторингу.
Что такое проксирование TCP?
Проксирование TCP — это пересылка TCP-соединений от клиента к серверу (или группе серверов) через посредника.
В отличие от HTTP-прокси, который работает на прикладном уровне, TCP-проксирование происходит на транспортном, что делает его универсальным для любых TCP-протоколов: от баз данных до почтовых сервисов.
Зачем использовать HAProxy?
HAProxy — это лёгкий и гибкий инструмент, который позволяет:
- 🔄 распределять нагрузку между несколькими серверами;
- ✅ проверять доступность серверов;
- 📊 предоставлять удобную статистику и мониторинг;
- 🔒 обрабатывать SSL-трафик (терминация или сквозная передача).
Пример конфигурации HAProxy для TCP-проксирования
Ниже конфигурация, которая слушает соединения на порту 4444 и перенаправляет их на тестовый сервер.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend tcp-frontend
bind *:4444
mode tcp
default_backend tcp-backend
backend tcp-backend
mode tcp
balance roundrobin
option tcp-check
server server1 192.168.1.100:443 weight 1 checkРазбор конфигурации
- global — задаёт базовые параметры (логирование, chroot, пользователя, режим демона).
- defaults — дефолтные опции, включая таймауты. По умолчанию
mode http, но вfrontendиbackendпереопределяем наtcp. - frontend tcp-frontend — слушает порт
4444и пересылает запросы вbackend. - backend tcp-backend — балансирует соединения и определяет список серверов. Проверки доступности включаются параметром
checkв строкеserver: без него HAProxy не проверяет сервер, даже если вbackendуказаноoption tcp-check. Директиваoption tcp-checkлишь задаёт, как проверять — по умолчанию это попытка открыть TCP-соединение.
Настройка HAProxy пошагово
Установите HAProxy:
bash# Ubuntu/Debian sudo apt update && sudo apt install haproxy # CentOS/RHEL sudo yum install haproxyСохраните конфигурацию в
/etc/haproxy/haproxy.cfg.Проверьте синтаксис:
bashhaproxy -c -f /etc/haproxy/haproxy.cfgПерезапустите сервис:
bashsudo systemctl restart haproxy sudo systemctl enable haproxyПротестируйте подключение:
bashtelnet <haproxy-ip> 4444
Мониторинг: страница статистики
Чтобы отслеживать состояние серверов и соединений, добавьте секцию:
frontend stats
bind 127.0.0.1:8404
mode http
stats enable
stats uri /stats
stats refresh 10s
stats auth admin:замените-на-длинный-парольСтраница слушает только локальный адрес, поэтому из интернета она недоступна. Открыть её можно через SSH-туннель:
ssh -L 8404:127.0.0.1:8404 user@<haproxy-ip>и затем в браузере http://127.0.0.1:8404/stats.
Не публикуйте страницу статистики на внешнем адресе, а директиву stats admin (управление серверами из веб-интерфейса) включайте только вместе с авторизацией и ограничением доступа: с ней через страницу можно вывести серверы из работы.
Советы для новичков
🔐 Безопасность — держите страницу статистики на
127.0.0.1или за VPN и используйте длинный пароль.🩺 Здоровье серверов — не забывайте
checkв каждой строкеserver. Базовую TCP-проверку можно расширить проверками конкретного протокола (например,option mysql-check,option pgsql-check,option smtpchk).⚡ Масштабирование — добавьте больше серверов:
cfgserver server2 192.168.1.101:443 weight 1 check server server3 192.168.1.102:443 weight 1 check📝 Логирование — проверьте
/var/log/haproxy.log(при необходимости настройтеrsyslog).
Примеры использования
- Балансировка баз данных (MySQL, PostgreSQL).
- Проксирование почтовых сервисов (SMTP, IMAP).
- Сквозное SSL-проксирование.
- Единая точка входа для микросервисов.
Заключение
HAProxy делает TCP-проксирование простым даже для новичков.
Достаточно настроить frontend и backend, добавить проверки доступности и мониторинг — и у вас готов надёжный прокси.
С ростом опыта можно переходить к продвинутым сценариям: SSL-терминация, ACL, проверки конкретных протоколов. Подробный разбор HAProxy с HTTP-режимом, stick-tables и страницей статистики — в статье «Прокси-серверы: Часть 3 — HAProxy».
Успехов в настройке и балансировке! 🚀
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related