Как работает отказоустойчивый ПринтМенеджер
Как работает отказоустойчивый ПринтМенеджер
Назначение
Принтум поддерживает отказоустойчивую конфигурацию ПринтМенеджера.
Она используется для:
- минимизации downtime;
- балансировки нагрузки;
- работы при отказе узлов.
Общая схема
HAProxy
|
+---------+---------+
| |
v v
ПринтМенеджер 1 ПринтМенеджер 2
Как работает балансировка
HAProxy:
- распределяет запросы;
- проверяет доступность узлов;
- исключает недоступные узлы.
Что происходит при отказе узла
Если один узел недоступен:
- HAProxy перенаправляет запросы;
- пользователи продолжают работать;
- печать продолжается.
Что важно помнить
- Отказоустойчивость не означает отсутствие деградации.
- Во время переключения возможны временные задержки.
- После восстановления узел возвращается в пул балансировки.
Что НЕ гарантирует HA
Отказоустойчивая конфигурация ПринтМенеджера обеспечивает непрерывность работы при отказе отдельного узла, однако имеет ряд принципиальных ограничений:
- Не гарантирует отсутствие деградации при failover. Во время переключения между узлами возможны временные задержки и ошибки для активных сессий.
- Не гарантирует zero downtime. Переключение занимает время; кратковременный простой возможен.
- Не гарантирует real-time статистику при отказе Мониторинга. Если сервер Мониторинга недоступен, данные о печати не передаются в реальном времени.
- Не заменяет резервное копирование. HA защищает от отказа узла, но не от потери данных. Резервные копии необходимо создавать независимо.
- Не защищает от отказа PostgreSQL или NFS. Общие компоненты (база данных, сетевое хранилище) являются единой точкой отказа и требуют отдельного обеспечения отказоустойчивости.
Деградационный режим
В распределённых установках Мониторинг обычно расположен в центральном ЦОДе, а ПринтМенеджер — в филиалах. Схема построена так, чтобы при пропадании связи между филиалом и центром печать не останавливалась. Вот как это работает:
- Локальный ПринтМенеджер в филиале имеет собственные очереди и обслуживает пользователей филиала. Он подключается к Мониторингу для синхронизации пользователей и принтеров, но может работать автономно.
- Если связь между ПринтМенеджером и Мониторингом пропадает, пользователи в филиале продолжают печать, копирование и сканирование. Очереди и правила локально продолжают работать.
- В деградационном режиме новые пользователи и изменения конфигурации из домена не передаются в филиал, а статистика о заданиях и счётчиках не выгружается в Мониторинг.
- После восстановления канала связи все накопленные данные синхронизируются, Мониторинг получает статистику, а ПринтМенеджер обновляет список пользователей и устройств.
Деградационный режим нужен в филиалах с ненадёжными каналами. В организациях, где филиалы соединены с ЦОДом надёжными линиями связи, достаточно централизованной конфигурации без локальных ПринтМенеджеров — отказоустойчивость достигается кластеризацией центральных серверов.
Детали кластера ПринтМенеджеров
Для непрерывной работы сервиса печати при отказе одного или двух серверов используется кластер ПринтМенеджеров. Основные принципы:
- Минимум три ноды. Алгоритм отказоустойчивости требует 2F+1 узлов, чтобы пережить отказ F узлов. При двух нодах отказ одной приведёт к потере кворума.
- Балансировщик нагрузки (например, HAProxy) распределяет задания между серверами. Балансировщик можно настроить с резервированием, но сам Принтум поставляется с автоматизированными шаблонами настройки HAProxy.
- Обособленные сервисы: база данных Принтум и файловое хранилище (куда помещаются документы и теневые копии) размещаются на отдельном сервере или кластере. Отказ сервера с базой данных не должен останавливать всю систему, поэтому базу данных и файловое хранилище необходимо реплицировать на стороне заказчика.
- Разделение ролей: Мониторинг, ПринтМенеджер, база данных и файловое хранилище могут быть на разных серверах. На практике часто Мониторинг и один из ПринтМенеджеров размещают на одном хосте, остальные ПМ — на отдельных.
Как работает кластер (пошагово)
- Пользователь отправляет задание на виртуальный принтер Принтум.
- Балансировщик выбирает живой узел ПринтМенеджера и передаёт задание.
- ПринтМенеджер обрабатывает задание, хранит метаданные в общей базе, сохраняет файл в общую папку и отправляет на физический принтер после авторизации.
- Если один из ПринтМенеджеров выходит из строя, балансировщик исключает его из пула; остальные узлы продолжают работу без прерывания сервиса. Пока не восстановится кворум, система должна поддерживать минимум две активные ноды.
- Администраторы восстанавливают упавший сервер или вводят новый. Система автоматически синхронизирует очереди и статистику через Мониторинг.
Зона ответственности заказчика
Принтум обеспечивает отказоустойчивость приложений, однако ответственность за инфраструктуру остаётся за заказчиком:
- репликация базы данных и файлового хранилища;
- отказоустойчивость сети и балансировщика;
- резервное копирование и аварийное восстановление (DR) серверов.
Вывод
Для надёжной работы Принтум в филиалах с ненадёжной связью выбирайте распределённую архитектуру с локальными ПринтМенеджерами. При необходимости непрерывной работы в централизованных установках используйте кластер из трёх и более ПринтМенеджеров с балансировщиком нагрузки и репликацией базы данных. Деградационный режим и кластеризация не исключают друг друга и могут быть комбинированы в крупных проектах.