Оглавление |
---|
Информация | |
---|---|
title | Данная статья | применима к:
| |
является частью статьи: Развертывание двухузлового кластера pacemaker и применима в рамках указанной статьи. |
Параметры стенда
Для развертывания кластера используются два подсоединенных к сети компьютера с установленной ОС Astra Linux. Каждый из этих компьютеров будет выполнять роль узла кластера, поэтому далее они будут называться Узел 1 и Узел 2. Для тестирования отказоустойчивости используется рабочая станция, подключенная к той же сети.
Параметры сети:
- Сеть 192.168.23.0/24;
- Адрес маршрутизатора (шлюза) сети 192.168.23.1;
- Предполагается, что в сети отсутствует служба DNS, поэтому адреса узлов задаются с помощью файла /etc/hosts.
Параметры узлов
Дополнительно в качестве IP-адреса кластера будет использован адрес 192.168.23.100. IP-адрес станции для тестирования неважен.
Настройка стенда
Настройка сетевых подключений
Узлам рекомендуется присвоить статические адреса. Если на узлах кластера для управления сетевыми подключениями используется NetworkManager настройку можно выполнить с помощью графического инструмента или из командной строки командами:
Присвоить узлу статический 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 |
Подробнее про настройку сетевых подключений см. Настройка сетевых подключений в Astra Linux.
Настройка /etc/hosts
Записать имена узлов в файл /etc/hosts и удалить строку 127.0.1.1:
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 |
Установка пакетов
Информация |
---|
Установка пакетов выполняется на каждом узле кластера. |
Установить пакеты кластерного ПО и сервера apache2:
Command |
---|
sudo apt install -y pacemaker pcs apache2 |
После установки пакетов назначить пользователю hacluster пароль:
Command |
---|
sudo passwd hacluster |
Заданный на этом шаге пароль далее в примерах обозначается как <пароль>.
Инициализация кластера
Информация |
---|
Инициализация кластера выполняется однократно на любом узле кластера. |
Инициализировать кластер:
Command |
---|
sudo pcs cluster destroy |
Собрать кластер (для примера используется имя кластера astracluster):
Для Astra Linux Special Edition x.7:
Command |
---|
sudo pcs host auth pcmk-1 pcmk-2 -u hacluster -p <пароль> sudo pcs cluster setup astracluster pcmk-1 pcmk-2 --force |
Для обновлений Astra Linux Special Edition до x.7 и Astra Linux Common Edition:
Command |
---|
sudo pcs cluster auth pcmk-1 pcmk-2 -u hacluster -p <пароль> sudo pcs cluster setup --name astracluster pcmk-1 pcmk-2 --force |
Запустить кластер:
Command |
---|
sudo pcs cluster start --all |
Проверить, что кластер полностью запустился:
Command |
---|
while ! sudo pcs status ; do sleep 1 ; done |
Отключить 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 ] |
Проверить правильность конфигурации кластера можно командой:
sudo crm_verify -L
Если конфигурация кластера содержит ошибки, утилита crm_verify о них сообщит.
Если узел кластера выключался/перезагружался, то считается, что узел работает нештатно, и решение о возможности его повторного включения в кластер может принять только человек. Автоматическое включение узлов в кластер не применяется. Для возврата узла в кластер требуется повторно добавить его в кластер, выполнив на нем команду:
Command |
---|
sudo pcs cluster start |
Подготовка http-сервера Apache
Информация |
---|
Выполняется на каждом узле |
Указать имя узла в конфигурации web-сайта Apache, используемой по умолчанию (файл /etc/apache2/sites-available/000-default.conf):
Command sudo sed -i "1i ServerName $(hostname)" /etc/apache2/sites-available/000-default.conf Заменить содержимое индексного файла в пространстве документов Apache, используемое по умолчанию
Command echo "Test WEB Site - $(hostname)" | sudo tee /var/www/html/index.html Только для ОС Astra Linux Special Edition:
отключить AstraMode в главной конфигурации Apache (файл /etc/apache2/apache2.conf):
Command sudo sed -i 's/^\s*#\?\s*AstraMode.*/AstraMode off/' /etc/apache2/apache2.conf
Так как в дальнейшем работой службы apache будет управлять Corosync, следует исключить Apache из автоматической загрузки
Command sudo systemctl disable apache2 Перезапустить Apache:
Command sudo apachectl restart
Подключение
ресурсов и настройка их поведенияресурса
Информация |
---|
Выполняется на любом узле |
Задать значение глобального таймаута на операции со всеми ресурсами:
Предупреждение |
---|
На рабочем кластере не рекомендуется использовать глобальный таймаут, следует задавать таймауты для каждой операции у каждого ресурса кластера, исходя из реальных значений временных интервалов, полученных на конкретной аппаратной платформе. |
Command |
---|
sudo pcs resource op defaults timeout=240s |
Добавить 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 |
Добавить службу Apache как ресурс с именем WebSite:
Command sudo pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/apache2/apache2.conf op monitor interval=1min Установить ограничения:
Ресурс “WebSite должен работать на узле, где
размещен ClusterIP”:
Command sudo pcs constraint colocation add WebSite with ClusterIP INFINITY “Сначала запускается ClusterIP, затем WebSite”:
Command sudo pcs constraint order ClusterIP then WebSite
Тестирование
Тест должен Тестирование должно продемонстрировать отказоустойчивость двухузлового созданного кластера Active/Passive.
Подготовка теста
На рабочей станции, находящейся в одной сети с кластером, создать клиентской машине, предназначенной для тестирования:
Создать сценарий test-request.sh следующего содержания:
Блок кода language bash #!/bin/sh while true ; do wget --no-cache -qO- http://192.168.23.100/index.html sleep 1s done
Установить созданному файлу сценария права на исполнение
Command chmod +x test-request.sh Запустить сценарий:
Command ./test-request.sh
После запуска сценарий будет отправлять запрос кластеру 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
Отключение узла кластера от сети
узла кластераНайти узел кластера, на котором размещены ресурсы, выполнив команду на любом узле:
Command |
---|
sudo pcs status resources |
На узле с кластерными ресурсами отключить сетевое соединение
Command |
---|
sudo nmcli c d path 1 |
Кластерные ресурсы мигрируют на другой узел кластера и вывод скрипта 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 |
Включить сетевое соединение на отключённом от сети узле:
Command |
---|
sudo nmcli c u path 1 |
и дождаться его возвращение в кластер. После возвращения узла в кластер команда;
Command |
---|
sudo pcs status |
должна вывести:
Блок кода |
---|
Online: [ pcmk-1 pcmk-2 ] |
Выключение узла кластера
Найти узел кластера, на котором размещены ресурсы, выполнив команду на любом узле:
Command |
---|
sudo pcs status resources |
Выключить узел с кластерными ресурсами, перезагрузив его:
Command |
---|
sudo reboot |
Кластерные ресурсы мигрируют на другой узел кластера и вывод скрипта test-request.sh изменится.
Если кластерные ресурсы располагались на узле 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 |
Когда выключенный узел загрузится вернуть его в кластер, выполнив на нём команду:
Command |
---|
sudo pcs cluster start |