Репликация каталога OpenLDAP (slurp)
Пример настройки репликации между двумя серверами openldap.
В схеме один сервер будет выступать как мастер, а второй как подчинённый.
Настройка мастера
Для начала необходимо остановить службу каталога:
/etc/init.d/slapd stop
В конфигурационном файле необходимо описать реплику:
/etc/openldap/slapd.conf
replogfile /var/lib/openldap-slurp/replog replica uri=ldap://slaveldap.server.com binddn="cn=Manager,dc=server,dc=com" bindmethod=simple credentials=password
- replogfile – журнал изменений для репликации
- uri – адрес slave-сервера
- binddn – пользователь, который будет использоваться master-сервером, при передачи обновлённых данных на slave-сервер. Он должен иметь соответствующий доступ на slave-сервере.
- bindmethod – метод аутентификации. simple - всё передается в чистом виде, очень ненадежно с точки зрения информационной безопасности, но для тестовых целей или изолированной сети вполне подходит.
- credentials – пароль пользователя binddn
Настройка подчинённого
На slave-сервере в конфигурацию добавим:
/etc/openldap/slapd.conf
updatedn "cn=Manager,dc=server,dc=com" updateref "ldap://server.com"
- updatedn - пользователь, которому разрешено проводить репликацию
- updateref - ссылка на сервер, которая передается клиенту, если клиент пытается внести изменения на slave-сервере
Запуск репликации
Перед запускам необходимо, чтобы на обоих серверах была одинаковая база каталога.
Для этого на мастере можно сделать архив:
slapcat > ldap.ldif
Перенести файл на подчинённый и восстановить его:
slapadd < ldap.ldif
Исправление прав доступа:
chown ldap:ldap -R /var/lib/openldap-data/
Теперь запускаем службу каталога на обоих серверах:
/etc/init.d/slapd start
А на мастере еще и службу репликации:
/etc/init.d/slurpd start
При изменение данных на мастере статус репликации будет записываться в файл:
tail -f /var/lib/openldap-slurp/replica/slurpd.status
В случае если изменения происходят на мастер-сервере, они почти моментально будут переданы на подчинённый-сервер. Если же изменения клиент пытается внести непосредственно на подчинённый-сервер, ему будет возвращён адрес мастер-сервера:
ldap_modify: Referral (10) referrals: ldap://server.com/cn=Manager,dc=server,dc=com
Обсуждение