Кластер
- Установка PostgreSQL для кластера
- Установка NFS-хранилища
- Установка балансировщика HAProxy
- Установка первого ПринтМенеджера в кластере
- Добавление серверов ПринтМенеджера в кластер
- Проверка корректности установки кластера
Установка PostgreSQL для кластера
Цель
Развертывание базы данных PostgreSQL для кластерной конфигурации ПринтМенеджера.
Предусловия
- Подготовлен сервер для базы данных (
DB_NFS). - Определено количество серверов ПринтМенеджер для расчёта
max_connections.
Расчёт максимального количества подключений к БД
Для обеспечения достаточного количества соединений с базой данных настройте параметр max_connections в конфигурационном файле PostgreSQL.
Используйте следующую формулу:
max_connections = (3*N+70)*T
где:
N: количество процессорных ядер на одном сервере ПринтМенеджера (ПринтМенеджер).T: количество серверов ПринтМенеджер в системе.
Пример: Для 3 серверов ПринтМенеджер с 6 ядрами каждый:
max_connections = (3 х 6 + 70) х 3 = 264.
Шаги установки
Шаг 1. Установите Docker и Docker Compose
Для Ubuntu, Astra Linux и ALT Linux:
sudo apt install docker.io -y
sudo apt install docker-compose -y
sudo systemctl enable docker --now
sudo systemctl status docker
Для РЕД ОС и Red Hat Enterprise Linux:
sudo dnf install -y docker-ce docker-ce-cli
sudo dnf install -y docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
Шаг 2. Создайте файл docker-compose.yml
Выполните команду для создания файла:
touch docker-compose.yml
Затем отредактируйте файл:
nano docker-compose.yml
Вставьте следующую конфигурацию:
version: "3.7"
services:
postgres:
image: postgres:15.15-alpine
volumes:
- postgres15:/var/lib/postgresql/data
command: postgres -N 300
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: printmanager
PGDATA: /var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
ports:
- "5432:5432"
restart: always
volumes:
postgres15:
Важно: Параметры
POSTGRES_USERиPOSTGRES_PASSWORDизмените на свои значения. Эти данные потребуются для настройки системы.В строке
command: postgres -N 300вместо300укажите значение максимального количества подключений к БД, исходя из количества используемых ПринтМенеджеров.
Шаг 3. Создайте директорию для PostgreSQL
Переместите файл docker-compose.yml в новую директорию:
sudo mkdir /opt/postgres15
sudo mv docker-compose.yml /opt/postgres15
cd /opt/postgres15
Шаг 4. Запустите PostgreSQL через Docker Compose
Выполните команду:
sudo docker-compose up -d
Это запустит контейнер с PostgreSQL и выполнит его настройку.
Возможные ошибки
В Astra Linux может появиться ошибка:
docker.errors.DockerException: Error while fetching server API version: Not supported URL scheme http+docker
Причина: установлен устаревший пакет docker-compose.
Решение: выполните команды:
sudo apt purge docker-compose
sudo apt install docker-compose-v2
Как проверить установку
Убедитесь, что контейнер запущен и база данных доступна:
sudo docker ps
Проверьте работоспособность базы, используя ID её контейнера из предыдущей команды:
sudo docker logs <container_id>
Параметры для дальнейшей настройки
Используйте указанные параметры POSTGRES_USER, POSTGRES_PASSWORD и POSTGRES_DB при настройке на этапе Установка балансировщика HAProxy.
Следующие шаги
Ожидаемый результат
- Контейнер PostgreSQL запущен (
sudo docker psпоказывает статусUp). - База данных доступна; подготовлены параметры
DB_HOST,POSTGRES_LOGIN,POSTGRES_PASSWORDдля указания при установке ПринтМенеджеров.
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
django.db.utils.OperationalError: FATAL: sorry, too many clients already |
Превышено максимальное количество подключений к PostgreSQL после добавления новых узлов. | Увеличить max_connections в конфигурации PostgreSQL: max_connections = (3×N + 70) × Tгде N — количество ядер CPU, T — итоговое число серверов ПринтМенеджер в кластере |
Связанные страницы
- Подготовка к установке кластера Active-Active
- Установка NFS-хранилища
- Установка балансировщика HAProxy
Установка NFS-хранилища
Цель
Подготовка сервера NFS для совместного хранения данных ПринтМенеджеров в кластерной конфигурации.
Предусловия
- Подготовлен сервер для NFS (
DB_NFS). - Все сервера ПринтМенеджер должны иметь сетевой доступ к серверу NFS.
Шаги установки
Шаг 1. Установите и запустите NFS
Для Ubuntu, Astra Linux и ALT Linux:
sudo apt install nfs-kernel-server -y
sudo systemctl start nfs-kernel-server.service
sudo systemctl status nfs-kernel-server.service
Для РЕД ОС и Red Hat Enterprise Linux:
sudo dnf install -y nfs-utils
sudo systemctl enable nfs-server.service
sudo systemctl start nfs-server.service
sudo systemctl status nfs-server.service
Шаг 2. Создайте папку для NFS
Создайте директорию /scratch:
sudo mkdir /scratch
Шаг 3. Настройте файл экспорта
Отредактируйте файл конфигурации экспортируемых директорий для редактирования:
sudo nano /etc/exports
Добавьте строку для папки /scratch:
/scratch *(rw,async,no_subtree_check,no_root_squash)
Сохраните файл и примените изменения экспорта:
sudo exportfs -a
Шаг 4. Настройте права доступа
Измените владельца папки:
-
Для Ubuntu, Astra Linux и ALT Linux:
sudo chown nobody:nogroup /scratch -
Для РЕД ОС и Red Hat Enterprise Linux:
sudo chown nobody:nobody /scratch
Установите разрешения для записи:
sudo chmod -R 777 /scratch
Параметры для установки системы
Для установки балансировщика понадобится адрес сервера NFS_ADDR и путь к папке NFS_FOLDER_PATH:
NFS_ADDR: IP-адрес или доменное имя сервера NFS.NFS_FOLDER_PATH: в данном примере путь к папке —/scratch.
Эта настройка позволяет использовать NFS-хранилище для хранения данных системы управления печатью.
Установка с шифрованием (stunnel)
Stunnel — это прокси с открытым исходным кодом, который позволяет создавать безопасные туннели для взаимодействия с другими компьютерами по протоколу TLS.
Ниже описаны шаги по установке и настройке Stunnel для обеспечения безопасного подключения к серверу NFS.
Установка сервера NFS и Stunnel
Для Ubuntu, Astra Linux и ALT Linux:
sudo apt update
sudo apt install -y nfs-kernel-server stunnel4
Для РЕД ОС и Red Hat Enterprise Linux:
sudo dnf update
sudo dnf install -y nfs-utils stunnel
Настройка сервера NFS
Создайте директорию для экспорта:
sudo mkdir /scratch
Измените владельца папки:
-
Для Ubuntu, и Astra Linux и ALT Linux:
sudo chown nobody:nogroup /scratch sudo chmod 777 /scratch -
Для РЕД ОС и Red Hat Enterprise Linux:
sudo chown nobody:nobody /scratch sudo chmod 777 /scratch
где /scratch – путь к общей директории.
Настройте экспорт директории. Для этого отредактируйте файл конфигурации экспортируемых директорий:
sudo nano /etc/exports
Добавьте строку для папки /scratch:
/scratch 127.0.0.1(rw,sync,no_subtree_check,insecure,no_root_squash)
Обратите внимание: параметр
insecureобязателен.
Применение изменений в экспортах:
Выполните команду:
sudo exportfs -a
Перезапуск службы NFS
Выполните перезапуск службы NFS:
-
Для Ubuntu, Astra Linux и ALT Linux:
sudo systemctl restart nfs-kernel-server.service -
Для РЕД ОС и Red Hat Enterprise Linux:
sudo systemctl restart nfs-server.service
Настройка Stunnel на сервере NFS
Получение сертификатов
Если используются автоматические сертификаты, выпустите дополнительные сертификаты для NFS сервера, выполнив следующие команды на сервере балансировщика:
cd /opt/printum_balancer/scripts
sudo ./generate_certs.sh <HOSTNAME_NFS_SERVER>
где <HOSTNAME_NFS_SERVER> — IP-адрес или доменное имя сервера NFS.
После выполнения команды архив printum_certs.tar.gz, содержащий необходимые сертификаты, будет создан в директории /opt/printum_balancer/certificates/<HOSTNAME_NFS_SERVER>.
На сервере NFS создайте директорию /etc/stunnel/cert:
sudo mkdir /etc/stunnel/cert
Скопируйте архив на сервер NFS и извлеките файлы в эту директорию:
sudo cp printum_certs.tar.gz /etc/stunnel/cert
sudo tar -xvf printum_certs.tar.gz
Если используются собственные сертификаты, скопируйте CA-сертификат, SSL-сертификат и ключ на сервер NFS в эту директорию:
sudo cp ssl_cert ssl_key ca_cert /etc/stunnel/cert
Настройка Stunnel
Создайте файл /etc/stunnel/stunnel.conf со следующим содержимым:
cert = /etc/stunnel/cert/<cert.crt>
key = /etc/stunnel/cert/<cert.key>
CAfile = /etc/stunnel/cert/<ca.crt>
[nfs]
accept = <NFS_STUNNEL_PORT>
connect = 127.0.0.1:2049
где:
/etc/stunnel/cert/<cert.crt>,/etc/stunnel/cert/<cert.key>,/etc/stunnel/cert/<ca.crt>— абсолютные пути к сертификату, ключу и CA-сертификату.<NFS_STUNNEL_PORT>— порт для туннеля (рекомендуется указать 20490 или другой непривилегированный порт).
Настройка Stunnel для автоматического запуска
-
Для Ubuntu, ALT Linux и Astra Linux:
- Откройте файл
/etc/default/stunnel4 - Найдите строку
ENABLEDи установите значение1:
Если строки нет, добавьте ее вручную.ENABLED=1
- Откройте файл
-
Для РЕД ОС и Red Hat Enterprise Linux:
sudo systemctl enable stunnel
Запуск и включение Stunnel
-
Для Ubuntu и Astra Linux:
sudo systemctl enable stunnel4 sudo systemctl start stunnel4 -
Для РЕД ОС и Red Hat Enterprise Linux:
sudo systemctl enable stunnel sudo systemctl start stunnel
Теперь сервер NFS настроен с использованием шифрования через Stunnel. Для получения дополнительной информации обращайтесь к официальной документации.
Примечание: Если ранее у вас уже был развёрнут балансировщик с использованием нешифрованного соединения с NFS, то для перехода на шифрование с Stunnel вам необходимо выполнить повторную установку балансировщика и всех нод ПМ.
Допускается установка на уже развёрнутые версии.
В сценарии установки балансировщика с помощью скрипта массового развёртывания, укажите следующие значения переменных в файле конфигурации (
config.ini):
NFS_TLS = 1иNFS_STUNNEL_PORT = <порт_для_Stunnel>.SKIP = trueв секции настроек[Monitoring].После изменения значений переменных сохраните файл конфигурации и запустите установку:
sudo ./install_all_offline.shВ сценарии установки балансировщика вручную обновите балансировщик и все ноды ПМ с указанием переменных
NFS_TLS = 1иNFS_STUNNEL_PORT = <порт_для_Stunnel>.
Ожидаемый результат
- NFS-сервис активен; общая папка доступна на чтение и запись.
- Параметры
NFS_ADDRиNFS_FOLDER_PATHготовы для указания при установке ПринтМенеджеров.
Следующие шаги
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| При отложенной печати появляется ошибка "файл недоступен". | NFS-хранилище недоступно или неверно указаны параметры в .env ПринтМенеджера. |
Выполнить sudo cat /opt/printmanager/.env.Параметры должны быть: DRIVER_OPTS_DEVICE — :NFS\FOLDER\PATH,DRIVER_OPTS_O — addr=NFS_ADDR,nolock,soft,rw,DRIVER_OPTS_TYPE — nfs.Убедитесь в сетевой доступности NFS-сервера и возможности чтения/записи из NFS_FOLDER_PATH. |
Связанные страницы
- Подготовка к установке кластера Active-Active
- Установка PostgreSQL для кластера
- Установка балансировщика HAProxy
- Установка первого ПринтМенеджера в кластере
Установка балансировщика 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-сертификатов
- Перед запуском скрипта подключитесь к каждому серверу вручную из ВМ с балансировщиком:
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для их пропуска при развёртывании.
Инструкция по запуску скрипта
-
Перейдите в директорию со скриптом массовой установки:
cd /path/to/script -
Запустите скрипт:
sudo ./install_all_offline.sh -
Если требуются детализированные логи для диагностики, используйте отладочный режим:
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.gzprintmanager-X1.Y1.Z1.tar.gz.sha512printum-X2.Y2.Z2.tar.gzprintum-X2.Y2.Z2.tar.gz.sha512printum-balancer-X3.Y3.Z3.tar.gzprintum-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) можно в том случае, если нужно обновить балансировщик и/или Мониторинг.
- Если указано
Шаги для добавления сервера
- В секции
[Monitoring]укажите параметрSKIP = true, чтобы предотвратить повторную установку мониторинга. - Для добавления 5 и более серверов с ПринтМенеджером добавьте в файл конфигурации необходимое количество секций, используя следующий шаблон:
где[PrintManager_ID] PM_HOSTNAME = USER = PASSWORD = SSL_CERT = SSL_KEY =ID— порядковый номер сервера. Убедитесь, что номера серверов идут последовательно, без пропусков (например, [PrintManager_1], [PrintManager_2], [PrintManager_3] и т.д.). - Запустите скрипт массовой установки повторно. После выполнения скрипта в терминале отобразятся ссылки для доступа к админке новых серверов.
- Проверьте корректность работы системы по чек-листу.
Шаги установки схемы балансировщика в ручном режиме
Шаг 1. Скопируйте дистрибутивы на сервер балансировщика
Скопируйте на сервер балансировщика дистрибутивы Мониторинга, ПринтМенеджера и Балансировщика вместе с файлами контрольных сумм:
printmanager-X1.Y1.Z1.tar.gzprintmanager-X1.Y1.Z1.tar.gz.sha512printum-X2.Y2.Z2.tar.gzprintum-X2.Y2.Z2.tar.gz.sha512printum-balancer-X3.Y3.Z3.tar.gzprintum-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 адрес или имя остальных ПринтМенеджеров.
Ожидаемый результат
Если установка прошла без ошибок, то в консоли будет выведено сообщение об успехе и https-адрес для доступа к панели HAProxy:
Статус HAProxy доступен по адресу: https://BALANCER_ADR:7000/
Во время установки балансировщика будут автоматически записаны настройки для балансировщика и ПМов. Архивы находятся в директории /opt/printum_balancer/certificates.
Как проверить установку
Откройте страницу по адресу https://BALANCER_ADR:7000/.
Вы увидите несколько групп строк, группы отделяются заголовками бордового цвета. Каждая группа обозначает часть системы и её статус. После установки всех ПМов строки станут зелеными.
Следующие шаги
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| Страница состояния балансировщика (HAProxy) и ПринтМенеджеров загружается с ошибкой. | Отсутствует или некорректен FQDN (hostname) в DNS для ВМ в составе конфигурации. | Проверить наличие и корректность FQDN (hostname) в DNS для всех ВМ в составе отказоустойчивой конфигурации. |
Связанные страницы
- Подготовка к установке кластера Active-Active
- Установка PostgreSQL для кластера
- Установка NFS-хранилища
- Установка первого ПринтМенеджера в кластере
- Проверка корректности установки кластера
Установка первого ПринтМенеджера в кластере
Цель
Установка первой ноды ПринтМенеджера в кластерной конфигурации Active-Active.
Предусловия
- Установлен и настроен балансировщик HAProxy.
- Подготовлены база данных PostgreSQL и NFS-хранилище.
- На сервере балансировщика в директории /opt/printum_balancer/certificates/<IP_или_домен_ПМ> находится архив printum_config.tar.gz
Шаги установки
Шаг 1. Скачайте дистрибутив на сервер ПринтМенеджера
Первичная установка работает только офлайн. Скачайте предоставленный дистрибутив на сервер с ПринтМенеджер доступным вам способом. Распакуйте его:
tar xf printmanager-x.y.z.tar.gz
Шаг 2. Скопируйте архив настроек
Скопируйте с сервера с балансировщиком файл printum_config.tar.gz (не перепутайте с printum_certs.tar.gz) в папку, откуда будете запускать установку ПринтМенеджера, например, printmanager-x.y.z.
Обратите внимание: для каждого ПринтМенеджер был создан свой архив!
Возьмите его из папки с соответствующим IP-адресом или доменным именем. При обновлении версии ПринтМенеджер ещё раз переписывать архив не нужно.
Шаг 3. Запустите установку
С автоматическими сертификатами
Если установка первой ноды ПринтМенеджера выполняется на сервере, на котором также установлен модуль Мониторинга:
sudo -E ./install.sh
Если установка первой ноды ПринтМенеджера выполняется на отдельном сервере:
sudo -E MONITORING_ADDRESS=<hostname> ./install.sh
где MONITORING_ADDRESS — адрес сервера, на котором установлен модуль Мониторинга.
С собственными сертификатами:
export SSL_CERT=<client.crt>
export SSL_KEY=<client.key>
export SSL_CERT_CA=<ca.crt>
sudo -E ./install.sh
Если установка на отдельном сервере аналогично укажите MONITORING_ADDRESS:
sudo -E MONITORING_ADDRESS=<hostname> ./install.sh
Ожидаемый результат
Первый ПринтМенеджер установлен. На странице балансировщика https://BALANCER_ADR:7000/ соответствующие строки станут зелёными.
Как проверить установку
Откройте страницу по адресу https://BALANCER_ADR:7000/ и убедитесь, что строка, указывающая на установленный ПринтМенеджер, стала зелёной.
Следующие шаги
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| При отложенной печати появляется ошибка "файл недоступен". | NFS-хранилище недоступно или неверно указаны параметры в .env ПринтМенеджера. |
Выполнить sudo cat /opt/printmanager/.env.Параметры должны быть: DRIVER_OPTS_DEVICE — :NFS\FOLDER\PATH,DRIVER_OPTS_O — addr=NFS_ADDR,nolock,soft,rw,DRIVER_OPTS_TYPE — nfs.Убедитесь в сетевой доступности NFS-сервера и возможности чтения/записи из NFS_FOLDER_PATH. |
| Не распечатываются файлы при прямой печати через Клиент ПМ. | Неверный флаг use_cups_ssl в настройках Клиента ПМ. |
Проверить значение флага use_cups_ssl в файле settings.yml: C:\Program Files (x86)\printum\printmanager_client. |
Связанные страницы
- Подготовка к установке кластера Active-Active
- Установка балансировщика HAProxy
- Добавление серверов ПринтМенеджера в кластер
- Проверка корректности установки кластера
Добавление серверов ПринтМенеджера в кластер
Цель
Добавление второго и последующих серверов ПринтМенеджера в существующий кластер Active-Active.
Предусловия
- Установлен и настроен балансировщик HAProxy.
- Установлен первый ПринтМенеджер в кластере.
- На сервере балансировщика в директории
/opt/printum_balancer/certificates/<IP_или_домен_ПМ>находится архивprintum_config.tar.gzдля нового сервера.
Шаги установки
Шаг 1. Установите второй и последующие ПМы
Установка аналогична установке первого ПринтМенеджер из раздела Установка первого ПринтМенеджера в кластере.
Отличием является только файл printum_config.tar.gz, который нужно взять из соответствующей папки на сервере с балансировщиком (с соответствующим IP-адресом или доменным именем нового сервера).
Шаг 2. Добавление дополнительного сервера (5 и более)
Если необходимо добавить сервер, не входящий в исходную конфигурацию:
- Проведите установку балансировщика ещё раз с указанием необходимых серверов.
- Установите ПринтМенеджер в шаге 1.
- Отредактируйте на каждом сервере файл
.envв директории/opt/printmanager. Измените список IP адресов или hostname в строкеREDIS_SENTINEL_LIST, указав все сервера. - Перезапустите приложение ПринтМенеджер командами:
cd /opt/printmanager sudo docker-compose down sudo docker-compose up -d
Ожидаемый результат
- ПринтМенеджеры установлена на серверах без ошибок.
- После установки всех ПринтМенеджеров на странице балансировщика
https://BALANCER_ADR:7000/все строки станут зелёными.
Как проверить установку
- Откройте страницу по адресу
https://BALANCER_ADR:7000/и убедитесь, что все строки ПринтМенеджер стали зелёными. - Выполните проверку по разделу Проверка корректности установки кластера.
Следующие шаги
Проверка корректности установки кластера
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
django.db.utils.OperationalError: FATAL: sorry, too many clients already |
Превышено максимальное количество подключений к PostgreSQL после добавления новых узлов. | Увеличить max_connections в конфигурации PostgreSQL: max_connections = (3×N + 70) × Tгде N — количество ядер CPU, T — итоговое число серверов ПринтМенеджер в кластере |
Связанные страницы
Проверка корректности установки кластера
Цель
Проверка корректной работы кластера ПринтМенеджеров после завершения установки.
Предусловия
Установлены все компоненты кластера:
- балансировщик
- мониторинг
- все серверы ПринтМенеджера
Чек-лист проверки
1. Проверка панели администратора HAProxy
- Откройте страницу
https://BALANCER_ADR:7000/. - Убедитесь, что присутствуют следующие разделы:
- ftp
- cups_1631
- tcp_converter_7776
- tcp_converter_7777
- admin_8010
- admin_8080
Каждый из разделов должен иметь все зелёные строчки (кроме коричневых строк Frontend или Backend). Если какая-то из строк с названием server_ip красная — это говорит, что сервер с данным адресом установлен неверно. Проверьте состояние сервера.
2. Проверка файлов .env на серверах ПринтМенеджера
Проверьте .env файлы каждого из серверов с ПринтМенеджерами. В частности, проверьте, что существуют следующие настройки и что они заполнены:
DATABASE_URL=postgres://postgres:postgres@10.0.130.213:5432/printmanagerDATABASE_HOSTNAME=10.0.130.213DATABASE_PORT=5432REDIS_URL=redis://redis:6379/0REDIS_ROLE=master(илиslave)REDIS_SENTINEL_LIST=10.0.132.98,10.0.132.97,10.0.132.96REDIS_MASTER_HOSTNAME=10.0.132.98VOLUME_PATH=/opt/printmanager/volumesDRIVER_OPTS_TYPE=nfsDRIVER_OPTS_O=addr=10.0.130.213,nolock,soft,rwDRIVER_OPTS_DEVICE=:/scratchEXT_HOSTNAME=pm.test(домен или адрес балансировщика)PM_HOSTNAME=10.0.132.97(домен или адрес ПМа)
3. Проверка контейнеров на серверах ПринтМенеджер
Проверьте, есть ли ошибки в следующих контейнерах на каждом из серверов с ПринтМенеджерами:
- printmanager-celery
- printmanager-scheduler
- printmanager-celery-print-queue
- printmanager-redis-sentinel
- printmanager-ftpd printmanager-db
- printmanager-redis
4. Проверка NFS-хранилища
Проверьте, что NFS хранилище работает корректно на каждом сервере с ПринтМенеджерами.
Создайте файл test.txt:
cd /opt/printmanager
sudo docker-compose exec app touch /opt/app/public/media/test.txt
Проверьте, что файл появился в NFS хранилище через его интерфейс. Удалите этот файл:
cd /opt/printmanager
sudo docker-compose exec app rm /opt/app/public/media/test.txt
Убедитесь, что файл test.txt был удалён из NFS хранилища.
Ожидаемый результат
- Все разделы HAProxy показывают зелёные строки.
- Все контейнеры ПринтМенеджеров работают без ошибок.
- NFS-хранилище доступно со всех нод.
- Панель администратора ПринтМенеджер доступна по адресу балансировщика.
Типовые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| Страница состояния балансировщика (HAProxy) и ПринтМенеджеров загружается с ошибкой | Ошибка в хостнеймах — отсутствует или некорректен FQDN в DNS | Проверить наличие и корректность FQDN (hostname) в DNS для всех ВМ в составе отказоустойчивой конфигурации |
| При отложенной печати ошибка "файл недоступен" | NFS-хранилище недоступно или неверно настроено в .env |
Выполнить sudo cat /opt/printmanager/.env на каждом сервере.Проверить DRIVER_OPTS_DEVICE, DRIVER_OPTS_O, DRIVER_OPTS_TYPE.Убедиться в доступности NFS-сервера |