Назад | Перейти на главную страницу

nss_ldap аварийное переключение с частично мертвым сервером

Я реализовал пару прокси openldap с несколькими мета-базами данных для слияния и фильтрации кластера AD DC. У меня есть несколько проблем, связанных с переключением клиентов между серверами, когда одна служба не работает. Одним из примеров был случай, когда центральный сервер системного журнала не работал и slapd не мог отправлять на него журналы, поэтому, пока сокет TCP был открыт, процесс не отвечал, поскольку он сначала ждал, чтобы очистить накопившиеся сообщения системного журнала. Здесь я ожидал, что клиенты не смогут подключиться ко второму серверу, но этого не произошло, несмотря на то, что они сообщали, что подключаются к нему:

2011-10-10T11:45:01.220367+01:00 gibsvlin-mkt-product worker_nscd: nss_ldap: could not search LDAP server - Server is unavailable
2011-10-10T11:45:01.231725+01:00 gibsvlin-mkt-product worker_nscd: nss_ldap: could not search LDAP server - Server is unavailable
2011-10-10T11:45:01.235354+01:00 gibsvlin-mkt-product worker_nscd: nss_ldap: could not search LDAP server - Server is unavailable
2011-10-10T11:45:01.242156+01:00 gibsvlin-mkt-product worker_nscd: nss_ldap: reconnected to LDAP server ldap://10.5.10.117:389/
2011-10-10T11:45:01.248505+01:00 gibsvlin-mkt-product worker_nscd: nss_ldap: could not search LDAP server - Server is unavailable

Итак, мы видим сообщение «переподключено к» для сервера резервного копирования, но, похоже, он на самом деле ничего не получает от него. Если я приостанавливаю работу виртуальной машины, которая не работает, так что TCP-соединение невозможно, тогда все нормально выходит из строя.

Похоже, что в логике сбоя есть некая тонкая вещь, которая могла бы разобраться с этим, но я не могу ее хорошо настроить, предполагая, что это решение. Соответствующий клиент ldap.conf читает:

scope sub
ldap_version 3
nss_base_passwd          dc=domain,dc=local?sub?&(uidNumber=*)
nss_base_group          dc=domain,dc=local?sub?&(gidNumber=*)
nss_initgroups_ignoreusers root,ldap,dbus,xfs,haldaemon,nscd,nocpulse
bind_timelimit 1
timelimit 5
idle_timelimit 5
nss_reconnect_tries 3
nss_reconnect_sleeptime 1
nss_reconnect_maxconntries 3
bind_policy soft
uri ldap://10.3.110.117:389/ ldap://10.5.10.117:389/
base dc=bwinparty,dc=local
nss_initgroups backlink
pam_login_attribute uid
ssl no

Кажется странным, что пока nscd и т. Д. Подключаются ко второму серверу, мы не можем войти в систему. Раньше для bind_timelimit и timelimit было 5, что мне подсказывало, что если у него закончилась привязка времени, тогда не оставалось времени для выполнения что-либо еще в пределах окна ограничения по времени. Однако никаких улучшений в этой настройке замечено не было.