2.1. Службы кластера
Конфигурация кластера Shardman хранится в etcd. Службы кластера Shardman организованы как службы systemd. Демон настройки Shardman shardmand отслеживает конфигурацию кластера и управляет экземплярами PostgreSQL посредством интегрированного менеджера stolon. У каждого узла есть одна служба shardmand, которая обычно называется shardmand@CLUSTER_NAME.service
. Здесь ИМЯ_КЛАСТЕРА
— это имя кластера Shardman, по умолчанию cluster0
.
Каждый shardmand включает в себя несколько интегрированных процессов stolon keeper
и stolon sentinel
.
С каждым зарегистрированным экземпляром СУБД связан процесс stolon keeper
, который напрямую управляет этим экземпляром PostgreSQL. Процесс keeper
запускает, останавливает, инициализирует и синхронизирует экземпляры PostgreSQL в зависимости от необходимого состояния кластера stolon.
С каждым зарегистрированным экземпляром СУБД связан процесс stolon sentinel
. Для каждой группы репликации процессы stolon sentinel
выбирают так называемого лидера среди таких существующих процессов. Этот лидер принимает решения о необходимом состоянии кластера (например, какой процесс keeper
должен стать новым ведущим при сбое). При выборе нового ведущего сервера в группе репликации лидер выбирает процесс keeper
с минимальной задержкой. Когда все реплики синхронны, keeper
с максимальным приоритетом выбирается новым ведущим, даже если ведущий сервер в группе репликации «жив». Shardman использует только синхронные реплики (в противном случае существует вероятность потери данных при сбое узла).
shardmand — это модуль systemd, его журналы записываются в journald. Ознакомиться с его работой можно, используя команду journalctl
. Например, чтобы получить все журналы с 2023-05-09 10:00
для службы shardmand кластера cluster0
, можно использовать следующую команду:
$
journalctl -u shardmand@cluster0 --since '2023-05-09 10:00'
Чтобы задать уровень детализации журнала для всех служб Shardman, укажите SDM_LOG_LEVEL
в файле конфигурации shardmand.