LDAP (служба каталогов 389) и кардиостимулятор с Multi-Master
Я пытаюсь настроить пару серверов LDAP под управлением 389 (ранее Fedora DS) в режиме высокой доступности, используя Pacemaker с плавающим IP. Кроме того, 389 поддерживает репликацию с несколькими хозяевами, когда все изменения на одном узле автоматически реплицируются на один или несколько других узлов.
Я довольно близок к тому, чтобы все работало. Отработка отказа работает просто отлично. И репликация с несколькими мастерами работает нормально. Однако моя текущая конфигурация Pacemaker останавливает службу каталогов на неактивном узле. Это означает, что резервный узел не получает данные репликации от другого узла.
Как правильно настроить Pacemaker, чтобы:
- Службы каталогов LDAP всегда работают на обоих узлах
- Плавающий IP назначен одному из узлов
- Аварийное переключение происходит, если главный узел умирает или служба LDAP перестает работать на главном
Изначально мой конфиг Pacemaker выглядел следующим образом:
property stonith-enabled=false
property no-quorum-policy=ignore
rsc_defaults resource-stickiness=100
primitive elastic_ip lsb:elastic-ip op monitor interval="10s"
primitive dirsrv lsb:dirsrv op monitor interval="10s"
order dirsrv-after-eip inf: elastic_ip dirsrv
colocation dirsrv-with-eip inf: dirsrv elastic_ip
Затем я исследовал с помощью клонов Pacemaker:
property stonith-enabled=false
property no-quorum-policy=ignore
rsc_defaults resource-stickiness=100
primitive elastic_ip lsb:elastic-ip op monitor interval="10s"
primitive ldap lsb:dirsrv op monitor interval="15s" role="Slave" timeout="10s" op monitor interval="16s" role="Master" timeout="10s"
ms ldap-clone ldap meta master-max=1 master-node-max=1 clone-max=3 clone-node-max=1 notify-true
colocation ldap-with-eip inf: elastic_ip ldap-clone:Master
order eip-after-promote inf: ldap-clone:promote elastic_ip:start
order ldap-after-eip inf: elastic_ip ldap-clone
К сожалению, это не совсем работает. Pengine жалуется, что "ldap-clone: продвигает 0 экземпляров возможного 1 к мастеру", а затем останавливает службу LDAP.
1 ответ
Благодаря списку рассылки Pacemaker у нас есть решение. Проблема в том, что LSB-скрипт для 389 не понимает концепцию master/slave. Самым простым решением является использование простого клона, а не клона "ведущий / ведомый". Новая конфигурация кардиостимулятора выглядит следующим образом:
property stonith-enabled=false
property no-quorum-policy=ignore
rsc_defaults resource-stickiness=100
primitive elastic_ip lsb:elastic-ip op monitor interval="10s"
primitive dirsrv lsb:dirsrv op monitor interval="15s" role="Slave" timeout="10s" op monitor interval="16s" role="Master" timeout="10s"
clone ldap-clone dirsrv
order ldap-after-eip inf: elastic_ip ldap-clone
colocation ldap-with-eip inf: elastic_ip ldap-clone