Skip to main content

Установка балансировщика HAProxy

Цель

Установка балансировщика нагрузки HAProxy для кластерной конфигурации ПринтМенеджеров.

Предусловия

  • Подготовлена база PostgreSQL и NFS-хранилище.
  • Получены дистрибутивы Мониторинга, ПринтМенеджера и Балансировщика с файлами контрольных сумм.

Варианты развёртывания схемы с балансировкой

Возможно два варианта развёртывания схемы балансировки:

  • массовое развертывание с помощью скрипта;
  • ручное развёртывание.

Шаги установки Массового развёртывания схемы с балансировкой

Скрипт массового развертывания предназначен для автоматической установки и обновления балансировщика, мониторинга и серверов ПринтМенеджеров, обеспечивая минимизацию ручного вмешательства.

Требования для выполнения массового развертывания

Подключение по SSH

  • Сервер балансировщика должен иметь возможность подключаться к остальным серверам (ПринтМенеджеры и Мониторинг) по протоколу SSH.
  • Для исключения необходимости ввода паролей, настройте SSH-аутентификацию с использованием ключа:
    • Создайте ключ SSH на сервере балансировщика (если его еще нет):​
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
      
    • Скопируйте публичный ключ на все удаленные сервера:​
      ssh-copy-id root@<remote_server_IP>​
      

Подтверждение доверия SSH-сертификатов

  • Перед запуском скрипта подключитесь к каждому серверу вручную из ВМ с балансировщиком:​
    ssh root@<remote_server_IP>
    
  • Подтвердите добавление отпечатка сервера в файл доверенных хостов (~/.ssh/known_hosts).

Права пользователя

  • Каждый сервер должен иметь пользователя с правами sudo.
  • Для удобства и безопасности рекомендуется:
    • Создать отдельные служебные учетные записи
    • Отключить запрос пароля для команд с использованием sudo, добавив в конфигурацию /etc/sudoers соответствующую строку:​
      <username> ALL=(ALL) NOPASSWD:ALL​​
      

Проверка конфигурации

Убедитесь, что файл config.ini заполнен корректно:

  • Все необходимые секции ([Balancer], [Monitoring], [PrintManager_1] и т.д.) присутствуют.
  • Значения переменных указаны без ошибок (путь к сертификатам, пароли, адреса и т.д.).
  • Если некоторые сервера уже настроены, используйте параметр SKIP = true для их пропуска при развёртывании.

Инструкция по запуску скрипта

  1. Перейдите в директорию со скриптом массовой установки:​

    cd /path/to/script
    
  2. Запустите скрипт:​

    sudo ./install_all_offline.sh
    
  3. Если требуются детализированные логи для диагностики, используйте отладочный режим:​

    sudo DEBUG=1 ./install_all_offline.sh  
    

Порядок установки

Шаг 1. Подготовка базы данных и NFS-хранилища​

Подготовка описана в разделах:

Шаг 2. Получение сертификатов

Если используются собственные SSL-сертификаты:

  • Сгенерируйте или получите их у авторизованного центра сертификации (CA).
  • Убедитесь, что пути к сертификатам (SSL_CERT и SSL_KEY) корректно указаны в конфигурационном файле.
  • Если сертификаты корневого центра сертификации требуются, укажите путь к ним в SSL_CERT_CA.

Шаг 3. Запуск установки

Скопируйте дистрибутивы на сервер балансировщика

Скопируйте на сервер балансировщика дистрибутивы Мониторинга, ПринтМенеджера и Балансировщика вместе с файлами контрольных сумм:

  • printmanager-X1.Y1.Z1.tar.gz
  • printmanager-X1.Y1.Z1.tar.gz.sha512
  • printum-X2.Y2.Z2.tar.gz
  • printum-X2.Y2.Z2.tar.gz.sha512
  • printum-balancer-X3.Y3.Z3.tar.gz
  • printum-balancer-X3.Y3.Z3.tar.gz.sha512
Проверьте контрольные суммы
sha512sum -c <имя_файла>.sha512
Распакуйте архив балансировщика
tar xzvf printum-balancer-X3.Y3.Z3.tar.gz
cd printum-balancer-X3.Y3.Z3
Создайте файл конфигурации
cp config_example.ini config.ini
Отредактируйте файл config.ini

Внесите необходимые значения для каждой секции, указывая необходимые значения и опираясь на раздел "Описание конфигурационного файла".

Сохраните файл config.ini. Этот файл понадобится для будущих обновлений

Выполните установку

Используйте скрипт install_all_offline.sh с правами администратора:​

sudo ./install_all_offline.sh

Если при этом появляется ошибка Permission denied, сделайте файл исполняемым и повторите запуск:

chmod +x install_all_offline.sh
sudo ./install_all_offline.sh
Ожидайте завершения процесса установки

В случае необходимости введите пароль для подключения по SSH и копирования файлов с использованием SCP.

Проверьте корректность установки

Используйте раздел Проверка корректности установки кластера.

