Репликация OpenLDAP методом syncprov
Метод syncprov является более предпочтительным и гибким по сравнению со старым slurp.
В Gentoo Linux для работы метода syncprov пакет openldap необходимо собрать с USE-флагом overlays.
echo net-nds/openldap overlays >> /etc/portage/package.use/openldap
Настройка master
На главном сервере необходимо подключить модуль syncprov:
/etc/openldap/slapd.conf
... overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100
Строка syncprov-checkpoint 100 10 указывает серверу сохранять значения параметра contextCSN на жесткий диск каждые 100 операций записи или каждые 10 минут.
Строка syncprov-sessionlog 100 регистрирует все операции записи в журнале, хранящемся на жестком диске, что также помогает поддерживать цикл синхронизации.
http://system-administrators.info/?p=2777
Настройка slave
Репликацию можно использовать в двух режимах:
- refreshOnly – периодическая репликация, с заданным интервалом;
- refreshAndPersist – постоянные режим, изменения на master почти мгновенно становятся доступны на slave серверах.
Важно помнить, что при попытке записи данных на slave (изменение, добавление, удаление), openldap сервер отдаст клиенту ссылку на мастер сервер указанный в updateref и такое поведение нужно обрабатывать на программном уровне.
Периодическая репликация (refreshOnly)
/etc/openldap/slapd.conf
... syncrepl rid=1 provider=ldap://10.0.1.15 type=refreshOnly interval=00:00:01:00 searchbase="dc=ldserv,dc=ru" filter="(objectClass=*)" scope=sub attrs="*" schemachecking=off bindmethod=simple binddn="cn=Manager,dc=ldserv,dc=ru" credentials=wUVmaspRffw9 updateref ldap://10.0.1.15
Постоянная репликация (refreshAndPersist)
/etc/openldap/slapd.conf
... syncrepl rid=1 provider=ldap://10.0.1.15 type=refreshAndPersist retry="60 10 300 +" searchbase="dc=ldserv,dc=ru" filter="(objectClass=*)" scope=sub attrs="*" schemachecking=off bindmethod=simple binddn="cn=Manager,dc=ldserv,dc=ru" credentials=wUVmaspRffw9 updateref ldap://10.0.1.15
Опция retry задает количество и время повторов при разрыве связи с мастер-серверов. Запись «60 10 300 +» означает выполнять попытку реконнекта каждый 60 секунд для 10 попыток, после 10 неудачных попыток новые реконнекты будут производиться каждый 300 секунд (5 минут).
Запуск
На master и slave перезапустить службу каталога:
/etc/init.d/slapd restart
При этом на slave текущая схема не обязательно совпадать с master и может быть вообще пустой.
Обсуждение
slapd[18268]: conn=123 fd=26 ACCEPT from IP=192.168.0.10:36109 (IP=0.0.0.0:389) slapd[18268]: conn=123 op=1 SRCH base="dc=unix,dc=domaincib,dc=ru" scope=2 deref=0 filter="(objectClass=*)" slapd[18268]: conn=123 op=1 SRCH attr=* + slapd[18268]: conn=123 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
сделал по статье, но ничего на slave не реплицируется, в логах нашел, что подключение происходит, и не находит ни одной записи, делаю такой же запрос рукам ldapsearch, находит все записи. куда копать?
Хм… Проверьте еще раз всё.
Точно ли по тем данным авторизации, что настроены на репликацию ldapsearch выдает данные? Проверьте получение данных с помощью ldapsearch по данным авторизации как на slave так и на master.
так вот именно, что точно. может у меня проблема из-за того что я немного схему изменил? настроен N-Way multi master между двумя серверами, и я хочу третий сделать slave. такое возможно?
построил c нуля все заработало. Как же реализовать мою схему?
Я multi-master не настраивал. Вам придется изучить документацию на этот счет, вот например:
Моя ошибка была в том, что я начинал репликацию не на пустую базу, а на файловую копию master-а