我正在努力寻找一种正确的做法来设置 LDAP/AD 身份验证和 NTP 的服务器。我原本想问两个不同的问题会更好,但我认为,对于两种类型的服务来说,这是一个常见问题,这也是一个值得问的问题。
因此,我有三个域控制器:
dc1.test.internal
(在192.168.0.2/24
)dc2.test.internal
(在192.168.0.3/24
)dc3.test.internal
(在192.168.0.4/24
)
我想使用所有这些服务器进行身份验证和 NTP 同步。假设我想在 iLO(集成 Lights Out)上设置基于 AD 的身份验证。我必须指定这些服务器,iLO 允许我逐个执行此操作。这种情况很简单。chronyd 也是如此,我可以指定多个主机,没问题。
如果某项服务不允许您这样做,例如只允许您输入一个 DC 或 NTP 服务器,该怎么办?我可以创建一组名为 A 的 DNS 条目,dcs.test.internal
并将它们分别指向192.168.0.2
、192.168.0.3
和 吗192.168.0.4
?并dcs.test.internal
在 iLO 设置中将其设置为目录服务器?NTP 怎么样?我读过一些关于 Anycast NTP 的内容,但我不知道该怎么做。
答案1
不需要或不建议将 Anycast 与 NTP 一起使用 - 请参阅NTP 最佳当前实践 RFC(我实际上认为 RFC 还不够完善,如果全主动设计可行,应该明确建议不要使用任播 NTP。)
关于 NTP 的一个常见误解是,它一次只能有一个源,并且能够在该源不可用时故障转移到另一个源。NTP 的故障转移架构既不理想,也没有必要。相反,您应该使用一种设计,让所有 NTP 源始终处于活动状态。我在我的博客,您可以在网络时间协议 (NTP) 文档。
您建议的 DNS 设置是,使用相同的名称(在您的例子中是dcs.test.internal
,或者如 Greg Askew 所建议的,是域本身test.internal
:)返回每个可用 NTP 服务器的所有 IP 地址,这是配置 NTP 客户端的首选方法。这就是NTP 池用途。chrony 和 ntpd 的现代版本(以及各种其他客户端实现)将自动使用所有 NTP 服务器,从而实现更高的准确性和弹性。
答案2
您已经有了一个名称。域名。您可以根据需要创建自己的 CNAME。但是,如果存在任何 DC DNS 记录但没有响应,或者 DC 的 IP 存在问题,则客户有责任进行这些调整并选择可运行的域控制器。
答案3
可能有相当多的系统管理员会遇到这个问题。他们可能会有比我更好的答案,但这是我的想法。
您可以基于 TCP/IP 堆栈在 Windows 服务器之间创建故障转移架构。
您将创建一个启用 DC 和 NTP 服务的 Windows 服务器集群。并且您将拥有一个指向单个 IP 地址(假设为 192.168.0.10)的单个 FQDN。
当 3 台服务器在线时,当以 192.168.0.10 为目标 IP 地址的数据包入站时,dc1 将会监听并应答。
如果 dc1 发生故障,则 dc2 将接管并在数据包到达以 192.168.0.10 作为目标 IP 地址的广播域时开始应答。
微软描述了两种方法:
https://learn.microsoft.com/en-us/windows-server/networking/technologies/network-load-balancing
https://learn.microsoft.com/en-us/windows-server/failover-clustering/failover-clustering-overview