几个服务器的正确NTP配置


9

在一个小型网络中,我有大约20台Linux服务器,我需要它们的时钟彼此接近(例如20毫秒以内)。我已经开始将每个人都同步到europe.pool.ntp.org并完成了工作。

现在我有两个问题:

  1. 我是游泳池的明显负担吗?即,如果我从20台服务器或2台服务器访问,它对池有什么明显的影响
  2. 如果确实有所不同,什么设置/配置可以使我的子网保持同步,并且池在轻负载下保持同步?对于大型网络,有一些指导原则(http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101),但对于小型网络却没有。

1
通常,您应该具有一台或两台内部时间服务器,您可以将它们与内部网络同步。您的两个内部服务器可以有peer关系。例如见ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
马吉

感谢您的评论并链接Marki。关于链接,它指出这是针对“庞大的网络”的,这当然不是我的情况。关于您的建议:我认为一个内部时间服务器不是一个好主意(单点故障),但是2个看起来不错。您能否解释一下同伴关系(或提供链接)?
ndemou 2014年

还应注意,我绝对不是NTP专家-距离它很远:-)
ndemou 2014年

如果您在Google上了解一下同伴是什么,那不会有任何伤害。请注意,当人们根本不进行任何研究时,此网站就不会提供任何服务。
Marki 2014年

别误会,我做了我的作业,但是NTP是其中大多数文档太容易吞咽(这是ntp.conf-仅使用它)或太深(50页的操作理论以便在阅读之前阅读)的主题之一可以开始掌握基本事实)。
ndemou 2014年

Answers:


8
  1. 我是游泳池的明显负担吗?即,如果我从20台服务器或2台服务器访问,它对池有什么明显的影响?

考虑到池多年来一直需要服务器(请参阅[1]),我想说,尽管2或20台服务器并没有真正起作用,但您应该始终记住自己并不孤单。因此,您最好考虑说1000位管理员,在这种情况下,我们要使用2000或20000台服务器,这确实有所作为。

  1. 如果确实有所不同,什么设置/配置可以使我的子网保持同步,并且池在轻负载下保持同步?

您必须将网络中的两台[2]服务器与该池同步(我们称它们为“ 主NTP服务器”),然后将所有其他服务器同步到这两台服务器。此方法还具有优势,所有服务器之间的时间将更紧密地匹配(不到1毫秒)。这符合IETF的最佳做法

1)主NTP服务器的配置

将ntp [d] .conf 的serverrestrict行替换为以下内容,并将其余部分保留为默认的发行版[3]:

server 10.11.12.1  iburst peer
#      ^^^^^^^^^^^
#      The LAN IP of the _other_ Primary NTP server 
server 0.europe.pool.ntp.org 
server 1.europe.pool.ntp.org 
server 2.europe.pool.ntp.org 
server 3.europe.pool.ntp.org 
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

请注意,此配置还允许来自Internet的主机通过NTP查询来查询您的主机时间。如果您不想使用防火墙。在我的示例中,10.11.12.1和10.11.12.2是主NTP服务器的IP(它们有两个网卡,一个面向公共Internet,一个面向本地10.11.12.x子网)。每个主NTP服务器都有另一个被声明为对等方(对等体基本上意味着服务器和客户端-您将另一台主机用作时间源,另一台主机也将您用作时间源)。因此,请在第一行上调整IP,以便每个主NTP服务器的配置都指向另一个作为对等方。有关选择使用4台服务器的信息,请参见[4]。

2)所有其他服务器的配置

2A)如果您有两个网络接口

您最好使用第二个接口来创建本地子网(例如10.11.12.0/24),并将其用于NTP查询。在这种情况下,限制线可能会更紧。因此,再次将ntp [d] .conf 的serverrestrict行替换为以下内容,并将其余部分保留为默认的发行版[3]:

restrict -4 default ignore
restrict -6 default ignore
restrict 10.0.0.0 mask 255.0.0.0 kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

2B)如果您没有两个网络接口

您应该使用下面的限制行(并阅读上面有关使用防火墙阻止对NTP服务器的访问的注意事项)。因此,再次将ntp [d] .conf 的serverrestrict行替换为以下内容,并将其余部分保留为默认的发行版[3]:

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

