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

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

Ключ

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

Оглавление


применима к:
Информация
title

Данная статья

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и 2
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5)
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

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



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

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

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

Параметры стенда

Для развертывания кластера используются два подсоединённых к сети компьютера с установленной ОС Astra Linux. Каждый из этих компьютеров будет выполнять роль узла кластера, поэтому далее они будут называться Узел 1 и Узел 2.

Параметры сети:

  • Сеть 192.168.23.0/24;
  • Адрес маршрутизатора (шлюза) сети 192.168.23.1;
  • Предполагается, что в сети отстутствует служба DNS, поэтому адреса узлов задаются с помощью файла /etc/hosts.

Параметры узлов

ПараметрУзел 1Узел 2Имя узлаpcmk-1pcmk-2Статический IP-адрес узла192.168.23.101192.168.23.102

Дополнительно:

  • В качестве адреса кластера будет использован адрес 192.168.23.100;
  • Для тестирования отказоустойчивости используется рабочая станция, подключенная к той же сети;

Настройка стенда

Настройка сетевого соединения и имен узлов

Узел 1Узел 2

Присвоить узлу статический IP-адрес 192.168.23.101:

Command
sudo nmcli c d path 1
sudo nmcli c m path 1 ip4 192.168.23.101/24 gw4 192.168.23.1
sudo nmcli c m path 1 ipv4.method manual
sudo nmcli c u path 1

Присвоить узлу статический IP-адрес 192.168.23.102:

Command
sudo nmcli c d path 1
sudo nmcli c m path 1 ip4 192.168.23.102/24 gw4 192.168.23.1
sudo nmcli c m path 1 ipv4.method manual
sudo nmcli c u path 1

Записать имена узлов в файл /etc/hosts:

Command
sudo sed -i '$a 192.168.23.101\tpcmk-1' /etc/hosts
sudo sed -i '$a 192.168.23.102\tpcmk-2' /etc/hosts
sudo sed -i "/127\.0\.1\.1/d" /etc/hosts

Установить имя узла pcmk-1:

Command
sudo hostnamectl set-hostname pcmk-1

Установить имя узла pcmk-2:

Command
sudo hostnamectl set-hostname pcmk-2

Перезагрузить узел:

Command
sudo reboot

Установка кластерного ПО

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

Установить пакеты кластерного ПО:

Command
sudo apt install -y pacemaker pcs

Назначить пользователю hacluster пароль (для примера использован пароль 123):

Command
sudo chpasswd <<<'hacluster:123'

Инициализация кластера

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

Инициализировать кластер:

Command
sudo pcs cluster destroy

Собрать кластер (для примера используется имя кластера astracluster):

Command
sudo pcs cluster auth pcmk-1 pcmk-2 -u hacluster -p 123
sudo pcs cluster setup --name astracluster pcmk-1 pcmk-2 --force

Запустить кластер:

Command
sudo pcs cluster start --all

Отключить STONITH:

Информация

STONITH (Shoot The Other Node In The Head) - технология отвечающая за физическое устранение узла из кластера обеспечивающая полное обесточивание нееисправных узлов, чтобы исключить повреждение данных. Поскольку в тесте устройства управления электропитанием не зайдествованы, эту возможность удобнее отключить, иначе будет постоянно выдаваться предупреждение, что STONITH не сконфигурирован

Предупреждение
На кластерах находящихся в эксплуатации  STONITH обязательно должен быть настроен и включён для предотвращения событий, приводящих к повреждению данных.
apache2

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

Информация

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

Command
sudo pcs property set stonith-enabled=false
Информация
Процедура добавления узла в кластер занимает некоторое время, обычно не более 1 минуты.

Посмотреть состояние узлов кластера можно командой:

Command
sudo pcs status

Если кластер успешно стартовал, то состояние узлов кластера в выводе команды pcs status будет таким:

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

Проверить правильность конфигурации кластера можно командой:

Command

sudo crm_verify -L

Если конфигурация кластера содержит ошибки, утилита crm_verify о них сообщит.

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

Если узел кластера выключался/перезагружался, то считается, что узел работает нештатно, и решение о возможности его повторного включения в кластер может принять только человек. Автоматическое включение узлов в кластер не применяется. Для возврата узла в кластер требуется повторно добавить его в кластер, выполнив на нём команду:

Command
sudo pcs cluster start

Подготовка http-сервера Apache

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

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

