我正在为 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 的内容,但我不确定该去哪里。
Anycast 不需要也不建议与 NTP 一起使用 - 请参阅NTP Best Current Practice RFC。(实际上,我认为 RFC 还不够深入,如果全主动设计可行,应该明确建议不要使用任播 NTP。)
关于 NTP 的一个常见误解是它一次应该只有一个源,并且在该源不可用时能够故障转移到另一个源。NTP 的故障转移架构既不是最理想的,也是不必要的。相反,您应该使用所有 NTP 源始终处于活动状态的设计。我已经在我的博客中对此进行了总结,您可以在NTP 文档中获得更详细的信息。
您为 DNS 建议的设置,其中相同的名称(在您的情况下
dcs.test.internal
,或者如 Greg Askew 建议的那样,域本身:)test.internal
返回每个可用 NTP 服务器的所有 IP 地址是配置 NTP 客户端的首选方式。这就是NTP 池使用的内容。现代版本的 chrony 和 ntpd(以及各种其他客户端实现)将自动使用所有 NTP 服务器,从而实现更高的准确性和弹性。你已经有了名字。域名。如果需要,您可以创建自己的 CNAME。但是,如果存在任何 DC DNS 记录但没有应答或 DC 的 IP 有问题,则客户端有责任进行这些调整并选择可运行的域控制器。
可能有相当多的系统管理员会遇到这个问题。谁能比我有更好的答案,但这是我的想法。
您可以基于 TCP/IP 堆栈在 Windows 服务器之间创建故障转移架构。
您将创建一个启用了 DC 和 NTP 服务的 Windows 服务器集群。并且您将有一个指向单个 IP 地址的 FQDN(比如 192.168.0.10)。
在 3 台服务器在线的情况下,dc1 将在以 192.168.0.10 作为目标 IP 地址的数据包入站时进行监听和应答。
如果 dc1 失败,当数据包到达广播域时,dc2 将接管并开始应答,目标 IP 地址为 192.168.0.10。
微软描述了两种方法:
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