Установка 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 ГБ). Два ответа, и подсказка назовёт вариант, с которого стоит начать

Ключевые цифры

Термины на странице

Nginx
Nginx это веб-сервер и обратный прокси. Его часто ставят перед приложением, чтобы раздавать статику и держать HTTPS.
SSH
SSH это защищённое подключение к серверу через командную строку. Вход по ключу безопаснее, чем по паролю.
Certbot
Certbot это программа, которая получает и продлевает сертификаты Let's Encrypt на сервере.
PostgreSQL
PostgreSQL это база данных для приложений с большими объёмами и сложными запросами.
PEM
PEM это текстовый формат файлов сертификатов и ключей, файлы .crt и .key часто в нём же.
Канал
Канал это скорость подключения сервера к сети, обычно в Мбит или Гбит в секунду.
Продление домена
Продление это оплата домена на следующий срок. Цена продления часто выше цены регистрации.
Debian
Debian это дистрибутив Linux, на котором основана Ubuntu. Его ценят за стабильность.

Что проверить

  1. Выберите конфигурацию по памяти и диску под задачу, процессор обычно вторичен.
  2. Проверьте тип виртуализации: KVM даёт свою систему и гарантированные ресурсы.
  3. Уточните, входит ли IPv4 и сколько стоит трафик сверх пакета.
  4. Храните данные контейнеров в томах.
  5. Закрепляйте версии образов, а не latest.
  6. Ограничьте ресурсы контейнеров, чтобы один не съел весь сервер.

Связанные страницы