Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Параметры стенда
Для развертывания кластера используются два подсоединённых к сети компьютера с установленной ОС Astra Linux. Каждый из этих компьютеров будет выполнять роль узла кластера, поэтому далее они будут называться Узел 1 и Узел 2.
Параметры сети:
- Сеть 192.168.23.0/24;
- gateway 192.168.23.1;
- Предполагается, что в сети отстутствует служба DNS, поэтому адреса узлов задаются с помощью файла /etc/hosts.
Параметры узлов
Параметр | Узел 1 | Узел 2 |
---|---|---|
Имя узла | tpcmk-1 | tpcmk-2 |
Статический IP-адрес узла | 192.168.23.101 | 192.168.23.102 |
Дополнительно для тестирования отказоустойчивости используется рабочая станция, подключенная к той же сети.
Настройка стенда
Настройка сетевого соединения и имен узлов
Узел 1 | Узел 2 | ||||
---|---|---|---|---|---|
Присвоить узлу статический IP-адрес 192.168.23.101:
| Присвоить узлу статический IP-адрес 192.168.23.102:
| ||||
Записать имена узлов в файл /etc/hosts:
| |||||
Установить имя узла pcmk-1:
| Установить имя узла pcmk-2:
| ||||
Перезагрузить узел:
|
Установка кластерного ПО
Информация |
---|
Установка кластерного ПО выполняется на каждом узле. |
Установить пакеты кластерного ПО:
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
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 о них сообщит.
Предупреждение |
---|
Если узел кластера выключался/перезагружался, требуется повторно добавить его в кластер, выполнив на нём команду: sudo pcs cluster start |
Предупреждение |
---|
На кластерах находящихся в эксплуатации обязательно должен быть настроен и включён STONITH для предотвращения событий, приводящих к повреждению данных. |
Подготовка http-сервера Apache
Информация |
---|
Выполняется на каждом узле |
Установить пакеты Apache:
Command |
---|
sudo apt install -y apache2 |
Указать имя узла в конфигурации 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 Site - $(hostname)" | sudo tee /var/www/html/index.html |
Только для ОС Astra Linux 1.6 (Смоленск): отключить AstraMode в главной конфигурации Apache (файл /etc/apache2/apache2.conf):
Command |
---|
sudo sed -i '/AstraMode/{s/on/off/;s/# //}' /etc/apache2/apache2.conf |
Исключить 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 statusurl="http://localhost/server-status" 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 следующего содержания:
Блок кода | ||
---|---|---|
| ||
#!/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-script.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 |
и дождаться его возвращение в кластер. После возвращения узла в кластер команда pcs status должна вывести:
Блок кода |
---|
Online: [ pcmk-1 pcmk-2 ] |
Выключение узла кластера
Найти узел кластера, на котором размещены ресурсы, выполнив команду на любом узле:
Command |
---|
sudo pcs status resources |
Выключить узел с кластерными ресурсами, перезагрузив его:
Command |
---|
sudo reboot |
Кластерные ресурсы мигрируют на другой узел кластера и вывод скрипта test-script.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 |