Архитектура кластерного режима работы

Данная функциональность доступна только для пользователей Pilot-ICE Enterprise и Pilot-BIM. Для получения лицензий обратитесь к поставщику ПО АСКОН.

Для работы Pilot-Server предусмотрен кластерный режим, обеспечивающий отказоустойчивость и возможность горизонтального масштабирования. В кластерном режиме Pilot-Server работает в нескольких экземплярах (узлах) с использованием общей базы данных семейства PostgreSQL. Взаимодействие между узлами осуществляется с помощью Redis.

 

Pilot-Cluster-Scheme

Рис. 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 в кластерном режиме.