Кластеризация Prostore
Содержание раздела
Система поддерживает кластеризацию сервиса исполнения запроса — подключение произвольного количества нод в одно окружение.
По умолчанию кластер работает в режиме с лидером, но при необходимости вы можете переключить работу кластера в режим без лидера. В обоих режимах ноды кластера могут выполнять любые виды запросов, а сбой любой из них не прерывает работу остальных нод.
Допустимо объединять в кластер только одинаковые версии Prostore.
Подключение к кластеру
Для работы с кластером Prostore необходимо подключиться к любой из его нод, указав ее доменное имя или IP-адрес и номер порта, равный значению параметра конфигурации DTM_CORE_HTTP_PORT
.
Подробнее о способах подключения к ноде см. в разделе Подключение, о конфигурации кластера см. в разделе Конфигурация кластера.
Ноды кластера
В кластере одна нода является автоматически выбираемым лидером, а остальные ноды — ведомыми.
Лидер автоматически выбирается при наличии в кластере двух и более нод и признается всеми остальными нодами. Выбранная нода работает как лидер до первого сбоя или потери соединения с сервисной БД — в этом случае выбирается новый лидер.
Лидер самостоятельно обрабатывает запросы на чтение и выгрузку данных, поступившие ему, а ведомые ноды сначала запрашивают управляющую информацию у лидера и затем обрабатывают запросы. Если лидер в кластере недоступен и новый еще не выбран, ноды кластера запрашивают управляющую информацию в сервисной БД, что может временно снизить производительность запросов на чтение и выгрузку данных.
Согласованность данных
По умолчанию кластер поддерживает последовательную согласованность данных (Sequential Consistency). Если требуется гарантия получения самых свежих данных, выполняйте команду SYNC перед каждым запросом на чтение или выгрузку данных.
Взаимодействие кластера с другими компонентами
Все ноды кластера работают с общим набором компонентов: хранилищем данных, сервисной БД, одним экземпляром каждого коннектора и общим сервером (или набором серверов) Kafka.
Подробнее о компонентах, с которыми работает система, см. в разделе Компоненты и интерфейсы.
На рисунке ниже показан кластер Prostore и внешние компоненты, с которыми он взаимодействует.
Ограничения кластера
- Кластер не имеет встроенного балансировщика нагрузки между нодами.
- Для всех нод кластера значение параметра конфигурации
AUTO_RESTORE_STATE
должно быть равноfalse
. - Требуется синхронизация времени между нодами кластера внешними средствами, например с помощью NTP-сервиса.
- При потере соединения с лидером ведомая нода перестает исполнять запросы и возвращает ошибку в ответе. Это состояние сохраняется до события, которое наступит первым: до восстановления соединения с лидером или выбора нового лидера.
- Только лидер занимается синхронизацией материализованных представлений и расчетом ROWS_COUNT в статистике.
Работа кластера в leaderless-режиме (без лидера)
Кластер можно переключить из основного режима работы в leaderless-режим, в котором все ноды полностью полноправны. Чтобы это сделать, в конфигурации каждой ноды установите для параметра PNODE_LEADERLESS_ENABLED
значение true
.
По умолчанию при случайном распределении запросов между нодами кластер в leaderless-режиме обеспечивает согласованность данных уровня Eventual Consistency. Если требуется более высокий уровень согласованности данных, используйте любой из способов:
- переключите кластер в основной режим работы (с лидером), настроив кластер по инструкции в разделе Конфигурация кластера;
- выполняйте команду SYNC перед каждым запросом на чтение или выгрузку данных, когда нужна гарантия получения самых свежих данных.