Автор Тема: репликаци в openldap 2.4  (Прочитано 16652 раз)

hop

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
репликаци в openldap 2.4
« : 04 Сентябрь 2013, 18:41:21 »
Привет.
Возникли сложности с настройкой репликации в openldap 2.4, посредтсвом syncrepl.
Есть 2 идентичных сервера

provider
Цитировать
[root@server3 openldap]#uname -srm
Linux 2.6.32-220.el6.x86_64 x86_64
[root@server3 openldap]#cat /etc/issue
CentOS release 6.2 (Final)
Kernel \r on an \m
[root@server3 openldap]#slapd -V
@(#) $OpenLDAP: slapd 2.4.23 (Apr 29 2013 07:47:08) $

consumer
Цитировать
[root@server5 ~]# uname -srm
Linux 2.6.32-279.el6.x86_64 x86_64
[root@server5 ~]# cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m
[root@server5 ~]# slapd -V
@(#) $OpenLDAP: slapd 2.4.23 (Apr 29 2013 07:47:08) $

Время синхронизированно.

Конфиги: (пароли, IP dn и т.д. изменил)

provider
Цитировать
[root@server3 openldap]#egrep -v '^(#|$)' /etc/openldap/slapd.conf
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
loglevel -1
modulepath /usr/lib64/openldap
 moduleload back_db.la
 moduleload syncprov.la
 moduleload back_hdb.la
database bdb
suffix "dc=provider,dc=com"
rootdn "cn=manager,dc=provider,dc=com"
rootpw pass
directory /usr/local/openldap/openldap-data
index objectclass,entryCSN,entryUUID eq
moduleload syncprov
database monitor
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
syncprov-nopresent  TRUE
syncprov-reloadhint TRUE

consumer
Цитировать
[root@server5 openldap]# egrep -v '^(#|$)' /etc/openldap/slapd.conf
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database monitor
modulepath /usr/lib64/openldap
moduleload syncprov.la
moduleload back_hdb.la
loglevel 256
database bdb
suffix "dc=provider,dc=com"
rootdn "cn=manager,dc=provider,dc=com"
rootpw pass_slave
directory /var/lib/ldap
index objectclass,entryCSN,entryUUID eq
syncrepl rid=123
                provider=ldap://provider.com:389
                interval=00:00:01:00
                type=refreshOnly
                retry="60 30 300 +"
                searchbase="dc=provider,dc=com"
                filter="(objectClass=*)"
                attrs="*"
                scope=sub
                schemachecking=off
                bindmethod=simple
                binddn="cn=manager,dc=provider,dc=com"
                credentials=pass
updateref       ldap://provider.com:389


При запуске в debug mode
Цитировать
slapd -d 256 -h ldap://provider.com:389

получаю
Цитировать
do_syncrep2: rid=123 got search entry without Sync State control
do_syncrepl: rid=123 rc -1 retrying (29 retries left)

У себя, на боевых все еще вертится на openldap 2.3 с репликацией slurpd, проблем нет.
Документацию читал, гуглил, выбился из сил в поисках.
Подскажите, направьте.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: репликаци в openldap 2.4
« Ответ #1 : 05 Сентябрь 2013, 01:32:49 »
Здравствуйте! Вам нужно определить наложение syncprov для базы данных bdb, то есть перенесите определения для syncprov ДО database monitor:
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
loglevel 256
modulepath /usr/lib64/openldap
moduleload back_bdb.la
moduleload syncprov.la
moduleload back_hdb.la
database bdb
suffix "dc=provider,dc=com"
rootdn "cn=manager,dc=provider,dc=com"
rootpw pass
directory /usr/local/openldap/openldap-data
index objectclass,entryCSN,entryUUID eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
syncprov-nopresent  TRUE
syncprov-reloadhint TRUE

database monitor
В файле slapd.conf строки, начинающиеся с пробелов, считаются продолжением предыдущей строки. НЕ ставьте пробел перед директивами moduleload!

При loglevel -1 в логи будет сыпаться очень много информации. Лучше в файле поставить loglevel 256 (или даже loglevel 0), а при запуске в debug-режиме указывать уровень побольше:
slapd -d -1 -h ldap://provider.com:389

Егор

hop

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: репликаци в openldap 2.4
« Ответ #2 : 05 Сентябрь 2013, 16:21:07 »
Огромное спасибо!
Поправил конфиг, репликация заработала, но не до конца :)
Реплицируется только одна запись:

cn=employee,ou=groups,dc=provider,dc=com

Я так понимаю, что все основывается на фильтре
Цитировать
                searchbase="dc=provider,dc=com"
                filter="objectClass=*"
                scope=sub
                attrs="*,+"
                schemachecking=off

и должны матчится все записи.
Для проверил выполнил
Цитировать
ldapsearch -h provider.com -p 389 -D 'cn=Manager3914,dc=provider,dc=com' -w pass -b 'dc=provider,dc=com' -s sub 'objectclass=*'
и получил все записи.

Права тоже есть, добавил на всякий случай
Цитировать
access to *                                                                                                                                                                         
    by dn="cn=Manager3914,dc=provider,dc=com" write                                                                                                                                 
    by self write                                                                                                                                                                   
    by * read


В дебаге при этом ошибок нет, ну кроме

consumer
Цитировать
<= bdb_dn2id: get failed: DB_NOTFOUND: No matching key/data pair found (-30988)
=> access_allowed: disclose access to "" "entry" requested

provider
Цитировать
ldap_write: want=100 error=Resource temporarily unavailable
ber_flush2 failed errno=11 reason="Resource temporarily unavailable"
daemon: activity on 1 descriptor
daemon: activity on:

Ничего вразумительного не нагуглилось.
Есть идеи ?

hop

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: репликаци в openldap 2.4
« Ответ #3 : 05 Сентябрь 2013, 18:24:41 »
нашел ответ тут
http://pro-ldap.ru/forum/index.php?topic=61.0

выполнил последовательность действий

provider
Цитировать
slapcat | tee -a /tmp/ldap_dump.ldif

consumer
Цитировать
echo "" | slapadd -f /etc/openldap/slapd.conf
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
slapadd -f /etc/openldap/slapd.conf -l /root/ldap_dump.ldif -F /var/lib/ldap

и репликация заработала! :)
Большое спасибо за помощь!