-
Notifications
You must be signed in to change notification settings - Fork 30
Home
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 при этом по-прежнему может потерять часть изменений и даже удалить массу нужных записей, что является причиной вероятностных сбоев собственных тестов.
Подробности: