Кластер высокой доступности

Основной принцип организации кластера показан на схеме ниже (3-N).

Определять узлы, ресурсы и связи при этом нет необходимости.

../../_images/3xN_cluster.png

Схема организации кластера высокой доступности

Примечания.

Если, по каким-либо причинам, отказоустойчивый кластер не был сформирован с помощью сценария автоматизации, то его можно сформировать вручную [1].

За исключением RabbitMQ, сервис кластеризуется собственными средствами.

Установка ПО и запуск служб

Установите на все УУ, входящие в отказоустойчивый кластер (control*), программные пакеты пакеты Pacemaker, PCS и Fence [2]:

dnf install pacemaker pcs fence-agents-all -y

Назначьте пароль для работы от имени пользователя hacluster:

echo <пароль_HA> | passwd --stdin hacluster

Включите автоматический запуск, т.е. инициализацию системной службы pcsd во время загрузки операционной системы:

systemctl enable --now pcsd

Дальнейшие действия (команды) выполняются только на одном из узлов кластера:

  1. Настройте авторизацию между узлами кластера:

    pcs cluster auth control1 control2
    
    Username: hacluster
    Password:
    control2: Authorized
    control1: Authorized
    
  2. Запустите процедуру настройки кластера:

    pcs cluster setup --start --name shared_md control1 control2
    

Процесс настройки будет сопровождаться выводом сообщений:

Destroying cluster on nodes: control1, control2…
control2: Stopping Cluster (pacemaker)…
control1: Stopping Cluster (pacemaker)…
control2: Successfully destroyed cluster
control1: Successfully destroyed cluster
и т.д.
  1. Запустите службы кластера:

    pcs cluster enable --all
    
    control1: Cluster Enabled
    control2: Cluster Enabled
    
  2. Проверьте состояние кластера:

    pcs status
    

Пример типичного вывода (кластер из двух управляющих узлов):

Cluster Status:
Stack: corosync
Current DC: control2 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
Last updated: Tue Jun 18 13:17:36 2019
Last change: Tue Jun 18 13:12:41 2019 by hacluster via crmd on control2
2 nodes configured
0 resources configured

PCSD Status:
control2: Online
control1: Online

Последние две строки показывают что в кластере оба сервера (control1, control2) находятся «на линии» – Online, обеспечивая резервирование служб:

  • служба преобразования имен (DNS);
  • служба синхронизации времени (NTP).

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

Для проверки текущей структуры кластера выполните команду:

pcs status

Фрагмент ресурсной группы в выводе команды на мастер-контроллере (control1):

vip_group
management_net_vip (ocf heartbeat:IPaddr2): Started control1
Master/Slave Set: p_galera-master [p_galera]

где

vip_group – группа ресурсов, содержит адреса УУ кластера.

Примечание.

Galera управляет кластером MariaDb.

Добавление узла в кластер

Дополнительная информация может быть получена поисковым запросом в сети Интернет [3] или на веб-странице

Запуск HAproxy

Служба haproxy [4] запускается в единичном экземпляре, на узле с активным виртуальным адресом (VIP).

Для просмотра списка зависимостей сервисов друг от друга выполните команду:

pcs constraint colocation

Пример типичного вывода:

Colocation Constraints:
vip_group with p_openstack-cinder-volume (score:INFINITY)
p_openstack-nova-conductor with vip_group (score:INFINITY)
p_tionix-node-control-node-tracker with vip_group (score:INFINITY)
p_tionix-node-control-node-syncer with vip_group (score:INFINITY)

Из приведенного примера следует, что сервисы Openstack (cinder-volume, nova-conductor), а также TIONIX (node-control-node-tracker и node-control-node-syncer) запускаются только с vip_group, то есть – на узле с активным VIP (в данный момент времени). Это важно для корректной работы сервисов.

Размещение активного VIP на выбранном узле

Пропишите зависимости запуска, выполнив команду:

pcs constraint colocation add myresource1 with myresource2 score=INFINITY

Добавьте ресурс для запуска в единичном экземпляре:

pcs resource create <название_сервиса> systemd:<название_сервиса_в_systemd>

Примечание.

Для запуска на всех узлах к вышеуказанной команде следует добавлять опцию --clone.

Сноски

[1]https://www.golinuxcloud.com/configure-openstack-high-availability-pacemaker/
[2]https://www.golinuxcloud.com/what-is-fencing-configure-kvm-cluster-fencing/#What_is_Fencing
[3]https://www.mankier.com/8/pcs#Examples
[4]https://ru.wikipedia.org/wiki/HAProxy