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

Материал из Wiki AlterOS
Версия от 14:00, 23 апреля 2019; Belonozhkin.pa (обсуждение | вклад) (Завершена статья установки отказоустойчивого кластера.)

Перейти к: навигация, поиск

Настройка кластера Pacemaker

В данной статье будет рассмотрена установка и настройка отказоустойчивого кластера при помощи программного комплекса pacemaker (все команды выполняются с правами суперпользователя). Для того, чтобы приступить к настройке вам необходимо 2 компьютера с установленной на них операционной системой AlterOS. Дальше на обоих компьютерах необходимо выполнить следующие действия: Задаём имя компьютеров при помощи правки файла /etc/hostname. На главном компьютере задаём имя node1:

echo 'node1' > /etc/hostname

На второстепенном компьютере задаём имя node2:

echo 'node2' > /etc/hostname

Все следующие команды необходимо выполнить на обоих компьютерах

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

yum update

Дальше настраиваем время: Необходимо, чтобы на всех нодах было одинаковое время. Устанавливаем утилиту для синхронизации даты и времени:

yum install ntpdate

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

echo '0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org' >/etc/crontab

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

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

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

ntpdate ru.pool.ntp.org

Отключаем firewall:

systemctl disable firewalld.service systemctl stop firewalld.service

Отключаем SELinux. Открываем файл /etc/selinux/config и заменяем в нём строчку "SELINUX=enforcing" на "SELINUX=permissive":

nano /etc/selinux/config

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

yum install pacemaker pcs resource-agents

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

passwd hacluster

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

systemctl enable pcsd systemctl start pcsd


Сборка кластера (выполняется на компьютере node1)

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

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 * где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.

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

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