Skip to main content

Как работает отказоустойчивый ПринтМенеджер

Как работает отказоустойчивый ПринтМенеджер

Назначение

Принтум поддерживает отказоустойчивую конфигурацию ПринтМенеджера.

Она используется для:

  • минимизации downtime;
  • балансировки нагрузки;
  • работы при отказе узлов.

Общая схема

           HAProxy
              |
    +---------+---------+
    |                   |
    v                   v
ПринтМенеджер 1   ПринтМенеджер 2

Как работает балансировка

HAProxy:

  • распределяет запросы;
  • проверяет доступность узлов;
  • исключает недоступные узлы.

Что происходит при отказе узла

Если один узел недоступен:

  • HAProxy перенаправляет запросы;
  • пользователи продолжают работать;
  • печать продолжается.

Что важно помнить

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

Что НЕ гарантирует HA

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

  • Не гарантирует отсутствие деградации при failover. Во время переключения между узлами возможны временные задержки и ошибки для активных сессий.
  • Не гарантирует zero downtime. Переключение занимает время; кратковременный простой возможен.
  • Не гарантирует real-time статистику при отказе Мониторинга. Если сервер Мониторинга недоступен, данные о печати не передаются в реальном времени.
  • Не заменяет резервное копирование. HA защищает от отказа узла, но не от потери данных. Резервные копии необходимо создавать независимо.
  • Не защищает от отказа PostgreSQL или NFS. Общие компоненты (база данных, сетевое хранилище) являются единой точкой отказа и требуют отдельного обеспечения отказоустойчивости.

Деградационный режим

В распределённых установках Мониторинг обычно расположен в центральном ЦОДе, а ПринтМенеджер — в филиалах. Схема построена так, чтобы при пропадании связи между филиалом и центром печать не останавливалась. Вот как это работает:

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

Деградационный режим нужен в филиалах с ненадёжными каналами. В организациях, где филиалы соединены с ЦОДом надёжными линиями связи, достаточно централизованной конфигурации без локальных ПринтМенеджеров — отказоустойчивость достигается кластеризацией центральных серверов.

Детали кластера ПринтМенеджеров

Для непрерывной работы сервиса печати при отказе одного или двух серверов используется кластер ПринтМенеджеров. Основные принципы:

  • Минимум три ноды. Алгоритм отказоустойчивости требует 2F+1 узлов, чтобы пережить отказ F узлов. При двух нодах отказ одной приведёт к потере кворума.
  • Балансировщик нагрузки (например, HAProxy) распределяет задания между серверами. Балансировщик можно настроить с резервированием, но сам Принтум поставляется с автоматизированными шаблонами настройки HAProxy.
  • Обособленные сервисы: база данных Принтум и файловое хранилище (куда помещаются документы и теневые копии) размещаются на отдельном сервере или кластере. Отказ сервера с базой данных не должен останавливать всю систему, поэтому базу данных и файловое хранилище необходимо реплицировать на стороне заказчика.
  • Разделение ролей: Мониторинг, ПринтМенеджер, база данных и файловое хранилище могут быть на разных серверах. На практике часто Мониторинг и один из ПринтМенеджеров размещают на одном хосте, остальные ПМ — на отдельных.

Как работает кластер (пошагово)

  1. Пользователь отправляет задание на виртуальный принтер Принтум.
  2. Балансировщик выбирает живой узел ПринтМенеджера и передаёт задание.
  3. ПринтМенеджер обрабатывает задание, хранит метаданные в общей базе, сохраняет файл в общую папку и отправляет на физический принтер после авторизации.
  4. Если один из ПринтМенеджеров выходит из строя, балансировщик исключает его из пула; остальные узлы продолжают работу без прерывания сервиса. Пока не восстановится кворум, система должна поддерживать минимум две активные ноды.
  5. Администраторы восстанавливают упавший сервер или вводят новый. Система автоматически синхронизирует очереди и статистику через Мониторинг.

Зона ответственности заказчика

Принтум обеспечивает отказоустойчивость приложений, однако ответственность за инфраструктуру остаётся за заказчиком:

  • репликация базы данных и файлового хранилища;
  • отказоустойчивость сети и балансировщика;
  • резервное копирование и аварийное восстановление (DR) серверов.

Вывод

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