Настройка БД
Настройка postgresql.conf и pg_hba.conf
-
На каждом из узлов БД (Узел БД 1 и Узел БД 2) необходимо указать представленные ниже параметры:
-
В файле /etc/postgresql/11/main/postgresql.conf:
listen_addresses = '*' wal_level = replica wal_keep_segments = 32
-
В файле /etc/postgresql/11/main/pg_hba.conf:
host replication postgres 192.168.31.34/32 trust host replication postgres 192.168.31.42/32 trust
192.168.31.34/32 и 192.168.31.42/32 - IP-адреса узлов ранее подготовленного кластера pacemaker (astra-disp-db-cluster).
Примечание
Репликация без паролей представлена в качестве примера. В реальной рабочей среде учетные данные должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты.
-
-
Перезапустить службу БД:
sudo systemctl restart postgresql
Далее предполагается, что узлу 192.168.31.42/32 назначается роль master, а узлу 192.168.31.34/32 - slave.
Синхронизация узлов кластерной службы postgresql
Важно
Следующие шаги необходимо выполнять только на узлах кластера с ролью slave.
-
Действуя от имени пользователя postgres, удалить содержимое кластера СУБД:
sudo -u postgres sh -c "rm -rf /var/lib/postgresql/*/main/*"
-
Действуя от имени пользователя postgres, создать резервную копию ведущего узла:
sudo -u postgres pg_basebackup -h 192.168.31.42 -D /var/lib/postgresql/11/main -P
Обращение к ведущему узлу выполняется по его адресу.
Созданная резервная копия будет использована для создания локальной копии базы данных.
-
В дальнейшем службой postgresql будет управлять кластер pacemaker. Для исключения конфликтов между кластером и службой systemd на всех узлах (включая узел с ролью master) необходимо отключить автоматический запуск службы postgresql при перезагрузке ОС и остановить службу:
sudo systemctl disable postgresql
sudo systemctl stop postgresql
Создание кластерного ресурса
Для создания кластерного ресурса необходимо добавить кластерную службу СУБД как ресурс с именем pgsql. Для этого на узле с ролью master:
-
Выполнить команду создания ресурса (имя создаваемого ресурса — pgsql):
sudo pcs resource create pgsql ocf:astra:pgsql pgversion="11" rep_mode="sync" master_ip="192.168.31.200" node_list="astra-pcmk-db-1 astra-pcmk-db-2"
-
Установить параметры службы:
-
Объявить ресурс pgsql promotable (повышаемым) и создать вторичный ресурс:
sudo pcs resource promotable pgsql promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
Такие ресурсы могут переключаться между двумя режимами работы - master и slave.
-
Объявить зависимости от других кластерных ресурсов:
sudo pcs constraint colocation add ClusterIP with master pgsql-clone INFINITY
-
-
Запустить кластер:
sudo pcs cluster start --all
-
Проверить статус службы:
sudo pcs status
Ошибка
exitreason='Replication(rep_mode=async or sync) requires Master/Slave configuration.'
Если команда проверки состоянияsudo pcs status
сообщает об ошибкеexitreason='Replication(rep_mode=async or sync) requires Master/Slave configuration.'
, то для устранения ошибки необходимо остановить и повторно запустить кластер:sudo pcs cluster stop --all
sudo pcs cluster start --all
После полного запуска кластера можно приступать к установке узла с ролью Leader Space Disp, используя виртуальный IP-адрес (192.168.31.200) в качестве адреса БД.