Опубликован формальный выпуск LDAP-сервера ReOpenLDAP 1.2.0, сформированный для воскрешения проекта после блокирования его репозитория на GitHub. В апреле GitHub удалил учётные записи и репозитории многих российских разработчиков, связанных с компаниями, попавшими под санкции США, включая репозиторий ReOpenLDAP. В связи с возрождением интереса пользователей к ReOpenLDAP проект решено вернуть к жизни.
Проект ReOpenLDAP был создан в 2014 году для решения проблем, возникших при использовании пакета OpenLDAP в инфраструктуре ПАО «МегаФон», где LDAP-сервер был задействован в одной из подсистем инфраструктуры (NGDR представляет собой UDR (User Data Repository), согласно стандарту 3GPP 23.335, и является централизованным узлом для хранения данных обо всех видах услуг абонентов в ИТ-инфраструктуре оператора связи). Подобное применение предполагало промышленную эксплуатацию в режиме 24×7 специфического LDAP-каталога, размером 10-100 миллионов записей, в высоконагруженном сценарии (10К обновлений и 50К чтений в секунду) и в топологии мульти-мастер.
Symas Corp, как основные разработчики, коммитеры и владельцы кода OpenLDAP, не смогли решить возникшие проблемы, поэтому было решено попробовать сделать это самостоятельно. Как впоследствии выяснилось, ошибок в коде было кратно больше, чем можно было предполагать. Поэтому было затрачено больше усилий чем планировалось, а ReOpenLDAP по-прежнему представляет определённую ценность и (по имеющейся информации) является единственным LDAP-сервером полноценно и надежно поддерживающим мульти-мастер топологию для RFC-4533, в том числе в высоконагруженных сценариях.
В 2016 году проектные цели были достигнуты, а поддержка и развитие проекта непосредственно в интересах ПАО «МегаФон» завершена. Затем ReOpenLDAP активно развивался и поддерживался еще три года, но постепенно это потеряло смысл:
- Технологически «МегаФон» мигрировал с ReOpenLDAP на Tarantool, что архитектурно верно;
- Не было явно заинтересованных пользователей ReOpenLDAP;
- К проекту не присоединился кто-либо из разработчиков, как из-за высокого порога входа, так и из-за низкой востребованности самого ReOpenLDAP;
- Разработка и поддержка стали отнимать слишком много времени у оставшегося (основного) разработчика, так как он профессионально отдалился от промышленной эксплуатации ReOpenLDAP.
В неактивном состоянии репозиторий ReOpenLDAP просуществовал до апреля 2022 года, когда администрация Github без каких-либо предупреждений и пояснений удалила связанные аккаунты и сам репозиторий. В последнее же время автор получил несколько запросов относительно ReOpenLDAP, в том числе о расположении репозитория и состоянии кодовой базы. Поэтому было решено минимально освежить проект, сформировать технический релиз, а эту новость использовать для информирования всех заинтересованных.
Текущее состояние проекта, в том числе относительно OpenLDAP:
- Импорт доработок и исправлений из OpenLDAP не проводился с декабря 2018 года. Для ответственных применений нужно проанализировать все исправления в OpenLDAP и импортировать релевантные.
- Актуальные версии OpenLDAP сейчас формируются на основе ветки 2.5. Поэтому описанные далее доработки были сделаны только в ветке “devel” (которая соответствовала OpenLDAP 2.5), а затем влиты в “master” (которая до слияния соответствовала OpenLDAP 2.4).
- В 2018 году сохранялись унаследованные от OpenLDAP проблемы с config-bakend-ом. В частности, когда при изменении конфигурации сервера через config-bakend (конфигурирование LDAP через LDAP) возникают состояния гонок или рекурсивные неприятности включая взаимоблокировки (deadlocks).
- Предположительно существуют проблемы сборки с актуальными версиями OpenSSL/GnuTLS;
- Проходит основной набор собственных тестов, за вычетом требующих TLS/SSL;
Последние доработки:
- Библиотека libmdbx обновлена до актуальной версии с устранением всех замеченных проблем несовместимости возникших из-за развития библиотеки. Однако, в man-страницах, вероятно, осталась какая-то устаревшая информация.
- Задействована актуальная версия autotools 2.71.
- Сделаны небольшие правки по следам части предупреждений актуального компилятора gcc 11.2.