Я ищу библиотеку LDAP на C или C++, которая позволяет мне указывать список имен хостов LDAP вместо одного имени хоста. Затем библиотека должна использовать первый, к которому он может подключиться, в случае, если один или несколько серверов/не работают. Я уверен, что было бы легко обернуть существующую библиотеку, чтобы создать это, но зачем изобретать колесо?Есть ли библиотека ldap C/C++, которая обеспечивает сбой?
ответ
Не могу сказать, что я когда-либо слышал об этом. Кроме того, большинство программ, поддерживающих LDAP, которые я использовал, поддерживали отказоустойчивость или вообще не выполнялись. Возможно, вам лучше попытаться реализовать переход на другой сервер, поставив его за балансировщик нагрузки или аналогичный.
Используйте несколько записей A, каждый с другим IP-адресом.
ldapserver.example.com. IN A 1.2.3.4
ldapserver.example.com. IN A 2.3.4.5
Клиентские библиотеки OpenLDAP будут проверять каждый хост по очереди. Отказоустойчивость (к сожалению) так же медленна, как и тайм-аут соединения TCP ...
novell cldap libraries (и библиотеки java) поддерживают список разделенных пробелами хостов при подключении. Он будет пробовать каждый по очереди, как указано на странице ldap_init()
.
Библиотека openldap libldap также поддерживает список разделенных пробелами хостов, переданных в ldap_open()
, или список, разделенный запятой, который передается ldap_initialize()
.
Единственный улов - не забудьте обработать ошибку LDAP_SERVER_DOWN
, которая возвращается после того, как соединение уйдет. Обычно я пишу функцию-обертку, которая пытается выполнить операцию (т. Е. Поиск), и пытается повторно подключиться, если происходит LDAP_SERVER_DOWN
, а затем снова выполняет операцию.