Релиз LDAP-сервера ReOpenLDAP 1.1.7
Состоялся релиз 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.
© OpenNet