26.1. Архитектура #

26.1.1. Конфигурация Postgres Pro Shardman с BiHA
26.1.2. Выборы

Благодаря встроенным возможностям отказоустойчивости Postgres Pro Shardman позволяет создать кластер с узлами-лидерами (ввиду распределённого характера системы узлов-лидеров может быть несколько) и несколькими узлами-последователями. Лидер является ведущим сервером BiHA-кластера, а последователи — репликами лидера.

Утилита shardmanctl позволяет инициализировать кластер Postgres Pro Shardman и создавать узел-лидер, добавлять узлы-последователи, преобразовывать узлы существующего кластера в узел-лидер или узел-последователь на каждом сегменте, а также проверять статус узлов кластера. Лидер доступен для чтения и записи, в то время как последователи реплицируют данные с лидера в синхронном режиме.

Помимо узлов-лидеров и узлов-последователей можно задать узлам Postgres Pro Shardman роль узлов-рефери. Это узлы, участвующие в выборах в двух режимах:

База данных postgres может также находиться на рефери.

Физическая потоковая репликация, реализованная в BiHA, обеспечивает отказоустойчивость, защищая от отказов серверов и системы хранения данных. При физической репликации файлы WAL узла-лидера синхронно отправляются на узел-последователь и применяются на нём. При синхронной репликации для каждой фиксации транзакции пользователь ожидает подтверждения от узлов-последователей. Узлы-последователи BiHA-кластера могут использоваться для выполнения следующих задач:

Физическая потоковая репликация, реализованная в BiHA, обеспечивает защиту от следующих видов отказов:

26.1.1. Конфигурация Postgres Pro Shardman с BiHA #

Топология кластера задаётся в файле sdmspec, смотри пример. Если файл прописан заранее, то команда shardmnctl init инициализирует кластер с заданной топологией. В противном случае сделать это можно вручную:

shardmanctl init -f sdmspec.json --(создаёт пустой кластер)
shardanctl nodes add -n master1,master2
shardmactl shard -s shard-1 add -n follower1
shardmactl shard -s shard-2 add -n follower2
shardmactl shard -s shard-1 add -w ref1
shardmactl shard -s shard-2 add -w ref2

Предупреждение

Категорически запрещается редактировать shared_preload_libraries, поскольку это может привести к полному отказу кластера, так как в файле находятся три ключевых элемента, которые нельзя отключать: Shardman, BiHA и pgpro_bindump.

sdmspec также включает в себя postgresql.conf и pg_hba.biha.conf.

Инструкция по регистрации кластера Postgres Pro Shardman в хранилище etcd описана в разделе Регистрация кластера Postgres Pro Shardman.

При инициализации кластерного ПО автоматически создаётся база данных biha_db. Это техническая БД, операции с ней запрещены.

Создаются слоты репликации с именами формата biha_node_идентификатор. Слоты управляются автоматически, изменять или удалять их вручную не нужно.

Для работы BiHA требуются файлы конфигурации postgresql.biha.conf и pg_biha/biha.conf, их нельзя редактировать вручную.

26.1.2. Выборы #

Выборы — это процесс, запускаемый shardmand для автоматического определения нового лидера при отказе текущего. Выборы проводятся на основании кворума кластера — минимального числа узлов, участвующих в выборе лидера.

Обратите внимание, что вручную настроить кворум нельзя, поскольку это автоматически делает утилита shardmanctl. Кворум рассчитывается по следующей формуле:

число экземпляров на одном сегменте / 2 + 1 = число узлов, необходимых для кворума