Подготовка серверов
Обновляем систему.
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
Задаем пароль для учетной записи 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
Удаление ноды
При необходимости исключить одну из нод кластера, выполняем следующую команду:
pcs cluster node remove node_name
* где node_name — имя узла, который хотим удалить.