// DevOps

Проксирование TCP-соединений с HAProxy: Руководство для начинающих

Опубликовано 22.09.2026

Введение

Если вы начинающий системный администратор или разработчик, наверняка сталкивались с задачей управления сетевым трафиком.
Один из мощных инструментов для этого — HAProxy, высокопроизводительный балансировщик нагрузки для TCP и HTTP.

В этой статье мы разберём:

  • что такое TCP-проксирование,
  • зачем использовать HAProxy,
  • пример конфигурации для новичков,
  • советы по безопасности и мониторингу.

Что такое проксирование TCP?

Проксирование TCP — это пересылка TCP-соединений от клиента к серверу (или группе серверов) через посредника.
В отличие от HTTP-прокси, который работает на прикладном уровне, TCP-проксирование происходит на транспортном, что делает его универсальным для любых TCP-протоколов: от баз данных до почтовых сервисов.


Зачем использовать HAProxy?

HAProxy — это лёгкий и гибкий инструмент, который позволяет:

  • 🔄 распределять нагрузку между несколькими серверами;
  • ✅ проверять доступность серверов;
  • 📊 предоставлять удобную статистику и мониторинг;
  • 🔒 обрабатывать SSL-трафик (терминация или сквозная передача).

Пример конфигурации HAProxy для TCP-проксирования

Ниже конфигурация, которая слушает соединения на порту 4444 и перенаправляет их на тестовый сервер.

cfg
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 пошагово

  1. Установите HAProxy:

    bash
    # Ubuntu/Debian
    sudo apt update && sudo apt install haproxy
    
    # CentOS/RHEL
    sudo yum install haproxy
  2. Сохраните конфигурацию в /etc/haproxy/haproxy.cfg.

  3. Проверьте синтаксис:

    bash
    haproxy -c -f /etc/haproxy/haproxy.cfg
  4. Перезапустите сервис:

    bash
    sudo systemctl restart haproxy
    sudo systemctl enable haproxy
  5. Протестируйте подключение:

    bash
    telnet <haproxy-ip> 4444

Мониторинг: страница статистики

Чтобы отслеживать состояние серверов и соединений, добавьте секцию:

cfg
frontend stats
    bind 127.0.0.1:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth admin:замените-на-длинный-пароль

Страница слушает только локальный адрес, поэтому из интернета она недоступна. Открыть её можно через SSH-туннель:

bash
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).

  • ⚡ Масштабирование — добавьте больше серверов:

    cfg
    server 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)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