Хотел бы пролить свет на построение высокой отказоустойчивости сервиса LDAP, используя два сервера в режиме репликации Multi-Master (MirrorMode). Режим Multi-Master предоставляет гарантированную репликацию master-master, а также обеспечивает высокую доступность между несколькими master серверами. Обе системы приведенных в статье, установлены и сконфигурированы с программным обеспечением OpenLDAP в режиме репликации Multi-Master. Этот режим также называется Active - Active Hot-Standby. Для необходимой балансировки нагрузки между серверами LDAP, необходим внешний сервер либо устройство для управления активными нодами и их автоматического переключения (failover). В данном проекте роль балансировщика будет исполнять DNS сервер. В случае необходимости использования другого программного продукта, существует рекомендация использовать Linux LVS либо коммерческое решение от компании Red Hat – Cluster Suite для автоматической активации вторичного master-сервера в случаях, когда первичный выходит из строя. Настройка этих продуктов выходит за рамки даной статьи.
Из вывода поиска команды yum search, выберите необходимые пакеты и воспользуйтесь командой установки
Задаем права на сервере enio:
Конфигурирование Open LDAP в режиме репликации Multi-Master и корневой каталог
Собственно вот и все. Обязательно на данном этапе изучаем файлы журналов на обоих системах /var/log/ldap2.4/access.log. Далее при успешном соединении по шифрованному каналу и репликации мы уже можем создавать пользователей и подключать клиентские серверы для их аутентификации как это было описано в статье ранее - Сервер LDAP аутентификации для SSH.
№ | Объект | Сервер LDAP 1 | Сервер LDAP 2 |
1 | base object | dn=dc=ldap,dc=domain,dc=com | dn=dc=ldap,dc=domain,dc=com |
2 | rootpw | Passw0rd | Passw0rd |
3 | rootdn | cn=Manager,dc=ldap,dc=domain,dc=com | cn=Manager,dc=ldap,dc=domain,dc=com |
4 | eth0 IP адрес | 192.168.7.54 | 192.168.7.55 |
5 | Каталог конфигурационных файлов Open LDAP | /etc/openldap2.4/ | /etc/openldap2.4/ |
5 | Основной конфигурационный файл | /etc/opendap2.4/slapd.conf | /etc/opendap2.4/slapd.conf |
6 | Mirror Mode Replication Server ID | 1 | 2 |
7 | Версия Open LDAP | 2.4.22 | 2.4.22 |
Установка необходимых пакетов (Установка RPM пакетов их зависимостей)
Режим репликации Multi-Master доступен только в версии релизов Open LDAP 2.4.x. В настоящее время Red Hat предоставляет пакеты только с версией релизов 2.3.x. Open LDAP 2.4 RPM скачаны по этому адресу http://staff.telkomsa.net/packages/rhel5/openldap/ и установлены на оба сервера.
Требуемые и установленные RPM файлы , приведены ниже :
• lib64ldap2.4_2-2.4.22-1.el5.x86_64.rpm
• openldap2.4-2.4.22-1.el5.x86_64.rpm
• openldap2.4-clients-2.4.22-1.el5.x86_64.rpm
• openldap2.4-extra-schema-2.4.22-1.el5.x86_64.rpm
• openldap2.4-servers-2.4.22-1.el5.x86_64.rpm
Установить данные пакеты, можно командами:
# rpm -i *.rpm (При перманентном скачивании пакетов)
# yum install *ldap2.4* -y (При добавление репозитария)
Требуемые RPM зависимости для вышеописанных пакетов :
• libtool-ltdl
• unixODBC
Установить данные пакеты, можно командами:
# yum search libtool=ltd
# yum seach unixODBC
Из вывода поиска команды yum search, выберите необходимые пакеты и воспользуйтесь командой установки
Создание сертификатов для организации шифрованного соединения
Весь трафик репликации будет шифроваться. В этом проекте сервера используют сертификаты, подписанные одним CA. Это обеспечивает дополнительную защиту и позволяет клиенту репликации доверять серверу. Создаем сертификаты для каждого сервера. Если в организации уже имеется CA, то просто создаем по сертификату для каждого из серверов. Сертификаты должны быть без пароля. Если же CA в организации нет - создаем свой:
Создаем рабочие каталоги:
# mkdir /var/db/certs/
# mkdir /var/db/certs/keys
# mkdir /var/db/certs/requests
# cd /var/db/certs/
Генерируем ключ для CA. Вводим пароль для CA
# openssl genrsa -des3 -out keys/ca.key 2048
Создаем самоподписанный CA сертификат, заполняем все поля по желанию - от них ничего не зависит.
# openssl req -new -x509 -days 3650 -key keys/ca.key -out ca.crt
Создаем ключ для сервера enio.domain.com :
# openssl genrsa -out keys/enio_ldap.key 2048
Создаем запрос на подпись сертификата сервера enio.domain.com, Внимательно заполняем все поля, в поле Common Name пишем DNS адрес сервера - enio.domain.com, пароль не вводим, т.е просто жмем enter:
# openssl req -new -key keys/enio_ldap.key -out requests/enio_ldap.csr
Подписываем сертификат, вводим пароль для CA:
# openssl x509 -req -days 3650 -in requests/enio_ldap.csr -CA ca.crt -CAkey keys/ca.key -CAcreateserial -out enio_ldap.crt
Создаем ключ для сервера pemfredo.domain.com:
# openssl genrsa -out keys/pemfredo_ldap.key 2048
Создаем запрос на подпись сертификата сервера pemfredo.domain.com, Внимательно заполняем все поля, в поле Common Name пишем DNS адрес сервера - pemfredo.domain.com, пароль не вводим, т.е просто жмем enter:
# openssl req -new -key keys/pemfredo_ldap.key -out requests/pemfredo_ldap.csr
Подписываем сертификат, вводим пароль для CA:
# openssl x509 -req -days 3650 -in requests/pemfredo_ldap.csr -CA ca.crt -CAkey keys/ca.key -CAcreateserial -out pemfredo_ldap.crt
Ок, сертификаты готовы, теперь на серверах enio и pemfredo создаем необходимые каталоги:
# mkdir /var/db/certs
# mkdir /var/db/certs/keys
В каталог /var/db/certs кладем сертификаты ca.crt и enio_ldap.crt (pemfredo_ldap.crt для сервера pemfredo)
В каталог /var/db/certs/keys кладем ключ pemfredo_ldap.key ( enio_ldap.key для сервера pemfredo)
Задаем права на сервере enio:
# chown ldap:ldap /var/db/certs/enio_ldap.crt
# chown ldap:ldap /var/db/certs/keys/enio_ldap.key
# chmod 0400 /var/db/certs/enio_ldap.crt
# chmod 0400 /var/db/certs/keys/enio_ldap.key
# chmod 444 /var/db/certs/ca.crt
Задаем права на сервере pemfredo:
# chown ldap:ldap /var/db/certs/pemfredo_ldap.crt
# chown ldap:ldap /var/db/certs/keys/pemfredo_ldap.key
# chmod 0400 /var/db/certs/pemfredo_ldap.crt
# chmod 0400 /var/db/certs/keys/pemfredo_ldap.key
# chmod 444 /var/db/certs/ca.crt
Описание | LDAP сервер 1 enio.domain.com ( /etc/openldap2.4/slapd.conf ) | LDAP сервер 2 pemfredo.domain.com ( /etc/openldap2.4/slapd.conf ) |
Значение rootpw для базы данных, генерируемое утилитой slappasswd2.4. Настоящий пароль установлен как: Passw0rd на обоих серверах. | database bdb suffix "dc=ldap,dc=domain,dc=com" rootdn "cn=Manager,dc=ldap,dc=domain,dc=com" rootpw {SSHA}79LrbNJ435tC6mgn1ZsEA7BF8CpwagBN directory /var/lib/ldap2.4 | database bdb suffix "dc=ldap,dc=domain,dc=com" rootdn "cn=Manager,dc=ldap,dc=domain,dc=com" rootpw {SSHA}79LrbNJ435tC6mgn1ZsEA7BF8CpwagBN directory /var/lib/ldap2.4 |
Загрузка модулей и указание путей до необходимых модулей, требуемых для репликации | modulepath /usr/lib64/openldap2.4 moduleload back_bdb moduleload syncprov.la | modulepath /usr/lib64/openldap2.4 moduleload back_bdb moduleload syncprov.la |
Описание директивы репликации Mirror Mode. Выделенная подсеть 192.168.7.0 используется для репликации между интерфейсами eth0 | serverID 001 syncrepl rid=000 provider=ldaps://pemfredo.domain.com type=refreshAndPersist retry="5 10 300 +" searchbase="dc=ldap,dc=domain,dc=com" attrs="*,+" bindmethod=simple binddn="uid=ldapsync_service,ou=systemusers, dc=ldap,dc=domain,dc=com" credentials=Passw0rd tls_cert=/var/db/certs/enio_ldap.crt tls_key=/var/db/certs/keys/enio_ldap.key tls_cacert=/var/db/certs/ca.crt mirrormode TRUE overlay syncprov syncprov-checkpoint 100 5 | serverID 002 syncrepl rid=000 provider=ldaps://enio.domain.com type=refreshAndPersist retry="5 10 300 +" searchbase="dc=ldap,dc=domain,dc=com" attrs="*,+" bindmethod=simple binddn="uid=ldapsync_service,ou=systemusers, dc=ldap,dc=domain,dc=com" credentials=Passw0rd tls_cert=/var/db/certs/pemfredo_ldap.crt tls_key=/var/db/certs/keys/pemfredo_ldap.key tls_cacert=/var/db/certs/ca.crt mirrormode TRUE overlay syncprov syncprov-checkpoint 100 5 |
Добавление базовых объектов в базу сервера LDAP. Создается файл base.ldif (Соблюдение в название имени файла необязательно) | dn: dc=ldap,dc=domain,dc=com objectClass: dcObject objectClass: organization dc: ldap o: ldap description: Top Level for domain dn: cn=Manager,dc=ldap,dc=domain,dc=com ou: People description: All People in domain objectClass: organizationalRole description: Administrative account for Top Level dn: ou=People,dc=ldap,dc=domain,dc=com ou: People objectclass: organizationalUnit description: for UNIX users dn: ou=Groups,dc=ldap,dc=domain,dc=com ou: Groups description: All People in Organisation objectClass: organizationalUnit description: for UNIX groups | |
Применение базовых объектов к базе сервера LDAP | Используйте следующую команду на сервере LDAP 1 (enio) : # ldapadd2.4 -x -D “cn=Manager,dc=ldap,dc=domain,dc=com” -W -f /etc/openldap2.4/base.ldif | Убедитесь в том, что службы ldap2.4 запущенны на обоих серверах, при выполнении данного действия. Базовые объекты требовательны в добавлении только к одному серверу LDAP (Зеркальная репликация автоматически добавит все объекты на второй сервер) |
Добавление системного пользователя для репликации в базу сервера LDAP. Создается файл ldapsync_service.ldif (Соблюдение в название имени файла необязательно). Пароль: Passw0rd | dn: ou=systemusers,dc=ldap,dc=domain,dc=com objectClass: top objectClass: organizationalUnit ou: systemusers description: for System user ldapsync_service dn: uid=ldapsync_service,ou=systemusers,dc=ldap, dc=domain,dc=com objectClass: person objectClass: uidObject uid: ldapsync_service cn: ldapsync_service sn: ldapsync_service userPassword: {SSHA}DfUa1r5TNlNd0fn/Yt1GnvipuPrdXX72 | |
Применение пользователя в базу сервера LDAP | Используйте следующую команду на сервере LDAP 1 (enio) : # ldapadd2.4 -x -D “cn=Manager,dc=ldap,dc=domain,dc=com” -W -f /etc/openldap2.4/ldapsync_service.ldif | Убедитесь в том, что службы ldap2.4 запущенны на обоих серверах, при выполнении данного действия. Базовые объекты требовательны в добавлении только к одному серверу LDAP (Зеркальная репликация автоматически добавит все объекты на второй сервер) |
Собственно вот и все. Обязательно на данном этапе изучаем файлы журналов на обоих системах /var/log/ldap2.4/access.log. Далее при успешном соединении по шифрованному каналу и репликации мы уже можем создавать пользователей и подключать клиентские серверы для их аутентификации как это было описано в статье ранее - Сервер LDAP аутентификации для SSH.
Комментариев нет:
Отправить комментарий