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.

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

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

Описание конфигурационного файла

Конфигурационный файл config.ini используется для автоматического развёртывания и обновления системы. Он должен содержать обязательные секции, которые обозначаются квадратными скобками: [General].

Каждая секция содержит параметры в формате КОНСТАНТА = ЗНАЧЕНИЕ. Между константой и её значением должен быть знак равенства, обрамлённый пробелами.

Пример: PM_HTTP_PORT = 8010

Если константа не требует значения, её можно удалить, закомментировать или оставить пустой (с пробелом после знака равно).

Пример: SSL_CERT_CA =

Файл должен включать не менее шести секций:

  • [General]
  • [Balancer]
  • [Monitoring]
  • [PrintManager_1]
  • [PrintManager_2]
  • [PrintManager_N]

Секция [General]

Секция [General] содержит общие параметры для всех серверов. Ниже приведён перечень доступных констант:

  • MON_DIST_PATH — полный путь до дистрибутива мониторинга.
  • PM_DIST_PATH — полный путь до дистрибутива PrintManager.
  • PM_HTTP_PORT — порт для подключения к админке PrintManager по протоколу HTTP.
  • PM_HTTPS_PORT — порт для подключения к админке PrintManager по протоколу HTTPS.
  • SSL_CERT_CA — полный путь до корневого сертификата (CA certificate).
  • DATABASE_URL — настройки для подключения к базе данных PrintManager PostgreSQL в формате URL:
    DATABASE_URL=postgres://<POSTGRES_LOGIN>:<POSTGRES_PASSWORD>@<DB_HOST>:<PORT>/<BASE_NAME>
    
    или со схемой базы данных:
    DATABASE_URL=postgres://<POSTGRES_LOGIN>:<POSTGRES_PASSWORD>@<DB_HOST>:<PORT>/<BASE_NAME>?currentSchema=<POSTGRES_SCHEMA>
    
    • <POSTGRES_LOGIN> — логин пользователя с необходимыми разрешениями (запись, удаление, чтение, обновление).
    • <POSTGRES_PASSWORD> — пароль пользователя.
    • <DB_HOST> — адрес сервера базы данных или балансировщика кластера.
    • <PORT> — порт для подключения к базе.
    • <BASE_NAME> — имя базы данных.
    • <POSTGRES_SCHEMA> — схема базы данных (опционально).
    • <DATABASE_TABLESPACE> — табличное пространство (указать, если не используется значение по умолчанию).​
  • NFS_ADDR — IP-адрес или доменное имя для подключения к серверу NFS.
  • NFS_PATH — полный путь к директории на сервере NFS.
  • NFS_TLS (опционально) — укажите 1 или true, чтобы использовать шифрованное соединение с NFS. Если шифрование не используется, укажите 0 или false, либо удалите переменную.
  • NFS_STUNNEL_PORT (опционально) — порт, указанный для Stunnel. Должен совпадать с портом в конфигурационном файле Stunnel. По умолчанию используется 20490.

Секция [Balancer]

Секция [Balancer] содержит параметры, необходимые для настройки сервера балансировки.

Доступные параметры:

  • EXT_HOSTNAME — IP-адрес или hostname сервера балансировки.
  • SSL_CERT — полный путь до сертификата.
  • SSL_KEY — полный путь до закрытого ключа сертификата.
  • SKIP (опционально) — флаг, указывающий, нужно ли пропустить установку или обновление на указанном сервере.
    • Если указано false (по умолчанию), установка выполняется.
    • Если указано true, выполнение команд на данном сервере будет пропущено.
  • STATS_USER — логин пользователя для авторизации в панели администратора балансировщика.
  • STATS_PASSWORD — пароль пользователя для доступа к странице статистики.

Секция [Monitoring]

Секция [Monitoring] содержит параметры для сервера, выделенного под систему мониторинга.

Доступные параметры:

  • MON_HOSTNAME — IP-адрес или hostname сервера мониторинга.
  • USER — пользователь с правами sudo или суперпользователь root.
  • PASSWORD — пароль пользователя, указанного в параметре USER.
  • SSL_CERT — полный путь до сертификата.
  • SSL_KEY — полный путь до закрытого ключа сертификата.
  • SKIP (опционально) — флаг, указывающий, нужно ли пропустить установку или обновление на данном сервере.
    • Если указано false (по умолчанию), установка выполняется.
    • Если указано true, выполнение команд на данном сервере будет пропущено. Пропустить (SKIP = True) можно в том случае, если нужно обновить только балансировщик и/или ПМы.

Секции [PrintManager_1], [PrintManager_2], ..., [PrintManager_N]

Секции [PrintManager_X] (где X — номер сервера) содержат настройки для подключения к соответствующим серверам с ПринтМенеджером.

Доступные параметры:

  • PM_HOSTNAME — IP-адрес или hostname сервера ПринтМенеджера.
  • USER — пользователь с правами sudo или суперпользователь root.
  • PASSWORD — пароль пользователя, указанного в параметре USER.
  • SSL_CERT — полный путь до сертификата.
  • SSL_KEY — полный путь до закрытого ключа сертификата.
  • SKIP (опционально) — флаг, указывающий, нужно ли пропустить установку или обновление на данном сервере.
    • Если указано false (по умолчанию), установка выполняется.
    • Если указано true, выполнение команд на данном сервере будет пропущено. Пропустить (SKIP = True) можно в том случае, если нужно обновить балансировщик и/или Мониторинг.

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

Шаг 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 для всех ВМ в составе отказоустойчивой конфигурации.

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