Установка HAProxy для балансировки нагрузки и TCP-прокси: термины и чек-лист
Подробности, цифры, термины и чек-лист по теме «Установка HAProxy для балансировки нагрузки и TCP-прокси». Страница справочника целиком: Установка HAProxy 3.4 LTS.
Коротко о теме
Установка HAProxy на VPS: haproxy.cfg для двух приложений, проверки состояния, TCP-прокси для базы и сравнение с балансировщиком провайдера.
Подробности по разделам
Установка HAProxy на Ubuntu и в Docker
В Docker конфиг монтируют по пути из документации образа, а перечитывают сигналом HUP: Ловушка Docker: имена сервисов в строках server должны разрешаться при запуске. Если приложение ещё не поднялось, HAProxy не стартует с ошибкой про неизвестный адрес.
Рабочий haproxy.cfg: балансировка двух копий приложения
Строка option forwardfor добавляет заголовок X-Forwarded-For с адресом посетителя. Страница статистики привязана к 127.0.0.1: смотрите её через туннель ssh -L 8404:127.0.0.1:8404 root@IP-сервера и открывайте в браузере http://127.0.0.1:8404/stats. Открытая в интернет, она выдаёт устройство вашей сети.
TCP-прокси на HAProxy: PostgreSQL, Redis, SSH
Начать с одного узла проще: установка PostgreSQL.
HTTPS на HAProxy: один pem-файл из сертификата Certbot
Выпуск сертификата и проверку продления разбирает страница установка Certbot: HAProxy там упомянут в примере, где веб-сервер приходится останавливать на время проверки.
HAProxy на VPS или балансировщик Таймвеб Клауд
Для настоящей отказоустойчивости нужны два сервера с HAProxy и общий плавающий адрес, а это уже ваша админская работа. Самый младший сервер MSK Ultra 15 стоит 1 920 ₽ в месяц (1 vCPU, 1 ГБ). Два ответа, и подсказка назовёт вариант, с которого стоит начать
Ключевые цифры
- Включите страницу статистики через listen stats, привяжите её к 127.0.0.1 и откройте через SSH-туннель.
Термины на странице
- Nginx
- Nginx это веб-сервер и обратный прокси. Его часто ставят перед приложением, чтобы раздавать статику и держать HTTPS.
- SSH
- SSH это защищённое подключение к серверу через командную строку. Вход по ключу безопаснее, чем по паролю.
- Certbot
- Certbot это программа, которая получает и продлевает сертификаты Let's Encrypt на сервере.
- PostgreSQL
- PostgreSQL это база данных для приложений с большими объёмами и сложными запросами.
- PEM
- PEM это текстовый формат файлов сертификатов и ключей, файлы .crt и .key часто в нём же.
- Канал
- Канал это скорость подключения сервера к сети, обычно в Мбит или Гбит в секунду.
- Продление домена
- Продление это оплата домена на следующий срок. Цена продления часто выше цены регистрации.
- Debian
- Debian это дистрибутив Linux, на котором основана Ubuntu. Его ценят за стабильность.
Что проверить
- Выберите конфигурацию по памяти и диску под задачу, процессор обычно вторичен.
- Проверьте тип виртуализации: KVM даёт свою систему и гарантированные ресурсы.
- Уточните, входит ли IPv4 и сколько стоит трафик сверх пакета.
- Храните данные контейнеров в томах.
- Закрепляйте версии образов, а не latest.
- Ограничьте ресурсы контейнеров, чтобы один не съел весь сервер.