Состоялся релиз LDAP-сервера ReOpenLDAP 1.1.7, в рамках которого развивается форк проекта OpenLDAP, в котором проведена работа по устранению ошибок и внесению улучшений для стабильной работы репликации. Проект ориентирован на надежность и производительность при использовании в решениях с высокой нагрузкой и промышленных системах в сфере телекоммуникаций.

ReOpenLDAP уже применяется в инфраструктуре ПАО МегаФон, обеспечивая высоконагруженную обработку запросов в multi-master кластере с full-mesh репликацией, демонстрируя производительность на уровне 10 тысяч обновлений и 25 тысяч операций поиска в секунду на наборе данных 100 млн записей (100 Гб данных). В новом выпуске добавлен перевод системных руководств на русский язык, обеспечена поддержка привязки открытых ключей (PKP, Public key pinning), удалён ldap_pvt_thread_rmutex, добавлен рекурсивный POSIX мьютекс для libevent, реализована функция ldap_connect().

Причиной создания форка является отказ включения в основной состав OpenLDAP ряда исправлений из-за желания сохранения совместимости с устаревшими Си-компиляторами (совместимость с компиляторами без поддержки вариативных макросов, которые появились в стандарте C99, нарушалась лишь в одном патче из большой серии исправлений). После форка ветка ReOpenLDAP master поддерживается в стабильном состоянии и соответствует OpenLDAP/2.4.x, с добавлением отдельных доработок из OpenLDAP/master. Ветка ReOpenLDAP next соответствует следующей версии OpenLDAP/2.5.x.

Особенности ReOpenLDAP:

Корректная и надёжная работа репликации в режиме multi-master;
Команда “reopenldap [iddqd] [idkfa] [idclip]”;
Новые настройки:
quorum { [vote-sids …] [vote-rids …] [auto-sids] [auto-rids] [require-sids …] [require-rids …] [all-links] }
“quorum limit-concurrent-refresh
“biglock { none | local | common }
syncprov-showstatus { none | running | all }
crash-backtrace on|off
coredump-limit {mbytes}
memory-limit {mbytes}
Модернизация хранилища mdbx для повышения масштабируемости и улучшения репликации;
Поддержка срезов состояния (checkpoint) при изменении раздела или по таймеру;
Поддержка опции requirecheckpresent для syncrepl;
Поддержка настройки keepalive для входящих соединений;
Встроенная система проверки памяти с поддержкой ls-malloc;
Пригодность для отладки в AddressSanitizer и Valgrind;
Возможность применения оптимизации на стадии компоновки (LTO, Link-Time Optimization) при сборке в GCC и Clang;
Поддержка OpenSSL 1.1.x, Mozilla NSS, GnuTLS и LibreSSL 2.5.x;
Перенос всех исправлений из веток openldap/master и openldap/2.4;
Большое число исправлений, связанных с репликацией;
Устранено около 5 тысяч предупреждений при сборке в GCC/clang и 1 тысяча предупреждний при проверке в ThreadSanitizer
Устранено большинство утечек памяти;
Решены проблемы, выявленные статистическими анализаторами PVS-Studio и Coverity.

www.opennet.ru