Существует ли библиотека ldap C / C ++, которая обеспечивает восстановление после отказа? - PullRequest
1 голос
/ 18 сентября 2008

Я ищу библиотеку LDAP в C или C ++, которая позволяет мне указывать список имен хостов LDAP вместо одного имени хоста. Затем библиотека должна использовать первый, к которому она может подключиться, если один или несколько серверов не работают. Я уверен, что было бы легко обернуть существующую библиотеку, чтобы создать это, но зачем изобретать велосипед?

Ответы [ 3 ]

2 голосов
/ 14 ноября 2008

Используйте несколько записей A, каждая с разным IP.

ldapserver.example.com.    IN A    1.2.3.4
ldapserver.example.com.    IN A    2.3.4.5

Клиентские библиотеки OpenLDAP будут пробовать каждый хост по очереди. Отработка отказа (к сожалению) так же медленна, как и тайм-аут вашего TCP-соединения ...

0 голосов
/ 25 августа 2009

Библиотеки novell cldap (и библиотеки java) поддерживают список хостов, разделенных пробелами, при подключении. Он будет пробовать каждый по очереди, как указано на странице ldap_init().

Библиотека openldap libldap также поддерживает разделенный пробелами список хостов, переданных в ldap_open(), или список через запятую, переданный в ldap_initialize().

Единственный улов - убедиться, что обработана ошибка LDAP_SERVER_DOWN, которая возвращается после разрыва соединения. Я обычно пишу функцию-обертку, которая пытается выполнить операцию (т. Е. Поиск) и пытается восстановить соединение, если происходит LDAP_SERVER_DOWN, а затем снова выполняет операцию.

0 голосов
/ 18 сентября 2008

Не могу сказать, что когда-либо слышал об этом. Более того, большинство программного обеспечения с поддержкой LDAP, которое я использовал, плохо поддерживали аварийное переключение или не поддерживали его вообще. Возможно, было бы лучше попытаться реализовать отработку отказа на сервере, поместив его за балансировщиком нагрузки или подобным.

...