我们目前在工作中运行 2 个 Server 2008 R2 Active Directory 域控制器,并在其上运行故障转移群集,以提供弹性文件、打印和 DHCP 服务。Server1 拥有所有 FSMO 角色,并且是 GC,而 Server2 只是一个 GC....
我们观察到,启动 Server1 需要很长时间(我认为这是由于等待 ADDS 导致 DNS 不可用,而 ADDS 无法找到任何内容,因为它看不到任何 DNS)。通常我们启动 Server1,等待 30 秒左右,然后启动 Server2。Server1 将停留在“应用计算机设置”状态,直到 Server2 完成启动。直到我能够登录 Server1 并启动重新启动后,Server2 上的 DNS 才会开始工作。一旦 Server1 完成重新启动,一切就都正常了,我们可以继续启动。
所有这些的结果是,故障转移群集需要手动干预才能启动,因为它会因 AD/DNS 尚未准备好而失败。我做了一些研究,了解到这种长时间的启动延迟是由于 server1 缺少 DNS(先有鸡还是先有蛋的情况)造成的。我非常想解决这个问题,因为当有一个定义的流程时,它使事情更容易记录(从而让其他人去做:)),所以对我来说,解决方案似乎是添加另一个 DNS 服务器(我在想不是 AD DNS 服务器,甚至可能是 Linux DNS 服务器)并在 Server1 和 2 之前启动它。我这样做对吗,还是 DNS 服务器需要 AD 集成?或者最好先添加 RODC 并启动它?
答案1
解决问题:在自己的 UPS 上安装一台装有 Active Directory 的独立小型机器,作为最后的 AD。其他 AD 将其用作 DNS。问题解决了。这是我在我的环境中所做的,它大大缩短了启动时间。
DNS 通常是 AD 集成的,除非您手动销毁它 - 这会产生其他影响。
答案2
TomTom 的回答非常到位。我只是发布了一个单独的答案来澄清一些事情。
要使 Windows 群集正常运行(群集服务在每个节点上启动),组成群集的节点必须能够验证群集服务域帐户,该帐户是您在 Windows 群集安装期间配置的帐户。要实现这一点,每个节点必须能够与域控制器建立安全通道以验证此帐户。如果节点无法验证帐户,则群集服务不会启动。对于必须进行帐户验证才能启动服务的其他群集程序(如 Microsoft SQL Server 和 Microsoft Exchange),情况也是如此。
因此 - 由于一个集群中只有两个域控制器,因此集群服务在启动期间没有地方进行身份验证,从而导致其他服务失败或花费大量时间才能启动。
我可能想补充一点:集群域控制器并不是常见的做法。