LINUX.ORG.RU
решено ФорумAdmin

Трудности синхронизации OpenLDAP

 ,


0

1

Всем привет!

Было у меня 2 виртуальных OpenLDAP-сервера, скажем, 10.3.3.3 и 10.4.4.4. Сервер 10.4.4.4 раз в минуту успешно синхронизировался (вытягивал обновления LDAP) с сервера 10.3.3.3. Сервер 10.3.3.3 погиб, но сохранилась его старая копия. Я запустил старую копию сервера 10.3.3.3 и обновил на копии базу LDAP синхронизацией данных (syncrepl) с сервера 10.4.4.4 (в этот момент на сетевом уровне было специально сделано так, что сервер 10.4.4.4 не мог обращаться по LDAP к копии 10.3.3.3).

Я хотел снова использовать обновлённую копию 10.3.3.3 как сервер, с которого синхронизируется (вытягивает данные) сервер 10.4.4.4. Обратно поменял под это конфигурацию на сервере 10.3.3.3 и открыл необходимый сетевой доступ, а на сервере 10.4.4.4 уже стоял syncrepl, чтобы вытягивать данные с 10.3.3.3. По логам вижу, что 10.4.4.4 обращается к 10.3.3.3. Сервер 10.3.3.3 пишет в логах, что принимает подключения от 10.4.4.4, явных проблем с репликацией не вижу. Для меня ещё проблема в том, что оба сервера используются и там в логах ещё масса сообщений, которые не относятся к репликации. При этом добавляю пользователя в LDAP-базу сервера 10.3.3.3, а он никак не появляется на 10.4.4.4, хотя интервал обновления syncrepl стоит 1 минута.

Ещё момент. Мы запустили ещё один OpenLDAP-сервер, скажем, 10.5.5.5, который успешно синхронизируется с 10.3.3.3. Получается, что проблема именно в комбинации серверов 10.3.3.3 и 10.4.4.4.

Вот конфигурации slapd.conf серверов 10.3.3.3 и 10.4.4.4 (пароли и хэши заменены словом «Stub»; имя «mylab» используется вместо реального, чтобы не позорить организацию).

# 10.3.3.3

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include         /usr/local/etc/openldap/schema/samba.schema
include         /usr/local/etc/openldap/schema/radius.schema


pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
modulepath      /usr/local/libexec/openldap
moduleload      back_bdb

database        bdb
suffix          "dc=book,dc=mylab"
rootdn          "cn=admin,dc=book,dc=mylab"
rootpw          {SSHA}Stub
index           objectclass eq

## serverID used in case of replication
serverID 0

# The following 3 lines are to configure this server as synchronization provider
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

loglevel 0


access to attrs=userPassword,sambaNTPassword,sambaPwdLastSet
        by self read
        by anonymous auth
        by dn="cn=read,dc=book,dc=mylab" read
        by * none

access to *
        by self read
        by anonymous read
        by dn="cn=read,dc=book,dc=mylab" read
        by * none


directory       /var/db/openldap-data

loglevel Stats Conns

# 10.4.4.4

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include         /etc/openldap/schema/core.schema
# mylab customization of schemas.

include     /etc/openldap/schema/cosine.schema
include     /etc/openldap/schema/inetorgperson.schema
include     /etc/openldap/schema/misc.schema
include     /etc/openldap/schema/nis.schema
include     /etc/openldap/schema/openldap.schema
include     /etc/openldap/schema/samba.schema
include     /etc/openldap/schema/radius.schema


# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral       ldap://root.openldap.org
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

# Load dynamic backend modules:
# modulepath    /usr/lib64/openldap/openldap
# moduleload    back_sock.so
# moduleload    back_shell.so
# moduleload    back_relay.so
# moduleload    back_passwd.so
# moduleload    back_null.so
# moduleload    back_monitor.so
# moduleload    back_meta.so
# moduleload    back_ldap.so
# moduleload    back_dnssrv.so

# Sample security restrictions
#       Require integrity protection (prevent hijacking)
#       Require 112-bit (3DES or better) encryption for updates
#       Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
#       Root DSE: allow anyone to read it
#       Subschema (sub)entry DSE: allow anyone to read it
#       Other DSEs:
#               Allow self write access
#               Allow authenticated users read access
#               Allow anonymous users to authenticate
#       Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
#       by self write
#       by users read
#       by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# BDB database definitions
#######################################################################

database        hdb

# mylab sync ldap DB.

suffix      "dc=book,dc=mylab"
checkpoint  32  30
rootdn      "cn=admin,dc=book,dc=mylab"
rootpw      {SSHA}Stub
directory   /var/lib/openldap-data
index       objectClass eq
serverID    1

## ## Synchronisation (pull from other LDAP server)
syncrepl rid=000
  provider=ldap://10.3.3.3
  type=refreshAndPersist
  interval=00:00:01:00
  retry="5 5 300 +"
  searchbase="dc=book,dc=mylab"
  attrs="*,+"
  bindmethod="simple"
  binddn="cn=admin,dc=book,dc=mylab"
  credentials="Stub"

overlay syncprov
syncprov-checkpoint 100 10

logfile /var/log/slapd.log
loglevel 16640

access to attrs=userPassword,sambaNTPassword,sambaPwdLastSet
        by self read
        by anonymous auth
        by dn="cn=read,dc=book,dc=mylab" read
        by * none

access to *
        by self read
        by anonymous read
        by dn="cn=read,dc=book,dc=mylab" read
        by * none

Прошу помочь заставить 10.4.4.4 синхронизироваться (вытягивать изменения LDAP) с 10.3.3.3.

Возникала такая проблема. Не знаю как её решать по-взрослому, лично я полностью очистил базу ldap'а, перезапустил и он начал стягивать полную реплику. После этого всё работало и синхронизировалось. Видимо они в своих csn'ах запутались.

ЗЫЖ К делу не относится, но имхо для refreshAndPersist не нужен interval. Он только для refreshOnly.

Ivan_qrt ★★★★★ ()

Очистил в смысле

systemctl stop slapd.service
rm -rf /var/lib/ldap/*
systemctl start slapd.service

а не ldapdelete'ом.

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Спасибо за отклик! У меня оказалась другая, немного нелепая, ситуация: во время гибели LDAP-сервера возникла неразбериха и на 10.4.4.4 был создан локальный пользователь, у которого uid был как раз как у нового пользователя, которого я после восстановления пробовал добавлять на 10.3.3.3. Соответственно 10.4.4.4 при синхронизации не принимал пользователя, у которого uid такой же, как у локального пользователя на 10.4.4.4.

Всё равно спасибо!

Alexander7 ()
Ответ на: комментарий от Alexander7

Соответственно при добавлении пользователя в LDAP на 10.3.3.3 сделал другой uid и после этого всё синхронизировалось нормально, т.е. пользователь появился на 10.4.4.4.

Alexander7 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.