Назад | Перейти на главную страницу

Настройка мультимастерной репликации openldap с помощью cn = config

В настоящее время у нас есть один сервер OpenLDAP, использующий cn=config бэкэнд. Мы хотели бы добавить второй сервер OpenLDAP и настроить их для репликации с несколькими мастерами. Что нам нужно сделать, чтобы

  1. включить репликацию на существующий сервер и
  2. инициализировать новый сервер существующими данными

Пока что я сделал (после это руководство) является:

Конфигурация синхронизации

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ldap://foo.example.com
olcServerID: 2 ldap://bar.example.com
-
replace: olcSaslSecProps
olcSaslSecProps: noanonymous

dn: cn=module,cn=config
changetype: modify
olcModuleLoad: syncprov

dn: olcDatabase=config,cn=config
changetype: modify
olcRootDN: cn=admin,cn=config
olcRootPW: abc123
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://foo.example.com bindmethod=simple
  binddn="cn=admin,cn=config" credentials=abc123 searchbase="cn=config" 
  type=refreshAndPersist retry="5 5 300 5" timeout=3
olcSyncRepl: rid=002 provider=ldap://bar.example.com bindmethod=simple 
  binddn="cn=admin,cn=config" credentials=abc123 searchbase="cn=config" 
  type=refreshAndPersist retry="5 5 300 5" timeout=3
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov, olcDatabase=config, cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Это позволило синхронизировать конфигурацию, работающую в обоих направлениях.

Синхронизация данных

dn: olcDatabase=bdb,cn=config
changetype: modify
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcSyncrepl
olcSyncrepl: rid=001 provider=ldap://foo.example.com searchbase=dc=example,dc=com binddn="uid=ldapsync,ou=Special Accounts,dc=example,dc=com" credentials=xyz123
olcSyncrepl: rid=002 provider=ldap://bar.example.com searchbase=dc=example,dc=com binddn="uid=ldapsync,ou=Special Accounts,dc=example,dc=com" credentials=xyz123

dn: olcOverlay=syncprov, olcDatabase=bdb, cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Я проверил, что эти изменения были синхронизированы со вторым сервером, и что пользователь ldapsync может пройти аутентификацию и может видеть все данные, которые ему нужны. Однако данные bdb не синхронизируются ни в одном направлении. Что мне не хватает?

Эта ветка привел меня к мысли, что olcMirrorMode необходимо разместить определение после в olcSyncrepl линий. Я остановил серверы ldap и вручную отредактировал файлы ldif olcDatabase. Кажется, теперь репликация данных работает в обоих направлениях.