Введение

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

Перейдем к практике. Настроим OpenDJ с Apache Cassandra в Docker контейнерах

  1. Создайте сеть Docker, чтобы OpenDJ и Apache Cassandra могли общаться между собой.

docker network create -d bridge opendj-cassandra
  1. Запустите образ Docker Apache Cassandra и пробросьте порт для доступа с машины-хоста.

docker run --rm -it -p 9042:9042 --network=opendj-cassandra --name cassandra cassandra

Для демонстрационных целей мы не будем монтировать разделы Docker к хосту и контейнер с Apache Cassandra будет сразу удален после остановки.

  1. Установите настройки подключения к 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"
  1. Установите тип бэкенда для нового инстанса OpenDJ и добавьте создание тестовых данных

export OPENDJ_ADD_BASE_ENTRY="--backendType cas --sampleData 5000"

Обратите внимание на параметр --backendType его значение установлено в cas , означает, что OpenDJ будет использовать Apache Cassandra или ScyllaDB в качестве хранилища данных.

  1. Запустите 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, вы увидите в консоли созданные тестовые записи.

Комментарии (0)