运行公共 NTP 服务器时需要考虑的事项

运行公共 NTP 服务器时需要考虑的事项

因此,我最近突然意识到,既然我的网络中有 3 个 GPS 时钟,那么从技术上讲,我可以回馈一点时间,为世界其他地方提供时间。到目前为止,我还没有发现这个想法有什么缺点,但我有以下问题:

  1. 我可以虚拟化吗?我不会为此花费金钱和时间来建立硬件,因此虚拟化是必须的。由于服务器将可以访问三个 1 级源,因此,如果 ntpd 配置正确,我看不出这会有什么问题

  2. 公共 NTP 服务器(pool.ntp.org 的一部分)通常会看到什么样的流量?为此我需要多大的虚拟机?据我所知,ntpd 不应该占用太多资源,但我宁愿事先知道。

  3. 这有什么安全方面?我正在考虑在 DMZ 中的两个虚拟机上安装 ntpd,只允许 ntp 通过 FW 进入,并且只允许从 DMZ 到内部 ntp 服务器的 ntp 出站。根据 NTP 池页面,似乎还有一些推荐的 ntp 设置,但它们足够吗?https://www.ntppool.org/join/configuration.html

  4. 他们建议不要配置本地时钟驱动程序,这是否相当于从配置文件中删除本地时间源配置?

  5. 还有什么需要考虑的吗?

答案1

首先,这对您有好处;这是一件有益且有公益精神的事情。话虽如此,鉴于您澄清说您计划创建一个或多个 DMZ VM,这些 VM 将同步并公开提供您三个支持 Meinberg GPS 的 stratum-1(内部)服务器的时间:

  1. 编辑: 虚拟化成为讨论的焦点池列表不时地;最近一次是在 2015 年 7 月,可以从这封电子邮件。请问项目负责人 Bjørn Hansen 是否发布到主题,并没有反对虚拟化。显然,目前有许多池服务器运营商正在虚拟化,所以我认为没有人会因此而攻击你,正如一位发帖者所说,如果你的服务器不可靠,池监控系统会直接将它们从池中移除。KVM 似乎是首选的虚拟化技术;我没有发现任何人专门使用 VMWare,因此无法评论这种虚拟化有多“诚实”。 也许是关于这个主题的最佳总结

    我的池服务器是在我自己的 KVM 主机上使用 KVM 虚拟化的。监控显示,该服务器非常准确,并且在过去 2-3 年内提供了稳定的时间。但我不会在从其他提供商租用的虚拟服务器上设置池服务器。

  2. 这是过去一年中,我在池服务器(位于英国、欧洲和全球区域)上看到的每秒平均不同客户端数量:

    ntp 客户端数量

    这几乎不会造成可察觉的系统负载(ntpd大多数情况下似乎只使用 1% 到 2% 的 CPU)。请注意,在一年中的某个时间点,负载短暂达到峰值,接近每秒一千个客户端(最大值:849.27);我确实监控了过载情况,但警报并未全部响起,因此我只能指出,即使是这种级别的负载也不会造成问题,尽管时间很短。

  3. 项目推荐的配置是最佳实践,对我来说很有效。我还使用iptables速率限制客户端在滚动十秒窗口中只能接收两个入站数据包(这是惊人的有多少粗鲁的客户,他们认为他们应该可以自由爆发,以便快速设置自己的时钟)。

  4. 或者删除任何引用以 开头的服务器地址的行127.127

  5. 最佳实践指南还建议使用三个以上的时钟,因此除了三个 stratum-1 服务器之外,您可能还需要选择几个其他公共服务器或特定的池服务器。

    我还要注意,如果您打算将这两个虚拟机都放在同一个主机硬件上,那么您可能只应该运行一个,但将声明给池的带宽加倍(即,接受两倍于其他情况的查询)。

答案2

首先,恭喜你提出了一个非敷衍的 NTP 问题。:-) 我在这篇文章的底部附上了一些图表,让你可以直观感受一下。所讨论的 VM 在池控制面板中设置为 100 Mbps,并且位于英国、欧洲和全球池中。

  1. 我认为 MadHatter 很好地涵盖了这一点 - 虚拟化应该没问题。就像你说的,如果它们从你的 GPS 连接的 1 层馈送,它们应该相当稳定。根据我的经验,虚拟机在频率方面往往比裸机更不稳定(见下图),但这是你所期望的 - 它们正在处理时钟模拟层(希望非常高效)和可能嘈杂的邻居。如果你不想看到这种不稳定,也许可以使用较旧的服务器或未使用的桌面作为你的 DMZ 2 层。

  2. 该虚拟机有 1 个核心、2 GB RAM,运行 Ubuntu 16.04 LTS,在 OpenStack(KVM 虚拟机管理程序)中虚拟化。如您所见,RAM 有点多。

  3. 推荐的设置(包括不配置本地驱动程序)是 Ubuntu 16.04 中的默认设置。除了对等列表之外,我的运行配置非常接近原始配置。

  4. (往上看)

  5. 我可能会先将带宽调低,然后在您监控一段时间后再增加带宽。如果您的虚拟机彼此之间距离很近,并且网络延迟接近 1 层,我可能会让所有虚拟机与所有 1 层通信,并可能将它们相互对等,同时打开孤立模式。

以下是图表 - 它们都涵盖了大约 3 周的同一时间段,除了网络图表,由于备份,网络图表出现了几次峰值。当网络出现峰值时,我甚至看不到正常的 NTP 流量,因此我稍微放大了一些以显示通常的背景。

中央处理器中央处理器 记忆记忆 网络网络 频率频率 系统偏移系统偏移

答案3

使用 NTP 时需要考虑的一些事项

这里已经有一些很好的答案了。我只是根据自己的经验,为了完整性添加了一些想法。

如果担心这个问题,我建议在裸机与虚拟机上启用 NTP 日志记录和图形时钟偏差和更正,因为这与该讨论有关。我不认为这可以轻易概括,因为硬件和配置在不同的实现之间有所不同。最好自己获取这个数字。

我一直建议大家选择具有相当恒定的 CPU 时间且不是无滴答内核或启用了省电模式的服务器或网络设备的系统角色。尤其要避免在 NTP 服务器上使用守护进程线 cpuspeed 或速度调节器或高级省电功能,即使它们在您的服务器群中只是第 2 层。通过永远不要超过 C 状态 1,可以获得一定的稳定性,但您的功耗会增加。

我还尝试确保人们选择距离网络边缘不到 40 毫秒的少数 1 层服务器,然后将它们划分到边缘 NTP 服务器上,并确保没有 2 个服务器位于同一个 SNAT 后面网络中的服务器正在与同一层 1 服务器通信。与 类似burst,在同一 SNAT 后面使用相同上游服务器的多个服务器是不明智的,因为即使您没有启用突发,它们也会认为您已启用。

您应该始终尊重kod来自上游服务器的数据包,并使用监控工具检查上游服务器的时间偏移和可达性。

可能想要考虑在几个数据中心拥有自己的精确时间源,以便在军方启用 GPS SA(这种情况不太可能发生)的情况下进行对等或依靠。有专门用于此的经济高效的设备。即使您处于“笼子”环境中并且没有自己的数据中心,一些托管设施也可以容纳这一点。

答案4

这是来自 VMware 的一个很好的知识库,其中包含不同 Linux 发行版的实际配置参数

https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427

相关内容