我正在寻找C或C ++中的LDAP libracy,它允许我指定LDAP主机名列表而不是单个主机名。然后,库应该使用它可以连接的第一个,以防一个或多个服务器关闭。我敢肯定包装一个现有的库来创建它很容易,但为什么要重新发明轮子呢?
答案 0 :(得分:2)
使用多个A记录,每个记录具有不同的IP。
ldapserver.example.com. IN A 1.2.3.4
ldapserver.example.com. IN A 2.3.4.5
OpenLDAP客户端库将依次尝试每个主机。故障转移(不幸的是)与TCP连接超时一样慢......
答案 1 :(得分:0)
我不能说我听说过一个。此外,我使用的大多数支持LDAP的软件支持故障转移很差或根本不支持故障转移。您最好尝试在服务器上实现故障转移,将其置于负载均衡器或类似设备之后。
答案 2 :(得分:0)
novell cldap libraries(和java库)在连接时支持空格分隔的主机列表。如ldap_init()
页中所述,它会依次尝试每一个。
openldap libldap库还支持以空格分隔的传递给ldap_open()
的主机列表或传递给ldap_initialize()
的逗号分隔列表。
唯一的问题是确保处理连接消失后返回的LDAP_SERVER_DOWN
错误。我通常编写一个包装函数来尝试操作(即:搜索),并尝试重新连接LDAP_SERVER_DOWN
,然后再次执行操作。