Настройка кластера Pacemaker на CentOS 7

Тематические термины: PacemakerCorosync, Heartbeat, CentOS

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

Обновляем систему.

yum update

Настраиваем время.

Необходимо, чтобы на всех нодах было одинаковое время.

Устанавливаем утилиту для синхронизации даты и времени:

yum install ntpdate

Настраиваем синхронизацию по расписанию:

crontab -e

0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org

Выставляем нужный часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в моем примере московское время.

Синхронизируем время:

ntpdate ru.pool.ntp.org

Настройка брандмауэра.

Выполняется следующими 2-я командами:

firewall-cmd --permanent --add-service=high-availability

firewall-cmd --reload

Установка пакетов для работы с кластером

Установка выполняется на всех узлах следующей командой:

yum install pacemaker pcs resource-agents

Если возникнут проблемы, читаем подробную инструкцию по установке Pacemaker.

Задаем пароль для учетной записи hacluster, которая была создана автоматически при установке pacemaker:

passwd hacluster

Разрешаем сервис pcsd и запускаем его:

systemctl enable pcsd

systemctl start pcsd

Сборка кластера

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

Первым делом, авторизовываемся на серверах следующей командой:

pcs cluster auth node1 node2 -u hacluster

* где node1 и node2 — имена серверов, hacluster — служебная учетная запись (создана автоматически при установке пакетов).

Создаем кластер:

pcs cluster setup --force --name NLB node1 node2

* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.

После успешного выполнения команды мы увидим, примерно, следующее:

Synchronizing pcsd certificates on nodes node1, node2...
node2: Success
node1: Success

* также, будет создан конфигурационный файл /etc/corosync/corosync.conf.

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

pcs cluster enable --all

pcs cluster start --all

* опция --all говорит, что необходимо выполнить команду для всех нод, к которым мы подключились (вместо этой опции можно перечислить ноды вручную).

При использовании 2-х нод (как в данном примере) отключаем stonith (нужен для «добивания» серверов, которые не смогли полностью завершить рабочие процессы) и кворум:

pcs property set stonith-enabled=false

pcs property set no-quorum-policy=ignore

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

pcs status

Настройка виртуального IP

Рассмотрим самый распространенный вариант использования Pacemaker. Он заключается в использовании виртуального IP-адреса, который будет назначаться активному узлу кластера.

Для этого создаем ресурс командой:

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.15 cidr_netmask=24 op monitor interval=60s

* где virtual_ip — название ресурса (может быть любым); 192.168.0.15 — виртуальный IP, который будет назначен кластеру; 24 — префикс сети (соответствует маске 255.255.255.0); 60s — критическое время простоя, которое будет означать недоступность узла.

Вводим команду:

pcs status

Мы должны увидеть, примерно такую строку:

virtual_ip     (ocf::heartbeat:IPaddr2):       Started node1

Для проверки, перезагружаем активную ноду (node1) командой:

shutdown -r now

Через небольшой промежуток времени должен смениться узел с virtual_ip:

pcs status

virtual_ip     (ocf::heartbeat:IPaddr2):       Started node2

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

pcs resource move virtual_ip node1

Отказоустойчивость сервисов

Кластеризация по виртуальному IP-адресу позволит обеспечить высокую доступность на уровне работы сервера. Но если необходимо более тонкая настройка, позволяющая менять активную ноду при отказе службы, выполняем действия, описанные ниже.

Список всех поддерживаемых сервисов можно посмотреть командой:

crm_resource --list-agents ocf

Разберем кластеризацию на базе postfix.

Подключаемся к кластеру и создаем следующий ресурс:

pcs cluster auth node1 node2 -u hacluster

pcs resource create postfix ocf:heartbeat:postfix op monitor interval=30s timeout=60s

# Серверы # Linux # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет