如何使 AD 对于将其用作 LDAP 服务的应用程序具有高可用性

如何使 AD 对于将其用作 LDAP 服务的应用程序具有高可用性

我们的情况

我们目前有许多使用 LDAP 进行身份验证的 Web 应用程序。为此,我们使用 LDAPS 端口 ( 636) 将 Web 应用程序指向我们的一个 AD 域控制器。

当我们必须更新域控制器时,这会给我们带来问题,因为另一个 Web 应用程序可能依赖于任何 DC。

我们想要的

我们希望将我们的 Web 应用程序指向集群“虚拟” IP。此集群将至少包含两台服务器(以便每台集群服务器都可以轮换和更新)。然后,集群服务器将代理到 DC 的 LDAPS 连接,并能够确定哪一个可用。

问题

对于有为 AD 的 LDAP 接口创建 HA 集群经验的任何人:

  1. 您为集群使用了什么软件?
  2. 有什么注意事项吗?
  3. 或者也许采用完全不同的架构来实现类似的目标?

更新

也许我的问题一开始就表达得不够清楚。对此我深表歉意。

这些 Web 应用程序不是我们开发的,也不支持 AD。它们只要求 LDAP 服务器的主机名/IP 地址。不幸的是,我们必须遵守这一限制。我理解SRV records工作原理,但由于这些不是我们的应用程序,因此在这种情况下对我们没有帮助。

强迫开发人员修改他们的应用程序以适应 AD 也是不现实的。

唯一的选择是在基础设施中解决这个问题,而不是在软件中。我的问题针对的是那些专门做过这件事的人。

答案1

我们用Cisco IOS 的服务器负载均衡器 (SLB)为此,我们针对 OpenLDAP 服务器进行了测试。LDAP
是 LDAP,它应该也适用于 Microsoft 的 Active Directory。
其他制造商也提供类似的产品/功能。平衡 tcp 389/636 与平衡 tcp 80/443(或任何其他 tcp)相同。

不过,您可能需要解决一些证书问题。您可以告诉应用程序不要太警惕。(它可能已经是了,不确定您的 AD 证书是如何签名的,也不确定您信任哪些 CA。)或者让您的 AD 服务器使用带有适当subjectAlternativeName字段的证书。

答案2

您应该能够将您的 Web 应用服务器指向 Active Directory 域的 FQDN。这应该会将它们连接到可用的 DC。

例如,你的域可能有几个 DC:

dc1.example.com

dc2.example.com

不要将您的 Web 服务器明确指向 dc1 或 dc2,只需将它们指向 example.com(尝试通过端口 636 远程登录到 example.com - 您将获得与 DC 的连接)。我认为这基本上是循环 DNS。

我必须承认,我不知道如果 DC 离线会发生什么。DNS 记录可能需要一段时间才能反映这一点,即使它们确实会反映出来。可能值得进行测试,而不是在两者之间放置负载平衡器。

答案3

正确的方法是使用DNS服务器记录来查找域控制器名称和端口,以及确定以何种顺序使用哪些服务器。不幸的是,似乎没有多少 LDAP 应用程序支持 SRV 记录查找。

Active Directory 域控制器的 SRV 记录是_ldap._tcp.domain.tld。这将返回主机和端口的列表,以及每个主机和端口的优先级和权重(这些值可以使用组策略设置),它们一起指示要使用哪个服务器。

答案4

一个可能的解决方案是 LDAP 代理服务器。目前可用的解决方案并不多,但肯定能解决问题。这里有一个,有点过头了 -http://www.unboundid.com/products/directory-proxy-server.php。我确信有更多比这个 LDAP 代理服务器更便宜的开源替代品。

编辑:只是一个想法,在您的应用程序中,您是否有一个输入 LDAP URI 的位置? 如果有,您不能输入由空格分隔的服务器序列,例如: ldap://123..456.789.111 ldap://123.456.789.222 ldap://123.456.789.444

相关内容