Шаги установки схемы балансировщика в ручном режиме

Шаг 1. Скопируйте дистрибутивы на сервер балансировщика

Скопируйте на сервер балансировщика дистрибутивы Мониторинга, ПринтМенеджера и Балансировщика вместе с файлами контрольных сумм:

  • printmanager-X1.Y1.Z1.tar.gz
  • printmanager-X1.Y1.Z1.tar.gz.sha512
  • printum-X2.Y2.Z2.tar.gz
  • printum-X2.Y2.Z2.tar.gz.sha512
  • printum-balancer-X3.Y3.Z3.tar.gz
  • printum-balancer-X3.Y3.Z3.tar.gz.sha512

Шаг 2. Проверьте контрольные суммы

sha512sum -c <имя_файла>.sha512

Шаг 3. Распакуйте архив балансировщика

tar xzvf printum-balancer-X3.Y3.Z3.tar.gz
cd printum-balancer-X3.Y3.Z3

Шаг 4. Настройте переменные окружения

Введите следующие команды для настройки (оставайтесь в этом же терминале до завершения установки):

export NFS_ADDR=<NFS_ADDR>
export NFS_PATH=<NFS_FOLDER_PATH>
export DATABASE_URL=postgres://<POSTGRES_LOGIN>:<POSTGRES_PASSWORD>@<DB_HOST>:<PORT>/<BASE_NAME>

Если требуется указать схему базы данных:

export DATABASE_URL=postgres://<POSTGRES_LOGIN>:<POSTGRES_PASSWORD>@<DB_HOST>:<PORT>/<BASE_NAME>?currentSchema=<POSTGRES_SCHEMA>

Если база использует нестандартное табличное пространство:

export DATABASE_TABLESPACE=<DATABASE_TABLESPACE>

где:

  • <POSTGRES_LOGIN> — логин пользователя с необходимыми разрешениями (запись, удаление, чтение, обновление).
  • POSTGRES_PASSWORD> — пароль пользователя POSTGRES_LOGIN.
  • <DB_HOST> — реальный адрес базы или балансировщика кластера баз.
  • <PORT> — порт для подключения к базе.
  • <BASE_NAME> — Имя базы.
  • <POSTGRES_SCHEMA> — схема базы данных, указывать, если не используется схема public.
  • <DATABASE_TABLESPACE> — Табличное пространство.
  • <NFS_ADDR> — IP-адрес или доменное имя NFS сервера.
  • <NFS_FOLDER_PATH> — путь директории NFS сервера.

Если вы настроили NFS через туннель stunnel, то обязательно укажите:

export NFS_TLS=true

Если порт stunnel отличается от 20490, то укажите еще порт:​

export NFS_STUNNEL_PORT=<NFS_STUNNEL_PORT>

где:

  • NFS_STUNNEL_PORT - порт для stunnel

Также вы можете указать логин и пароль для страницы HAProxy:

export STATS_USER=<STATS_USER>
export STATS_PASSWORD=<STATS_PASSWORD>

Если пароль и логин не указан, то будет установлен логин admin и пароль admin. Логин и пароль записаны в файле /opt/printum_balancer/.env.

Шаг 5. Запустите установку

С автоматическими сертификатами:

sudo -E ./install.sh -balancer <BALANCER_ADR> -pm <PM_1> -pm <PM_2> -pm <PM_3>

С собственными сертификатами:

export SSL_CERT=<client.crt>
export SSL_KEY=<client.key>
export SSL_CERT_CA=<ca.crt>
sudo -E ./install.sh -balancer <BALANCER_ADR> -pm <PM_1> -pm <PM_2> -pm <PM_3>

где:

  • <BALANCER_ADR> — IP адрес или доменное имя балансировщика.
  • <PM_1> — IP адрес или доменное имя первого ПринтМенеджер.
  • <PM_2>, <PM_3> , … — IP адрес или имя остальных ПринтМенеджеров.

Ожидаемый результат

Если установка прошла без ошибок, то в консоли будет выведено сообщение об успехе и http-адрес для доступа к панели HAProxy:

Статус HAProxy доступен по адресу: https://BALANCER_ADR:7000/

Во время установки балансировщика будут автоматически записаны настройки для балансировщика и ПМов. Архивы находятся в директории /opt/printum_balancer/certificates.

Как проверить установку

Откройте страницу по адресу https://BALANCER_ADR:7000/.

Вы увидите несколько групп строк, группы отделяются заголовками бордового цвета. Каждая группа обозначает часть системы и её статус. После установки всех ПМов строки станут зелеными.

Следующие шаги

Типовые ошибки

Ошибка Причина Решение
Страница состояния балансировщика (HAProxy) и ПринтМенеджеров загружается с ошибкой. Отсутствует или некорректен FQDN (hostname) в DNS для ВМ в составе конфигурации. Проверить наличие и корректность FQDN (hostname) в DNS для всех ВМ в составе отказоустойчивой конфигурации.

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