我在一个小型网络中有大约 20 台 Linux 服务器,我需要它们的时钟彼此接近(例如,在 20 毫秒内)。我已经开始将它们中的每一个同步到 europe.pool.ntp.org 并且工作已经完成。
现在我有两个问题:
- 我是游泳池的明显负担吗?即,如果我从 20 台服务器或 2 台服务器访问,它对池有什么明显的影响吗?
- 如果它确实有所不同,那么让我的子网保持同步并使池处于轻负载状态的设置/配置是什么?有针对大型网络的指南(http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101),但我没有找到针对小型网络的指南。
鉴于该池多年来一直需要服务器(请参阅 [1]),我想说尽管 2 或 20 台服务器并没有真正产生影响,但您应该始终记住,您并不孤单。因此,您最好考虑说 1000 名管理员,在这种情况下,我们正在谈论 2000 或 20000 台服务器,这确实会产生影响。
您必须将网络中的两个 [2] 服务器与池同步(我们称它们为Primary NTP Servers),然后将所有其他服务器同步到这两个服务器。这种方法还有一个优点,就是所有服务器之间的时间会更加匹配(小于 1 毫秒)。这符合 IETF 最佳实践。
1) 主 NTP 服务器的配置
server
将 ntp[d].conf 的和行替换为restrict
以下内容,并将其余部分保留为您的发行版默认值 [3]:请注意,此配置还允许来自 Internet 上的主机通过 NTP 查询来查询您的主机时间。如果您不想,请使用防火墙。在我的示例中,10.11.12.1 和 10.11.12.2 是主 NTP 服务器的 IP(它们有两张网卡,一张面向公共互联网,一张面向本地 10.11.12.x 子网)。每个主 NTP 服务器都将另一个声明为对等点(对等点基本上意味着服务器和客户端 - 您将另一台主机用作时间源,而另一台主机也将您用作时间源)。所以调整第一行的IP,让每个Primary NTP Server的配置指向另一个作为对等点。有关我选择使用 4 个服务器的信息,请参阅 [4]。
2) 所有其他服务器的配置
2A) 如果您有两个网络接口
您最好使用第二个接口来创建本地子网(例如
10.11.12.0/24
)并将其用于 NTP 查询。在这种情况下,限制线可以更紧。因此,再次将 ntp[d].conf 的server
和restrict
行替换为以下内容,并将其余部分保留为您的发行版默认值 [3]:2B) 如果您没有两个网络接口
您应该使用下面的限制行(并阅读上面关于使用防火墙阻止访问您的 NTP 服务器的说明)。因此,再次将 ntp[d].conf 的
server
和restrict
行替换为以下内容,并将其余部分保留为您的发行版默认值 [3]:笔记
[1]从 2006 年到 2012 年,他们不断要求更多服务器加入:2006 年的请求、2009年的请求和2012年的请求。查看www.pool.ntp.org了解当前状态的更新。
[2]仅建议将两个主 NTP 服务器作为一种简单的方式来获得冗余,而无需复杂的高可用性安排。您可能出于其他原因选择 3 或 4(再次阅读IETF 最佳实践)
[3]实际上,无论您的发行版如何,您需要在 ntpd 配置中包含的唯一其他内容是定义一个目录以放置漂移文件及其名称的行 - 例如
driftfile /var/lib/ntp/ntp.drift
. 我已经在 CentOS、Debian 和 Ubuntu 中测试了我的解决方案。我猜它适用于大多数其他发行版。[4]我按照最佳实践配置了 4 个池服务器。配置超过 4 台服务器在技术上是可以接受的,但是您会增加 NTP 池的负载以获得有问题的可用性增益,所以不要这样做。在最佳实践中,我看到“从 ntp-4.2.6 开始,'pool' 指令将启动“足够”的关联以提供强大的时间服务”,所以如果您使用 .pool。像我在这里做的地址和 ntp >=4.2.6 服务器行的确切数量可能无关紧要。
咆哮哦!我讨厌 NTP(除了我喜欢它的工作原理)。官方文档充满了过时的信息,他们有“我如何使用它?” 信息与有关内部的科学细节混合在一起。我也讨厌
restrict 127.0.0.1
真正的意思allow everything for 127.0.0.1
更新历史
我已经
iburst
从本地 NTP 服务器的配置中删除了该选项,因为它们对池的友好性值得商榷。(看评论)。删除它们只会为第一次同步增加几分钟的等待时间。学分
SF 用户 Marki 和 Sven 的评论和回答为这个答案提供了一个很好的起点。感谢他们俩。还要感谢 SF 用户 BACON 多年后纠正了一个严重错误(ndemou 定律:“给予足够的眼球和无限的时间,所有错误都是浅薄的”)
通常的方法是使用分层设置 - 您将网络中的一或两台服务器与池同步,然后将它们用作本地时间源。这个级别在 NTP 术语中称为分层。
另外,请考虑一下:如果您像您描述的那样执行此操作,它不会真正引人注目,但是如果您的大小为 1000 个站点,那么您最终会收到 20k 个大多数不必要的请求,并且在某些时候,它会变得很明显。
阅读http://en.wikipedia.org/wiki/Network_Time_Protocol