是否有提供故障转移的ldap C / C ++库?

时间:2020-03-06 14:20:10  来源:igfitidea点击:

我正在寻找C或者C ++中的LDAP自由度,它允许我指定LDAP主机名列表而不是单个主机名。然后,如果一个或者多个服务器发生故障,该库应使用它可以连接的第一个服务器。我敢肯定,包装一个现有的库来创建它很容易,但是为什么要重新发明轮子呢?

解决方案

我不能说我曾经听说过一个。此外,我使用的大多数支持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库(和Java库)在连接时支持使用空格分隔的主机列表。如ldap_init()页面所述,它将依次尝试每一个。

openldap libldap库还支持以空格分隔的传递给ldap_open()的主机列表或者以逗号分隔的传递给ldap_initialize()的列表。

唯一的陷阱是确保处理连接断开后返回的" LDAP_SERVER_DOWN"错误。我通常编写一个包装器函数来尝试操作(即搜索),并尝试在发生LDAP_SERVER_DOWN时尝试重新连接,然后再次执行该操作。