Я пытался настроить резервные серверы LDAP с Apache 2.2.3.
/etc/httpd/conf.d/authn_alias.conf
<AuthnProviderAlias ldap master>
AuthLDAPURL ldap://192.168.5.148:389/dc=domain,dc=vn?cn
AuthLDAPBindDN cn=anonymous,ou=it,dc=domain,dc=vn
AuthLDAPBindPassword pa$$w0rd
</AuthnProviderAlias>
<AuthnProviderAlias ldap slave>
AuthLDAPURL ldap://192.168.5.199:389/dc=domain,dc=vn?cn
AuthLDAPBindDN cn=anonymous,ou=it,dc=domain,dc=vn
AuthLDAPBindPassword pa$$w0rd
</AuthnProviderAlias>
/etc/httpd/conf.d/authz_ldap.conf
#
# mod_authz_ldap can be used to implement access control and
# authenticate users against an LDAP database.
#
LoadModule authz_ldap_module modules/mod_authz_ldap.so
<IfModule mod_authz_ldap.c>
<Location />
AuthBasicProvider master slave
AuthzLDAPAuthoritative Off
AuthType Basic
AuthName "Authorization required"
AuthzLDAPMemberKey member
AuthUserFile /home/setup/svn/auth-conf
AuthzLDAPSetGroupAuth user
require valid-user
AuthzLDAPLogLevel error
</Location>
</IfModule>
Если я правильно понимаю, mod_authz_ldap
будет пытаться искать пользователей во втором LDAP, если первый сервер не работает или OpenLDAP на нем не работает.
Но на практике этого не происходит. Протестировано путем остановки LDAP на главном устройстве, я получаю "внутренняя ошибка сервера 500" при доступе к репозиторию Subversion. В error_log
показывает:
[11061] auth_ldap authenticate: user quanta authentication failed;
URI / [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server]
Я неправильно понял? AuthBasicProvider ldap1 ldap2
только означает, что если mod_authz_ldap
не может найти пользователя в ldap1, он продолжит с ldap2. Он не включает функцию аварийного переключения (ldap1 должен работать и работать нормально)?
Я далек от того, чтобы быть специалистом по LDAP, но согласно mod_authnz_ldap документы вы должны указать резервный сервер LDAP в Директива AuthLDAPUrl как это
AuthLDAPURL "ldap://ldap1.airius.com ldap2.airius.com/ou=People, o=Airius"
Вы не можете установить разные фильтры для отработки отказа. Аварийное переключение должно быть зеркалом основного сервера для обслуживания тех же данных.
То, что сказал Кристофер Перрин, но также тайм-аут по умолчанию составляет десять секунд, которые вы можете сократить до пяти секунд, чтобы вы «быстро потерпели неудачу» и люди быстрее получили ответ.
TCP занимает пару секунд для обнаружения потерянных сетевых пакетов и повторной передачи. Никогда не устанавливайте таймаут ниже 5 секунд, иначе рабочие соединения могут прерываться.
Во всемирной среде, скажем, веб-сервер находится в азиатском филиале, а LDAP находится в штаб-квартире в Европе, рассмотрите возможность увеличения тайм-аута до 15 секунд.