Command
sudo apt install -y apache2
  1. Указать имя узла в конфигурации web-сайта Apache, используемой по умолчанию (файл /etc/apache2/sites-available/000-default.conf):

    Command
    sudo sed -i "1i ServerName $(hostname)" /etc/apache2/sites-available/000-default.conf


  2. Заменить содержимое индексного файла в пространстве документов Apache, используемое по умолчанию

    Command
    echo "Test Site - $(hostname)" | sudo tee /var/www/html/index.html


  3. Только для ОС Astra Linux

1.6 (Смоленск)
  1. Special Edition: отключить AstraMode режим в главной конфигурации Apache (файл /etc/apache2/apache2.conf):

    Command

    sudo sed -i '

/AstraMode/{
  1. s/

on/off/;s/# //}
  1. ^\s*#\?\s*AstraMode.*/AstraMode off/' /etc/apache2/apache2.conf


  2. Так как в дальнейшем работой

сериса Apache
  1. службы apache будет управлять Corosync, следует исключить

Apache
  1. apache2 из автоматической загрузки

    Command
    sudo systemctl disable apache2


  2. Перезапустить Apache:

    Command
    sudo apachectl restart


Подключение

ресурсов и настройка их поведения

ресурса

Информация
Выполняется на любом узле

Задать значение глобального таймаута на операции со всеми ресурсами:

Предупреждение
На рабочем кластере не рекомендуется использовать глобальный таймаут, следует задавать таймауты для каждой операции у каждого ресурса кластера, исходя из реальных значений временных интервалов, полученных на конкретной аппаратной платформе.
Command
sudo pcs resource op defaults timeout=240s
  1. Добавить

IP-адрес кластра 192.168.23.100 как ресурс ClusterIP:
Command
sudo pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.23.100 cidr_netmask=32 op monitor interval=30s
Добавить
  1. службу Apache как ресурс с именем WebSite:

    Command
    sudo pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/apache2/apache2.conf
statusurl="http://localhost/server-status"
  1. op monitor interval=1min


    Информация
    Параметры команды, задающиеся колючем op (в примере выше - параметр op monitor interval=1min должны указываться последними.


  2. Установить ограничения:

“WebSite
    1. Ограничение "ресурс WebSite должен работать на узле, где

размещён
    1. размещен ClusterIP”:

      Command
      sudo pcs constraint colocation add WebSite with ClusterIP INFINITY
“Сначала

    1. Ограничение "сначала запускается ClusterIP, затем WebSite”:

      Command
      sudo pcs constraint order ClusterIP then WebSite


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

Тест должен Тестирование должно продемонстрировать отказоустойчивость двухузлового кластера Active/Passiveсозданного кластера. Для тестирования используется отдельный компьютер, подключенный к той же сети.

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

На рабочей станции, находящейся в одной сети с кластером, создать компьютере, предназначенном для тестирования:

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

    Блок кода
    languagebash
    #!/bin/sh
    while true ; do
        wget --no-cache -qO- http://192.168.23.100/index.html
        sleep 1s
    done


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

    Command
    chmod +x test-request.sh


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

    Command
    ./test-request.sh
Сценарий
  1. После запуска сценарий будет отправлять запрос кластеру 1 раз в секунду и выводить полученное содержимое на экран.

  1. Если в данный момент ресурс ClusterIP размещён на узле 1, то вывод

сценарий
  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


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

узла кластера

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

    Command
    sudo pcs status resources


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

    Command
    sudo nmcli c d path 1


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

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


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

    Command
    sudo nmcli c u path 1
и дождаться его

  1. Дождаться возвращение узла в кластер. После возвращения узла в кластер команда;

    Command
    sudo pcs status

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

    Блок кода
    Online: [ pcmk-1 pcmk-2 ]
Выключение
  1. Если вывод команды на разных узлах различается - значит узел еще не вернулся в кластер. В этом случае проверку повторить после небольшой паузы.

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

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

    Command
    sudo pcs status resources


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

    Command
    sudo reboot


  3. Кластерные ресурсы мигрируют на другой узел кластера и вывод

скрипта
  1. сценария test-request.sh изменится.

  1. Если кластерные ресурсы располагались на узле 2, то после выключения узла 2 ресурсы переместятся на узел 1. Пример вывода тестового сценария:

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


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

нём
  1. нем команду:

    Command
    sudo pcs cluster start