2008-09-18 8 views
1

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

ответ

0

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

2

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

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

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

0

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

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

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