Skip to content
This repository has been archived by the owner on Sep 22, 2022. It is now read-only.
Leo Yuriev edited this page Feb 18, 2020 · 1 revision

English version by Google and by Yandex.

Slides of ReOpenLDAP's Presentation from LDAPCON-2017 - the 6th Conference on LDAP, Brussels, Belgium, October 2017.


ReOpenLDAP, известный также как "TelcoLDAP" — потомок общеизвестного OpenLDAP, но ориентирован на надежность и производительность, которые требуются для промышленной эксплуатации в сфере телекоммуникаций (десятки и сотни миллионов записей, высокие нагрузки, высокая доступность, 24x7).

История

Проект был инициирован в 2014 году для эксплуатации в инфраструктуре одного из крупнейших Российских операторов мобильной связи.

Можно сказать, что ReOpenLDAP появился вынужденно, в результате как некачественности родительского OpenLDAP, так и консервативности его целей. К сожалению, лидеры проекта OpenLDAP не смогли решить замеченные нами проблемы, а позже отказались принимать наши исправления, мотивирую отказ необходимостью совместимости с устаревшими компиляторами C (без поддержки Variadic Macro).

Следует отметить:

  • Эти первые исправления устраняли почти 5000 предупреждений компилятора, большей частью безобидных, но среди которых годами оставались и остаются незамеченными реальные проблемы.
  • Расширение variadic macro использовались только в одном из патчей для системы логирования, тогда как остальные устраняли явные ошибки и недочеты.
  • Позже мы не нашли платформ, на которых можно было-бы собрать и запустить OpenLDAP, и при этом был-бы недоступен компилятор с поддержкой variadic macro (например GNU C). Также мы не нашли пользователей, которые эксплуатировали OpenLDAP на таких системах, а затем и какой-либо информации о проверке собираемости или работоспособности актуальных версий OpenLDAP на таких платформах.

В результате, к концу 2014 мы пришли к выводу, что не сможем эффективно работать и решать наши проблемы в рамках проекта OpenLDAP. Поэтому в первых числах 2015 года был основан ReOpenLDAP. В 2016 году ReOpenLDAP являлся одним из центральных компонентов в продукте PCRF (подсистемы PCCM и NGDR) от компании Петер-Сервис.


Кодовая база ReOpenLDAP включает все доработки и исправления из родительского OpenLDAP. Ветка master поддерживается в стабильном состоянии и соответствует OpenLDAP/2.4.x, с добавлением отдельных доработок из OpenLDAP/master. Ветка next соответствует следующей версии OpenLDAP/2.5.x.

Главное отличие ReOpenLDAP — работа без падений и без отказов сервиса под высокой нагрузкой с репликацией в мульти-мастер кластере, что ранее было невозможно. Наши тесты, в том числе нагрузочные, убедительно показывают что ReOpenLDAP готов для промышленной эксплуатации, а исходный OpenLDAP, к сожалению, по-прежнему нет.

Было исправлено более десятка heisenbugs, которые существовали годами. Например, одной из проблем официально было почти 7 лет. Другая проблема существовала незамеченной более 5 лет и была причиной потери изменений в ходе репликации.

Кроме этого, мы внесли несколько существенных исправлений и доработок в механизм репликации, особо актуальных для multi-master кластера. На исследование и устранение проблем в syncprov/sycnrepl нам пришлось потратить почти год. С лета 2016 ReOpenLDAP корректно выполняет репликацию согласно RFC4533, в том числе для mirror (multi-master) режима. К сожалению оригинальный OpenLDAP при этом по-прежнему может потерять часть изменений и даже удалить массу нужных записей, что является причиной вероятностных сбоев собственных тестов.

Подробности:


This is the mirror of origin repository that was moved to abf.io because of discriminatory restrictions for the Russian Crimea.