我有一组位于多个数据中心的服务器。它们应该全部同步,以便它们具有相同的时间,理想情况下,也应该具有正确的时间。
是否最好将它们全部与相同的服务器同步(无论地理位置如何),还是最好将它们与附近的服务器同步?
答案1
我倾向于将客户端配置为使用更近的 NTP 服务器,原因有二:
- 距离越短,客户端和服务器之间网络中断的风险就越小。您肯定不希望客户端断网并开始漂移。
- 距离越短,网络延迟就越短,更重要的是,网络延迟的变化就越小。
您可以通过多个参考服务器或通过时间源(例如 GPS 接收器)来维护本地 NTP 服务器的正确性。每个站点的正确性将确保每个站点的时间相同。
答案2
这确实取决于您的准确性要求以及服务器计时和解释 NTP 数据的方式。旨在保持准确时间的完整 NTP 实现是令人惊讶的科学事物有简化的实现,基本上放弃了大部分内部处理和中间时间偏差校正,而“仅同步到他们被告知的时间” - 这称为 S(简化)NTP。
如果您拥有成熟的 NTP 实现,那么同步到哪些服务器几乎就无关紧要了 - 只要您可以相信其中大多数服务器具有准确的时间,算法就会消除偏差和延迟问题,因此时钟偏差将在几毫秒的范围内。
如果您只有 SNTP 并且想要“同一时间”,那么最好运行自己的 NTP 服务器,并将其他数据中心的机器与它们同步。即使是 SNTP 实现也应该测量网络往返时间,并在设置时钟之前将其考虑在内,因此除非您的链接延迟差异很大,或者你的硬件时钟很差,事情也应该在毫秒范围内。