Несколько серверов LDAP с mod_authn_alias: отказоустойчивость не работает, когда первый LDAP не работает?
Я пытался настроить резервные серверы 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 Internal Server Error" при доступе к хранилищу 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 должен работать и работать нормально)?
2 ответа
Я далек от того, чтобы быть специалистом по LDAP, но в соответствии с документами mod_authnz_ldap вы должны указать отказоустойчивый LDAP-сервер в директиве AuthLDAPUrl следующим образом
AuthLDAPURL "ldap://ldap1.airius.com ldap2.airius.com/ou=People, o=Airius"
Изменить: разъяснение
Вы не можете установить разные фильтры для отработки отказа. Отработка отказа должна быть зеркалом основного сервера для обслуживания тех же данных.
То, что сказал Кристофер Перрен, но также по умолчанию время ожидания составляет десять секунд, которое вы можете сократить, чтобы вы "быстро потерпели неудачу", и люди получили ответ быстрее.