Автор Тема: Подписать внешнее приложение на изменения в LDAP БД  (Прочитано 17674 раз)

Обухов Дмитрий

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
хочу для начала сделать следующую структуру

1. главный LDAP
2. 100500 реплик ридонли
3. в LDAP в виде объектного класса описана конфигурация хоста (сейчас она лежит на каждом хосте в виде конфиг-файла)
4. на каждом хосте запускаем приложение, которое при изменениях в каких-то секциях записи перегенеривает конфигфайл и шлет сигнал приложению его перечитать.

вопрос: как можно внешним приложением (скажем на Perl) подписаться на изменения в БД?
причем идеально бы подписаться так чтобы если подписавшийся какое-то время простаивает, то когда он будет снова запущен, то чтобы он не потерял бы никаких произошедших за его отсутствие изменений

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте, Дмитрий! Извините, что не сразу ответил -- праздники =) .

Серверы каталогов, реализующие стандарт LDAPv3, должны поддерживать в каждой записи операционный атрибут modifyTimestamp (RFC4512), в котором хранится дата последнего изменения записи (в OpenLDAP поддерживается). Кроме того, если у Вас есть репликация, то в корневой записи базы данных будет отметка о последнем изменении всей БД (операционный атрибут contextCSN), а в каждой записи -- отметка о последнем её изменении (атрибут entryCSN). Формат у них такой:
ldapsearch -x -LLL -b 'dc=mycompany,dc=ru' 'contextCSN=*' contextCSN entryCSN modifyTimestamp
dn: dc=mycompany,dc=ru
entryCSN: 20071018221420.000000Z#000000#000#000000
modifyTimestamp: 20071018221420Z
contextCSN: 20150107001148.454665Z#000000#000#000000
Делайте запрос, смотрите даты последних изменений и используйте их как Вам надо.

Егор

Обухов Дмитрий

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
то есть Вы предлагаете приложению периодически опрашивать LDAP на предмет не изменилось ли чего?

а сервер настроить на то чтобы он скажем сам инициировал экшен при поступлении в него изменений можно?

наверно подошло бы следующее:

если бы на реплике (ну и на мастере) можно было складывать в некий log все поступающие изменения (прямо в виде ldif)
то есть чтобы реплика писала бы этакий длиинный ldif о том что меняется в ней. + разумеется ротейтинг этого ldif нужен.
тогда можно клиента по inotify бы подписать было.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте!
то есть Вы предлагаете приложению периодически опрашивать LDAP на предмет не изменилось ли чего?
Опрашивать проще, чем писать листенеры =) .

а сервер настроить на то чтобы он скажем сам инициировал экшен при поступлении в него изменений можно?

В данном случае единственная прямая возможность -- сделать ваше приложение клиентом репликации refreshAndPersist, тогда сервер будет рассылать ему  произошедшие изменения online.

наверно подошло бы следующее:

если бы на реплике (ну и на мастере) можно было складывать в некий log все поступающие изменения (прямо в виде ldif)
то есть чтобы реплика писала бы этакий длиинный ldif о том что меняется в ней. + разумеется ротейтинг этого ldif нужен.
тогда можно клиента по inotify бы подписать было.
Старая технология репликации (slurpd) складывала изменения в ldif-файлы, но её сейчас Вы уже не настроите. Максимально близка к Вашему случаю технология delta-репликации, но она, опять же, складывает изменения в DIT а не в файл, так что придётся опрашивать каталог.

В двух словах об этом не расскажешь. Почитайте здесь и здесь.

Егор

 

Эта страница

Содержание

Новости:
Форум проекта Pro-LDAP.ru
OpenLDAP 2.4 Руководство

Содержание

Введение в службы каталогов OpenLDAPБыстрое развёртывание и начало работыОбщая картина - варианты конфигурацииСборка и установка OpenLDAPНастройка slapd

 

Конфигурационный файл slapdЗапуск slapdКонтроль доступаОграниченияИнструментыМеханизмы манипуляции даннымиНаложенияСпецификация схемы

 

БезопасностьSASLTLSРаспределённая служба каталоговРепликацияОбслуживаниеМониторингПроизводительностьУстранение неполадок
Перевод официального руководства OpenLDAP 2.4 Admin Guide
Полное содержание здесь
LDAP для учёных-ракетчиков

Содержание

О книгеКонцепции LDAPОбъекты LDAPУстановка LDAPПримерыНастройкаРепликация и отсылкиLDIF и DSMLПротоколLDAP API

 

HOWTOНеполадкиПроизводительностьИнструменты LDAPБезопасностьЗаметкиРесурсы LDAPRFC и X.500ГлоссарийОбъекты
Перевод "LDAP for Rocket Scientists"
Полное содержание здесь
Ресурсы

Книги

Руководство OpenLDAP 2.4LDAP для учёных-ракетчиков

Другие

СтатьиТермины LDAPman-страницы OpenLDAP 2.4Список RFCКлиенты LDAPФайлы наборов схемы
Полезные ресурсы
Форум

 

Разделы форумаНепрочитанные сообщенияПоследние сообщения
Форум проекта
Главная

Pro-LDAP.ru

О проектеНовости проектаУчастникиСтаньте участником!Сообщите об ошибке!Об авторских правахСоглашения проекта
Присоединяйсь!