2.9.21.1 Организация отказоустойчивого кластера
Скачать документ Вводные данные
Предварительная подготовка кластера
Создание и настройка кластера
IPMI
STONITH
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Сервер графический
- Версия ПО: pcs - 0.10.14, pacemaker - 2.1.4, corosync - 3.1.6
Corosync - это программа с открытым исходным кодом, которая предоставляет возможности кластерного членства и обмена сообщениями, часто называемые уровнем обмена сообщениями, на клиентские серверы.
Pacemaker - это менеджер ресурсов кластера с открытым исходным кодом (CRM), который координирует ресурсы и службы, которые управляются и становятся доступными кластеру. По сути, Corosync позволяет серверам связываться как кластер, в то время как Pacemaker предоставляет возможность управлять тем, как ведет себя кластер.
Архитектура pacemaker состоит из трех уровней:
- Кластеронезависимый уровень - на этом уровне располагаются сами ресурсы и их скрипты, которыми они управляются, и локальный демон, который скрывает от других уровней различия в стандартах, использованных в скриптах.
- Менеджер ресурсов (Pacemaker), который реагирует на события, происходящие в кластере: отказ или присоединение узлов, ресурсов, переход узлов в сервисный режим и другие административные действия. Pacemaker, исходя из сложившейся ситуации, делает расчет наиболее оптимального состояния кластера и дает команды на выполнение действий для достижения этого состояния (остановка/перенос ресурсов или узлов).
- Информационный уровень - на этом уровне осуществляется сетевое взаимодействие узлов, т.е. передача сервисных команд (запуск/остановка ресурсов, узлов и т.д.), обмен информацией о полноте состава кластера (quorum) и т.д. На этом уровне работает Corosync.
Вводные данные
Администраторы самостоятельно определяют, какое количество нод необходимо для отказоустойчивого кластера в зависимости от ресурсов и задач. В данной статье в качестве примера будет рассмотрен кластер из двух узлов - node1 и node2:
10.81.186.128 - node1
10.81.186.130 - node2
Предварительная подготовка кластера
Раздел «Предварительная подготовка» выполняется на каждом сервере.
Команды выполняются с правами пользователя root, если не указано иное.
1. Задайте имя ноды командой:
hostnamectl set-hostname <имя_ноды>
Например, задайте имя node1:
hostnamectl set-hostname node1
2. В файле /etc/hosts необходимо внести IP и имя каждой ноды, во избежание проблем с DNS, строкой вида:
127.0.0.1 <имя_ноды>
Пример файла /etc/hosts (добавленные строки выделены жирным шрифтом):
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.81.186.128 node1
10.81.186.130 node2
3. Установите необходимые компоненты:
dnf install pcs pacemaker corosync
4. Основная утилита управлением кластером - pcs. Данная утилита создает пользователя hacluster, для которого необходимо задать пароль:
passwd hacluster
5. Добавьте службы в автозапуск:
systemctl enable pcsd pacemaker corosync
6. Выполните запуск службы:
systemctl start pcsd
Создание и настройка кластера
1. Перед настройкой и первым запуском кластера необходимо однократно произвести авторизацию узлов в кластере:
pcs host auth node1 node2 -u hacluster -p password node2: Authorized node1: Authorized
2. Настройте кластер:
pcs cluster setup Cluster node1 node2 No addresses specified for host 'node1', using 'node1' No addresses specified for host 'node2', using 'node2' Destroying cluster on hosts: 'node1', 'node2'... node2: Successfully destroyed cluster node1: Successfully destroyed cluster Requesting remove 'pcsd settings' from 'node1', 'node2' node1: successful removal of the file 'pcsd settings' node2: successful removal of the file 'pcsd settings' Sending 'corosync authkey', 'pacemaker authkey' to 'node1', 'node2' node2: successful distribution of the file 'corosync authkey' node2: successful distribution of the file 'pacemaker authkey' node1: successful distribution of the file 'corosync authkey' node1: successful distribution of the file 'pacemaker authkey' Sending 'corosync.conf' to 'node1', 'node2' node1: successful distribution of the file 'corosync.conf' node2: successful distribution of the file 'corosync.conf' Cluster has been successfully set up.
3. Включите в автозагрузку и запустите кластер:
pcs cluster enable --all && pcs cluster start --all node1: Cluster Enabled node2: Cluster Enabled node2: Starting Cluster... node1: Starting Cluster...
4. Выполните следующие команды:
pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore
Если ноды разворачиваются на серверах с поддержкой ipmi, то в строке pcs property set stonith-enabled
укажите значение true
. Stonith используется для перезагрузки сервера в случае возникновения критической ошибки, которую не сможет устранить кластер.
Как настроить ipmi см. раздел «IPMI».
5. Проверьте состояние кластера командой:
pcs status Cluster name: Cluster WARNINGS: No stonith devices and stonith-enabled is not false Cluster Summary: * Stack: corosync * Current DC: node1 (version 2.1.4-1.el7-dc6eb4362e) - partition with quorum * Last updated: Tue Mar 28 22:17:57 2023 * Last change: Tue Mar 28 22:17:17 2023 by root via cibadmin on node1 * 2 nodes configured * 0 resource instances configured Node List: * Online: [ node1 node2 ] Full List of Resources: * No resources Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
Кроме консольных команд настройку кластеров можно производить также с панели администрирования, для этого в адресной строке браузера необходимо вписать https://<имя_ноды>:2224 и авторизоваться пользователем hacluster с созданным ранее паролем.
IPMI
В случае возникновения критических неполадок серверов инженеры используют технологию IPMI. Данная технология позволяет удаленно реагировать на неполадки, вести мониторинг физического состояния оборудования и многое другое.
Настройка выполняется на каждом сервере.
Установите пакеты командой:
dnf install resource-agents fence-agents
Перед настройкой IPMI на серверах необходимо загрузить модули ядра. Для этого выполните следующие команды:
modprobe ipmi_devintf modprobe ipmi_si
Затем необходимо настроить сеть на IPMI-интерфейсе в BIOS или через ОС.
Проверьте, что на интерфейсе используется статический адрес, выполните команду:
ipmitool lan print 1
Вывод команды должен иметь следующий вид:
IP Address Source : Static Address
Задайте сетевые параметры ipmi-интерфейсу, выполнив команды:
ipmitool lan set 1 ipsrc static <IP> ipmitool lan set 1 netmask <netmask> ipmitool lan set 1 defgw ipaddr <Gateway_IP>
Далее необходимо настроить STONITH.
STONITH
STONITH - метод изоляции отказавшего узла. STONITH изолирует неисправные узлы, перезагружая или отключая неисправный узел, чтобы он не вызывал нарушения работы кластера.
Настройка выполняется на каждом сервере.
Выведите список пользователей ipmi командой:
ipmitool user list 1 ID Name Callin Link Auth IPMI Msg Channel Priv Limit 2 ADMIN false false true ADMINISTRATOR
Вывод показывает, что существует пользователь с ID 2, следовательно, следующие идентификаторы свободны. Для примера будет создан пользователь pcs (по имени команды конфигурации кластера) с ID 3 и с правами администратора для доступа. Для этого на сервере подсистем для настройки привилегий пользователя root необходимо выполнить следующие команды:
ipmitool user set name 3 pcs ipmitool user set password 3 ipmitool channel setaccess 1 3 ipmi=on link=on callin=on privilege=4 ipmitool user priv 3 4 1 ipmitool user enable 3
где 3 - это id создаваемого пользователя и назначение ему привилегий.
Далее необходимо настроить fence_ipmilan, выполнив на сервере команды:
pcs stonith create <имя_stonith_ресурса_для_node1> fence_ipmilan auth=md5 ipaddr=<ip> passwd=******** login=pcs action=reboot pcmk_host_list=<node1> pcmk_host_check=static-list pcs stonith create <имя_stonith_ресурса_для_node2> fence_ipmilan auth=md5 ipaddr=<ip> passwd=******** login=pcs action=reboot pcmk_host_list=<node2> pcmk_host_check=static-list
Для настройки STONITH также требуется осуществить привязку ресурсов к узлам кластера через constraint, которая жёстко задаёт ограничение запуска. Для этого на любом сервере выполните следующие команды:
pcs constraint location <имя_stonith_ресурса_для_node1> avoids node1=INFINITY pcs constraint location <имя_stonith_ресурса_для_node2> avoids node2=INFINITY
Дата последнего изменения: 23.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.