[[ Репликация OpenLDAP методом syncprov ]]

Репликация 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 и может быть вообще пустой.

Обсуждение

Роман, 2010/07/07 17:02

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, находит все записи. куда копать?

Konstantin vzOne Enchant, 2010/07/07 17:24, 2010/07/07 17:41

Хм… Проверьте еще раз всё.

Точно ли по тем данным авторизации, что настроены на репликацию ldapsearch выдает данные? Проверьте получение данных с помощью ldapsearch по данным авторизации как на slave так и на master.

Роман, 2010/07/08 09:16

так вот именно, что точно. может у меня проблема из-за того что я немного схему изменил? настроен N-Way multi master между двумя серверами, и я хочу третий сделать slave. такое возможно?

Роман, 2010/07/08 09:41

построил c нуля все заработало. Как же реализовать мою схему?

Konstantin vzOne Enchant, 2010/07/08 11:49

Я multi-master не настраивал. Вам придется изучить документацию на этот счет, вот например:

Роман, 2010/07/13 12:40

Моя ошибка была в том, что я начинал репликацию не на пустую базу, а на файловую копию master-а

Ваш комментарий. Вики-синтаксис разрешён:
255​ -14 = 
 
howto/openldap/syncrepl.txt · Последнее изменение: 2022/08/31 15:11 — lexa
Gentoo Linux Gentoo Linux Driven by DokuWiki