Репликация доступна через механизм Syncrepl. Он позволят синхронизировать изменения используя модель Потребитель - Поставщик. Специфический вид репликации, который мы будем реализовывать в этом руководстве, является комбинацией следующих режимов: refreshAndPersist и delta-syncrepl. Это подразумевает что Потребитель передает измененные записи Поставщику, как только они появляются, но при этом посылаются только актуальные изменения, а не все записи.
Настройка Поставщика
1. Создайте файл LDIF со следующим содержимым и назовите его provider_sync.ldif: # Add indexes to the frontend db. dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: entryCSN eq - add: olcDbIndex olcDbIndex: entryUUID eq #Load the syncprov and accesslog modules. dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov - add: olcModuleLoad olcModuleLoad: accesslog # Accesslog database definitions dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap/accesslog olcSuffix: cn=accesslog olcRootDN: cn=admin,dc=example,dc=com olcDbIndex: default eq olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart # Accesslog db syncprov. dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpNoPresent: TRUE olcSpReloadHint: TRUE # syncrepl Provider for primary db dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpNoPresent: TRUE # accesslog overlay definitions for primary db dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcAccessLogConfig olcOverlay: accesslog olcAccessLogDB: cn=accesslog olcAccessLogOps: writes olcAccessLogSuccess: TRUE # scan the accesslog DB every day, and purge entries older than 7 days olcAccessLogPurge: 07+00:00 01+00:00
Замените rootDN в LDIF файле на соответствующий вашему каталогу.
2. Профиль apparmor для slapd нужно будет отрегулировать для расположения базы accesslog. Отредактируйте /etc/apparmor.d/local/ usr.sbin.slapd, добавив следующее: /var/lib/ldap/accesslog/ r, /var/lib/ldap/accesslog/** rwk,
Создаём каталог, устанавливаем файл настроек базы данных и перезагружаем профиль apparmor: sudo -u openldap mkdir /var/lib/ldap/accesslog sudo -u openldap cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/accesslog sudo service apparmor reload
3. Добавляем новый контент и, поскольку изменили apparmor, перезапускаем сервис: sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f provider_sync.ldif sudo service slapd restart
Настройка Потребителя
1. Установим программное обеспечение как указано в Раздел 1.1, «Установка» [108]. Убедитесь, что база slapd-config аналогична базе Поставщика. Особенно проверьте, что одинаковы схемы и суффикс базы.
2. Создайте файл LDIF со следующим содержимым и назовите его consumer_sync.ldif: dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: entryUUID eq - add: olcSyncRepl olcSyncRepl: rid=0 provider=ldap://ldap01.example.com bindmethod=simple binddn="cn=admin,dc=example,credentials=secret searchbase="dc=example,dc=com" logbase="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog - add: olcUpdateRef olcUpdateRef: ldap://ldap01.example.com
Убедитесь, что следующие атрибуты имеют правильные значения: • provider (hostname сервера Поставщика — в этом примере — или IP- адрес) • binddn (DN администратора, которым вы пользуетесь) • credentials (пароль для DN администратора, который вы используете) • searchbase (суффикс базы, которую вы используете) • olcUpdateRef (hostname сервера Поставщика или его IP адрес) • rid (Replica ID, уникальное трёхзначное число, идентифицирующее данную копию. Каждый Потребитель должен иметь минимум один rid)
3. Добавьте новое содержимое: sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldif
Теперь две базы (суффикс: dc=example,dc=com) будут синхронизированы.
Тестирование
Как только репликация стартует, вы можете отслеживать ее запустив:
ldapsearch -z1 -LLLQY EXTERNAL -H ldapi:/// -s base contextCSN dn: dc=example,dc=com contextCSN: 20120201193408.178454Z#000000#000#000000
как на Поставщике, так и на Потребителе. Как только вывод (20120201193408.178454Z#000000#000#000000в примере выше) на обеих машинах совпадет, вы провели репликацию. Каждый раз, как происходят изменения на Поставщике, это значение будет изменяться и должно стать таким же на Поставщике. Если ваше соединение медленное и/или ваша база LDAP велика, процесс приведения в соответствие contextCSN Потребителя и Поставщика может быть протяженным. Но, вы должны знать, что процесс запускается как только contextCSN Потребителя неизбежно увеличивается. Если contextCSN Потребителя отсутствует или не совпадает со значением Поставщика, вы должны остановиться и понять причину проблемы перед тем как продолжить. Попробуйте проверить slapd (syslog — системный журнал) и файлы журналов аутентификации Поставщика, чтобы увидеть удачны ли были запросы аутентификации Потребителя и не возвращались ли ошибки в ответ на запросы данных (они будут видны как множество записей ldapsearch). Чтобы проверить, что всё работает, просто запросите на Потребителе DN из базы: sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b dc=example,dc=com dn
Вы должны увидеть пользователя 'john' и группу 'miners', также как ноды 'People' и 'Groups' из описания настройки LDAP
взять тексты provider_sync.ldif и consumer_sync.ldif
|
Комментариев оставлено: (0) Просмотров: 2430
Другие новости по теме:
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Комментарии к новости:
|
управление аккаунтом
Профиль пользователя
самые интересные новости
Популярные новости
|