- Кластерная служба postgresql для кластера pacemaker
- Введение
- Установка пакетов
- Настройка СУБД postgresql
- Синхронизация узлов кластерной службы postgresql
- Создание кластерного ресурса
- Тестирование
- Тестирование репликации
- Тестирование отказоустойчивости
- Восстановление сбойного узла
- Astra Linux + Pacemaker&Corosync PGSQL
- Кластерная служба apache2 для кластера pacemaker
- Установка пакетов
- Подготовка данных для тестирования
- Подключение ресурса
- Тестирование
- Подготовка теста
- Отключение узла кластера от сети
- Полное выключение узла кластера
Кластерная служба postgresql для кластера pacemaker
Данная статья является частью статьи: Развертывание двухузлового кластера pacemaker и применима в рамках указанной статьи.
Данная статья применима начиная с:
- Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7) с установленным обновлением БЮЛЛЕТЕНЬ № 2022-1110SE17 (оперативное обновление 1.7.3)
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7) с установленным обновлением БЮЛЛЕТЕНЬ № 2022-1110SE17 (оперативное обновление 1.7.3)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7) с установленным обновлением БЮЛЛЕТЕНЬ № 2022-1121SE47 (оперативное обновление 4.7.3)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
При работе с защищенной СУБД postgresql с использованием МРД (см. Уровень конфиденциальности, категории конфиденциальности и целостность: что есть что, и как с этим работать?) рекомендуется использовать специальный агент ocf:astra:pgsql. Этот агент доступен в составе :
- Astra Linux Special Edition x.7 и Astra Linux Special Edition РУСБ.10015-17 начиная с обновлений БЮЛЛЕТЕНЬ № 2022-1110SE17 (оперативное обновление 1.7.3) и БЮЛЛЕТЕНЬ № 2022-1121SE47 (оперативное обновление 4.7.3);
- Astra Linux Special Edition РУСБ.10015-17;
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) начиная с установленным обновлением БЮЛЛЕТЕНЬ № 20221220SE16 (оперативное обновление 12).
Для работы без использования МРД и для работы в более ранних обновлениях Astra Linux соедует использовать обычный для Linux агент ocf:heartbeat:pgsql.
Введение
Предполагается, что дальнейшие действия выполняются на ранее подготовленном кластере pacemaker. См. статью Развертывание двухузлового кластера pacemaker.
В рамках подготовки кластера созданы два узла кластера с адресами 192.168.23.101/32 и 192.168.23.102/32, а сам кластер имеет адрес 192.168.23.100.
Далее в созданном кластере pacemaker создается отказоустойчивая кластерная служба СУБД PostgreSQL с репликацией данных между узлами. В процессе настройки один из узлов назначается ведущим (master), второй (остальные) — подчиненным (slave). При отказе ведущего узла подчиненный узел автоматически становится ведущим.
Настройка и тестирование аутентификации пользователей и работы МРД в данной статье не рассматривается и не тестируется. См.:
Установка пакетов
Установить метапакет postgresql:
- В Astra Linux Special Edition x.7 будет установлена защищенная СУБД PostgreSQL версии 11.
- В Astra Linux Special Edition, выпущенных до обновления x.7, будет установлена защищенная СУБД PostgreSQL версии 9.6.
- В Astra Linux Common Edition будет установлена СУБД PostgreSQL версии 9.6 без встроенной защиты.
При установке СУБД будет создан кластер СУБД (не путать с кластером pacemaker) с именем main.
Настройка СУБД postgresql
Для настройки работы СУБД postgesql проверить указанные ниже параметры и привести их к указанным значениям (добавить в случае отсутствия):
- В конфигурационном файле СУБД /etc/postgresql///postgresql.conf:
listen_addresses = '*' wal_level = replica wal_keep_segments = 32
host replication postgres 192.168.23.101/32 trust host replication postgres 192.168.23.102/32 trust
где 192.168.23.101/32 и 192.168.23.102/32 — IP-адреса узлов ранее подготовленного кластера pacemaker.
Далее предполагается, что узел 192.168.23.101/32 назначается ведущим (master), а узел 192.168.23.102/32 — ведомым (slave).
Синхронизация узлов кластерной службы postgresql
Выполнить синхронизацию данных между узлами кластерной службы postgresql, для чего на подчиненном узле (на всех подчиненных узлах):
- Действуя от имени пользователя postgres удалить содержимое кластера СУБД:
Создание кластерного ресурса
- Добавить кластерную службу СУБД как ресурс с именем pgsql. Для этого на ведущем узле:
- Выполнить команду создания ресурса (в качестве номера версии использовать значения 9.6 или 11 в соответствии с используемой версией PostgreSQL). Имя создаваемого ресурса — pgsql. Команды:
- В случаях, если требуется (или, возможно, потребуется в будущем) работа с поддержкой МРД:
sudo pcs resource create pgsql ocf:astra:pgsql \
pgversion=»» \
rep_mode=»sync» \
master_ip=»192.168.23.100″ \
node_list=»pcmk-1 pcmk-2″- pgsql — имя (идентификатор) создаваемого виртуального ресурса;
- ocf:astra:pgsql — название предопределенного набора параметров ресурса (агент).
sudo pcs resource create pgsql ocf:heartbeat:pgsql \
pgctl=»/usr/lib/postgresql//bin/pg_ctl» \
pgdata=»/var/lib/postgresql//main» \
config=»/etc/postgresql//main/postgresql.conf» \
socketdir=»/var/run/postgresql/» \
op monitor interval=1min \
rep_mode=»sync» \
master_ip=»192.168.23.100″ \
node_list=»pcmk-1 pcmk-2″sudo pcs resource promotable pgsql promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
sudo pcs resource master mspgsql pgsql master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
- mspgsql — имя мастер-ресурса, предоставляющего доступ к активному ведущему серверу;
- pgsql — ранее созданный ресурс СУБД.
Cluster name: astracluster Stack: corosync Current DC: pcmk-1 (version 2.0.1-9e909a5bdd) - partition with quorum Last updated: Sat Mar 11 18:40:21 2023 Last change: Sat Mar 11 18:39:28 2023 by root via crm_attribute on pcmk-1 2 nodes configured 3 resources configured Online: [ pcmk-1 pcmk-2 ] Full list of resources: ClusterIP (ocf::heartbeat:IPaddr2): Started pcmk-1 Clone Set: pgsql-clone [pgsql] (promotable) Masters: [ pcmk-1 ] Slaves: [ pcmk-2 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Тестирование
Тестирование должно продемонстрировать отказоустойчивость созданного кластера. Настройка и тестирование аутентификации пользователей и работы МРД в данной статье не рассматривается и не тестируется.
Тестирование репликации
Тестирование отказоустойчивости
В выводе команды должно быть указано, что узел выводится из эксплуатации (demoting). Пример вывода команды:
Cluster name: astracluster Stack: corosync Current DC: pcmk-1 (version 2.0.1-9e909a5bdd) - partition with quorum Last updated: Sun Mar 12 15:17:55 2023 Last change: Sun Mar 12 15:12:38 2023 by root via crm_attribute on pcmk-1 2 nodes configured 3 resources configured Online: [ pcmk-1 pcmk-2 ] Full list of resources: ClusterIP (ocf::heartbeat:IPaddr2): Started pcmk-2 Clone Set: pgsql-clone [pgsql] (promotable) pgsql (ocf::astra:pgsql): Demoting pcmk-1 Slaves: [ pcmk-2 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Online: [ pcmk-1 pcmk-2 ] Full list of resources: ClusterIP (ocf::heartbeat:IPaddr2): Started pcmk-2 Clone Set: pgsql-clone [pgsql] (promotable) Masters: [ pcmk-2 ] Stopped: [ pcmk-1 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Восстановление сбойного узла
Для восстановления сбойного узла выполнить на этом узле следующие действия:
- Выполнить синхронизацию данных с действующим ведущим сервером. См. Синхронизация узлов кластерной службы postgresql.
- Удалить файл /var/lib/pgsql/tmp/PGSQL.lock:
После перезапуска сбойного узла мастер-сервером останется работавший узел, а перезапущенный узел получит статус подчиненного:
Cluster name: astracluster Stack: corosync Current DC: pcmk-2 (version 2.0.1-9e909a5bdd) - partition with quorum Last updated: Tue Apr 11 14:13:34 2023 Last change: Tue Apr 11 14:05:24 2023 by root via crm_attribute on pcmk-2 2 nodes configured 3 resources configured Online: [ pcmk-1 pcmk-2 ] Full list of resources: ClusterIP (ocf::heartbeat:IPaddr2): Started pcmk-2 Clone Set: pgsql-clone [pgsql] (promotable) Masters: [ pcmk-2 ] Slaves: [ pcmk-1 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Astra Linux + Pacemaker&Corosync PGSQL
Здравствуйте. Уже достаточно бьюсь над конфигурацией этой сборки, и ни как не выйдет. Направьте/подскажите в решении моего вопроса. Далее сама проблема. Имеется Astra Linux SE 1.5, Corosync 1.4.2, Pacemaker 1.1.7, PostgreSQL 9.4, GateMaster и GateSlave Пытаюсь добиться отказоустойчивости. Сконфигурировал PostgreSQL для синхронной репликацией, всё проверено, она работает. Дальше настроил связку менеджера ресурсов между GateMaster-GateSlave. Теперь проблема в том, что я перелопатил множество документации из разных мест, большинство из них под RedHat/CentOS, и при добавлении pgsql в виде ресурса в pacemaker, предлагаемые параметры для его описания кардинально отличаются. Я настроил так:
node GateMaster \ attributes standby="off" node GateSlave \ attributes standby="off" primitive pgsql ocf:heartbeat:pgsql \ params config="/etc/postgresql/9.4/main/postgresql.conf" pgctl="/usr/lib/postgresql/9.4/bin/pg_ctl" pgdata="/var/lib/postgresql/9.4/main" pgport="5432" psql="/usr/lib/postgresql/9.4/bin/psql" pgdb="postgres" monitor_user="postgres" monitor_password="password" \ op monitor interval="10" role="Master" timeout="120" \ op monitor interval="30" role="Slave" timeout="130" \ op start interval="0" timeout="120" \ op stop interval="0" timeout="120" ms ms-pgsql pgsql \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" target-role="Slave" is-managed="true" property $id="cib-bootstrap-options" \ dc-version="1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff" \ cluster-infrastructure="openais" \ expected-quorum-votes="2" \ stonith-enabled="false" \ no-quorum-policy="ignore" \ default-resource-stickiness="100" \ last-lrm-refresh="1551339122" \ maintenance-mode="false"
============ Last updated: Thu Feb 28 11:25:20 2019 Last change: Thu Feb 28 11:04:58 2019 via cibadmin on GateSlave Stack: openais Current DC: GateSlave - partition with quorum Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff 2 Nodes configured, 2 expected votes 2 Resources configured. ============ Online: [ GateMaster GateSlave ] Master/Slave Set: ms-pgsql [pgsql] Slaves: [ GateMaster GateSlave ] Node Attributes: * Node GateMaster: * Node GateSlave:
Masters: [ GateMaster ] Slaves: [ GateSlave ]
а так же в строке Note Attributes отображается состояние базы данных, режим репликации. У меня такого нема. Направьте куда смотреть или чяднт. Если нужны какие либо ещё подробности, скажите — скину. Я, видимо, уже голову забил разной документацией и теперь сам в своей каше варюсь. ps. В данном дистрибе ОС отсутствуют пакеты pcs и crmsh. Ведь без них то же реально настроить?
Кластерная служба apache2 для кластера pacemaker
Данная статья является частью статьи: Развертывание двухузлового кластера pacemaker и применима в рамках указанной статьи.
Установка пакетов
Установить пакеты сервера apache2:
Подготовка данных для тестирования
Подготовка данных для тестирования в ыполняется на каждом узле кластера.
- Указать имя узла в конфигурации web-сайта Apache, используемой по умолчанию (файл /etc/apache2/sites-available/000-default.conf):
Подключение ресурса
sudo pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/apache2/apache2.conf op monitor interval=1min
Тестирование
Тестирование должно продемонстрировать отказоустойчивость созданного кластера.
Подготовка теста
На клиентской машине, предназначенной для тестирования:
- Создать сценарий test-request.sh следующего содержания:
#!/bin/sh while true ; do wget --no-cache -qO- http://192.168.23.100/index.html sleep 1s done
После запуска сценарий будет отправлять запрос кластеру 1 раз в секунду и выводить полученное содержимое на экран.
Если в данный момент ресурс ClusterIP размещён на узле 1, то вывод сценарий будет таким:Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-1
Отключение узла кластера от сети
Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-2 Test Site - pcmk-2 Test Site - pcmk-2
Полное выключение узла кластера
Test Site - pcmk-2 Test Site - pcmk-2 Test Site - pcmk-2 Test Site - pcmk-1 Test Site - pcmk-1 Test Site - pcmk-1
- Выполнить команду создания ресурса (в качестве номера версии использовать значения 9.6 или 11 в соответствии с используемой версией PostgreSQL). Имя создаваемого ресурса — pgsql. Команды: