Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация

Данная статья является частью статьи: Развертывание двухузлового кластера pacemaker и применима в рамках указанной статьи.


Установка пакетов

Информация
Установка пакетов выполняется на каждом узле кластера.

Установить пакеты:

  1. Для Astra Linux Special Edition x.7:

    Command
    sudo apt install postgresql-11

    или, в зависимости от подключенных репозиториев и установленных оперативных обновлений и при отсутствии необходимости использовать МРД:

    Command
    sudo apt install postgresql-14


  2. Для обновлений Astra Linux Special Edition до x.7 и Astra Linux Common Edition:

    Command
    sudo apt install postgresql-astra


  3. При работе в Astra Linux Special Edition 1.6 после установки пакетов включить служебного пользователя postgres в группу shadow:

    Command
    sudo usermod -aG shadow postgres


Подготовка данных для тестирования

Информация

Подготовка данных для тестирования выполняется на каждом узле кластера.

  1. Перейти в каталог /tmp:

    Command
    cd /tmp


  2. Создать базу данных cluster:

    Command
    sudo -u postgres createdb cluster


  3. Создать в базе данных таблицу info:

    Command
    sudo -u postgres psql -d cluster -c "CREATE TABLE info (text varchar(80));"


  4. Добавить в таблицу запись, содержащую имя сервера:

    Command
    sudo -u postgres psql -d cluster -c "INSERT INTO info VALUES ('Test DB - $(hostname)');"


  5. Задать пароль пользователю СУБД PostgreSQL (для примера использован пароль 123):

    Command
    sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '123';"


  6. Разрешить СУБД PostgreSQL принимать внешние подключения:

    Command
    sudo sed -i '/^listen_addresses/s/localhost/*/' /etc/postgresql/<номер_версии>/main/postgresql.conf


  7. Так как в дальнейшем работой сервиса будет управлять Corosync, следует исключить агента из автоматической загрузки:

    Command
    sudo systemctl disable postgresql


  8. Перезапустить кластер СУБД main:

    Command
    sudo pg_ctlcluster <номер_версии> main restart

    Где <номер_версии> - 9.6, 11 или 14 в зависимости от используемой версии PostgreSQL.

Подключение ресурса

  1. Добавить службу PostgreSQL как ресурс с именем Database:

    1. Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с установленным оперативным обновлением БЮЛЛЕТЕНЬ № 2022-1110SE17 (оперативное обновление 1.7.3):

      Command

      sudo pcs resource create Database ocf:astra:pgsql pgversion=$psql_version op monitor interval=1min


    2. Для более ранних обновлений или в случаях, когда поддержка МРД в кластерных службах не требуется:

      Command

      sudo pcs resource create Database 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

      Где <номер_версии> - 9.6, 11 или 14 в зависимости от используемой версии PostgreSQL;

  2. Установить ограничения:
    1. "Ресурс Database должен работать на узле, где размещен ClusterIP":

      Command
      sudo pcs constraint colocation add Database with ClusterIP INFINITY


    2. "Сначала запускается ClusterIP, затем Database":

      Command
      sudo pcs constraint order ClusterIP then Database


Тестирование

Тестирование должно продемонстрировать отказоустойчивость созданного кластера. Тестирование работы МРД не рассматривается.

Подготовка теста

На клиентской машине, предназначенной для тестирования:

  1. Установить клиентский пакет СУБД PostgreSQL:

    Command
    sudo apt install postgresql-client


  2. Создать сценарий test-request.sh следующего содержания:

    Блок кода
    languagebash
    #!/bin/sh
    while true ; do
     psql postgresql://postgres:123@192.168.23.100/cluster -tc "SELECT text FROM info;" | xargs echo
     sleep 1s
    done


  3. Установить созданному файлу сценария права на исполнение

    Command
    chmod +x test-request.sh


  4. Запустить сценарий:

    Command
    ./test-request.sh

    После запуска сценарий будет отправлять запрос кластеру 1 раз в секунду и выводить полученное содержимое на экран.
    Если в данный момент ресурс ClusterIP размещен на узле 1, то вывод сценарий будет таким:

    Блок кода
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-1


Отключение узла кластера от сети

  1. Найти узел кластера, на котором размещены ресурсы, выполнив команду на любом узле:

    Command
    sudo pcs status resources


  2. На узле с кластерными ресурсами отключить сетевое соединение:

    Command
    sudo nmcli c d path 1


  3. Кластерные ресурсы мигрируют на другой узел кластера и вывод сценария test-request.sh изменится. Например, если кластерные ресурсы располагались на узле 1, то после отключения узла 1 от сети, ресурсы переместятся на узел 2.

    Блок кода
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-2
    Test DB - pcmk-2


  4. Включить сетевое соединение на отключенном от сети узле:

    Command
    sudo nmcli c u path 1


  5. Дождаться возвращение узла в кластер. После возвращения узла в кластер выполненная на любом из узлов команда

    Command
    sudo pcs status

    должна вывести:

    Блок кода
    Online: [ pcmk-1 pcmk-2 ]

    Если вывод команды на разных узлах различается - значит узел еще не вернулся в кластер.

Полное выключение узла кластера

  1. Найти узел кластера, на котором размещены ресурсы, выполнив команду на любом узле:

    Command
    sudo pcs status resources


  2. Выключить узел с кластерными ресурсами, перезагрузив его:

    Command
    sudo reboot


  3. Кластерные ресурсы мигрируют на другой узел кластера и вывод сценария test-request.sh изменится. Если кластерные ресурсы располагались на узле 2, то после выключения узла 2 ресурсы переместятся на узел 1.

    Блок кода
    Test DB - pcmk-2
    Test DB - pcmk-2
    Test DB - pcmk-2
    Test DB - pcmk-1
    Test DB - pcmk-1
    Test DB - pcmk-1


  4. Когда выключенный узел загрузится вернуть его в кластер, выполнив на нем команду:

    Command
    sudo pcs cluster start