-
Notifications
You must be signed in to change notification settings - Fork 0
OpenDJ: быстрый масштабируемый LDAP на базе Apache Cassandra
LDAP-совместимые службы каталогов — широко распространенный отраслевой стандарт и удобное решение для хранения идентификационных данных. LDAP службы наиболее часто используются в:
- управлении учетным данными пользователей предприятия
- управлении устройствами IoT
- управлении машинами и оборудованием
В одном из популярных open-source LDAP каталогов OpenDJ, начиная с версии 4.6.1 появилась возможность использовать Apache Cassandra или ScyllaDB в качестве хранилища данных. Использование колоночных NoSQL баз данных дает несколько важных преимущество по сравнению с классическими LDAP:
Функциональность | Классический LDAP | LDAP на базе колоночных NoSQL БД |
---|---|---|
Чтение | ❌ Нагрузка чтения одной ноды ограничена производительностью ноды | ✅ Нагрузка чтения с одной ноды не ограничена производительностью одной ноды. Нагрузка распределяется в соотвествии с уровнем репликации. |
Запись | ❌ Нагрузка синхронизации записи обрабатывается на всех нодах | ✅ Нагрузка синхронизации записи обрабатывается на нодах с требуемым уровнем репликации |
Репликация | ❌ Отказ репликации может привести перевод остальных нод в режим read-only | ✅ Отказ ноды не приводит к остановке в соотвествии с уровнем репликации |
Балансировка | ❌ Требуется отдельный балансировщик для распределения нагрузки между нодами | ✅ Нагрузка распределяется автоматически между нодами на основании заданного уровня репликации |
Количество записей | ❌ До 6 млн | ✅ Неограничено |
Более подробно о преимуществах можно почитать вот тут: https://www.datastax.com/blog/exploring-common-apache-cassandra-use-cases
Перейдем к практике. Настроим OpenDJ с Apache Cassandra в Docker контейнерах
- Создайте сеть Docker, чтобы OpenDJ и Apache Cassandra могли общаться между собой.
docker network create -d bridge opendj-cassandra
- Запустите образ Docker Apache Cassandra и пробросьте порт для доступа с машины-хоста.
docker run --rm -it -p 9042:9042 --network=opendj-cassandra --name cassandra cassandra
Для демонстрационных целей мы не будем монтировать разделы Docker к хосту и контейнер с Apache Cassandra будет сразу удален после остановки.
- Установите настройки подключения к Apache Cassandra в переменную окружения
OPENDJ_JAVA_ARGS
export OPENDJ_JAVA_ARGS="-server -Ddatastax-java-driver.basic.contact-points.0=cassandra:9042 -Ddatastax-java-driver.basic.load-balancing-policy.local-datacenter=datacenter1"
- Установите тип бэкенда для нового инстанса OpenDJ и добавьте создание тестовых данных
export OPENDJ_ADD_BASE_ENTRY="--backendType cas --sampleData 5000"
Обратите внимание на параметр --backendType
его значение установлено в cas
, означает, что OpenDJ будет использовать Apache Cassandra или ScyllaDB в качестве хранилища данных.
- Запустите Docker контейнер OpenDJ
docker run --rm -p 1389:1389 -p 1636:1636 -p 4444:4444 --network=opendj-cassandra \
--env OPENDJ_JAVA_ARGS=$OPENDJ_JAVA_ARGS --env ADD_BASE_ENTRY=$OPENDJ_ADD_BASE_ENTRY \
--name opendj openidentityplatform/opendj:latest
После успешного запуска OpenDJ выведет в консоль
Server Run Status: Started
OpenDJ is started
Подключитесь к инстансу OpenDJ, используя любой из клиентов LDAP, например, Apache Directory Studio.
В Apache Directory Studio создайте новое подключение с такими настройками
- User name:
cn=Directory Manager
- Password:
password
- Host:
localhost
- Port:
1389
После подключения к OpenDJ, вы увидите в консоли созданные тестовые записи.
Сервис каталогов LDAP v3.
Предоставляет высокую производительность (десятки тысяч запросов в секунду), доступность и масштабируемость для безопасного хранения цифровых учетных данных, организационно штатной структуры организаций и данных приложений. Поддерживает мульти-мастер репликацию произвольной топологии.
Предоставляет REST/JSON API для легкой интеграции с корпоративными системами, мобильными приложениями и системами аудио и видеоконференцсвязи.
Эволюция: Sun DS, Oracle OpenDS, Forgerock/Open Identity Platform OpenDJ