笔记

[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可以确定服务器行的确切数量可能无关紧要。

ant哦!我讨厌NTP(除了我喜欢它可以工作)。官方文档中充斥着过时的信息,并且具有“我该如何使用它”?信息以及有关内部原理的科学细节。我也讨厌restrict 127.0.0.1真正的意思allow everything for 127.0.0.1


更新历史

我已经iburst从本地NTP服务器的配置中删除了该选项,因为它们对池的友好性值得商bat。(看评论)。删除它们只会为第一次同步增加几分钟的等待时间。


学分

SF用户Marki和Sven的评论和答案为该答案提供了一个很好的起点。多亏了他们两个。


1
向我+1。我运行了一个池服务器,我不能过分强调这篇文章的正确性,除了那iburst是在公共服务器上使用的令人讨厌的参数之外,所以请不要这样做(尽管这并不像令人讨厌的那样burst)。池服务器管理员在不知道自己是谁的情况下帮了您一个忙,并且对自己没有任何补偿,纯粹是为了更好地运行Internet。 如果您通过更加努力地工作可以使他们的生活更轻松,那么您就应该这样做。
MadHatter

谢谢MadHatter。关于iburst,我认为对于典型的“始终在线”服务器来说还可以。您是否有任何链接来支持您不使用此选项的建议?(我已经检查了www.pool.ntp.org/en/use.html并在Google上搜索了10分钟,但没有发现任何确凿的结论)
ndemou

我会很乐意分享我的流量统计信息;一个快速的样本表明,配置错误的主机(即,每分钟发送一次频率更高的主机)约占我的客户端的45%,但负责约75%的流量。这主要来自使用的服务器burst,但甚至iburst说(来自ntpd手册页)“ 使用此选项,将交换大量消息以整理数据并将时钟设置为大约10s ”。使用iburst说“ 快速设置时钟比保持服务器负载低更为重要 ”,这是不礼貌的。
MadHatter

您对“消息量”是正确的,但据我所知,此突发仅在NTP守护程序启动期间发生,并且(可能)在池服务器暂时无法访问(我是从最初开始)期间发生。这是Arch Wiki NTPd页面上的摘要:“建议使用iburst选项,并且仅当它无法通过第一次尝试获得连接时才发送突发数据包。即使在第一次尝试时,burst选项也总是这样做。未经明确许可,切勿使用,否则可能导致黑名单”。
ndemou'2

没错,那iburst比反对要小得多burst。我的观点是,当您免费使用他人的资源时,有一个论点是您应该向后弯下腰来体贴他人。仅仅不积极考虑,可能就不足够了。我同意这是最佳做法,但是这些文档没有考虑与您同步的上游服务器是否属于企业;它们决定了技术最佳实践(我同意,将使用iburst)而不是社会最佳实践。
MadHatter

6

通常的方法是使用分层设置-将网络中的一台或两台服务器与池同步,然后将它们用作本地时间源。此级别在NTP术语中称为“ 层”

另外,请考虑一下:如果按照您的描述进行操作,这将不会真正引起注意,但是,如果您的规模达到1000个站点,您最终将收到20k个大多数不必要的请求,并且在某些时候,它会变得明显。

阅读http://en.wikipedia.org/wiki/Network_Time_Protocol


但是,请考虑另一种观点-在数百万个现有客户之上再增加20个客户几乎算不上什么。
200_success 2014年

2
就像他说的那样,如果每个人都开始这样想……
Marki 2014年

但是什么时候停下来?考虑一下所有预配置为使用的Linksys级设备pool.ntp.org。当然,DNS流量超过NTP流量。您还必须在本地缓存DNS吗?与其余带宽消耗相比,甚至DNS流量也可能微不足道。
200_success 2014年

@ 200_success:这不值得争论,但是大多数这种“ Linksys类”设备的确确实在本地缓存DNS流量,并且它们查询自己的ISP DNS,它也缓存...
Sven

1
如果Linksys提供同步的设备ntp.pool.org违反池条款 ; 如果他们通过申请供应商区域(参见链接)正确地做到了这一点,那么他们也将按其负荷成比例地对游泳池项目做出贡献(再次参见链接)。
MadHatter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.