Архитектура кластерного режима работы
Данная функциональность доступна только для пользователей Pilot-ICE Enterprise и Pilot-BIM. Для получения лицензий обратитесь к поставщику ПО АСКОН. |
Для работы Pilot-Server предусмотрен кластерный режим, обеспечивающий отказоустойчивость и возможность горизонтального масштабирования. В кластерном режиме Pilot-Server работает в нескольких экземплярах (узлах) с использованием общей базы данных семейства PostgreSQL. Взаимодействие между узлами осуществляется с помощью Redis.
Рис. 1. Схема работы системы Pilot в кластерном режиме.
Основные компоненты кластерного режима
PostgreSQL
PostgreSQL управляет базами данных системы Pilot. Допускается использование СУБД, совместимой с любыми на данный момент поддерживаемыми версиями PostgreSQL и совместимыми с ними, например, Postgres Pro. Список актуальных версий PostgreSQL опубликован на сайте. Развёртывание и настройку СУБД необходимо выполнять в соответствии с документацией выбранного ПО. Поддерживаются как обычные, так и кластеризованные таблицы базы данных, дополнительное конфигурирование Pilot-Server не требуется.
Для кластеризации СУБД PostgreSQL необходимо использовать синхронную репликацию. Настраивая её, нужно учитывать, что при завершении записи изменений в первичный узел (primary node) Pilot-Server не должен получить устаревшие данные из какого-либо резервного узла (standby node). В случае применения встроенной функции потоковой репликации PostgreSQL рекомендуется использовать параметр synchronous_commit = remote_apply.
Для оптимального взаимодействия Pilot-Server с PostgreSQL необходимо использовать пулинг соединений. По умолчанию реализован пулинг соединений на стороне узла Pilot-Server. Дополнительно может быть использован сторонний пулер соединений. Например, pgbouncer.
Redis
Redis используется как единый брокер сообщений для взаимодействия между узлами Pilot-Server, а также как кеширующий сервер. Развертывание и настройку Redis необходимо выполнять в соответствии с документацией ПО.
Поддерживается как обычный режим работы Redis, так и кластерный режим, дополнительное конфигурирование Pilot-Server, в зависимости от режима, не требуется.
Для возможности взаимодействия между узлами Pilot-Server необходимо настроить нотификацию пространства ключей Redis. Параметр конфигурации notify-keyspace-events должен иметь значение "AKE". Он может быть задан через команду CONFIG SET, либо в файле redis.conf.
Балансировщик нагрузки
Используется для распределения между узлами Pilot-Server запросов от клиентских приложений Pilot. Для балансировки необходимо использовать механизм "липких сессий" (sticky-sessions). Настройку балансировщика необходимо выполнять в соответствии с документацией выбранного ПО.
Pilot-Server
Для развертывания Pilot-Server в кластерном режиме используется дистрибутив версии не ниже 23.31, опубликованный в Центре загрузок Pilot.
Все экземпляры Pilot-Server должны использовать одну конфигурационную базу. Запуск происходит из командной строки с определёнными параметрами. Подробнее см. на странице Запуск Pilot-Server в кластерном режиме.