Chrony 作为虚拟机上的 NTP 服务器的“最不坏”设置

JK *_*iho 3 virtual-machines ntp chrony

我的任务是重建一个 LAN 服务器,该服务器充当数百台客户端计算机的 NTP 服务器。不幸的是,它是在虚拟机上,正如诸如在虚拟机中运行 NTP 服务器的限制是什么?这远非理想。

然而,在当前情况下,这就是我必须处理的问题,直到依赖该服务器的数百台机器在未来的某个地方被重新配置为更强大的 NTP 设置。

幸运的是,客户端不依赖毫秒精度。我一直计划在新服务器上运行 Chrony,并将其配置为使用四个本地 2 层服务器。

我是 NTP 服务的新手,也是 Chrony 的新手。您认为哪些服务器端设置对于这种情况至关重要?首先,考虑到在虚拟机上运行 NTP 服务器的基本限制,我们的目标是最大限度地减少不准确性。

Pau*_*ear 6

您链接到的问题是一个很好的例子,说明既定答案变得如此过时,以至于对于大多数用例来说都是完全错误的。在具有现代来宾内核的现代虚拟机管理程序上的虚拟机中运行 NTP 服务器通常不会出现问题。在 LAN 上,虚拟机可以达到亚毫秒级的精度(我刚刚检查了我自己的一些虚拟机,它们都在 0.5 毫秒以下)。许多公共池服务器在虚拟机中运行

对于你的问题:

  1. 验证您的内核是否已正确自动检测时钟源:grep . /sys/devices/system/clocksource/clocksource*/[ac]*clocksource。这通常tsc适用于裸机,Hyper-V、KVM 和 Xen 具有以其虚拟机管理程序命名的时钟驱动程序(hyperv_clocksource_tsc_pagekvm-clockxen)。
  2. 如果您在 KVM 或 Hyper-V 下运行,则可以配置本地 PTP 驱动程序以提供更高的准确性。有关更多详细信息,请参阅https://docs.microsoft.com/en-us/azure/virtual-machines/linux/time-synchttps://opensource.com/article/17/6/timekeeping-linux-vms (后者值得一读,解释了所有最近的改进,这些改进使虚拟机的计时比以前好得多)。TL;DR 慢性配置:refclock PHC /dev/ptp0 dpoll -2
  3. 要准确计时,至少需要四个对等点 - 最好添加公共 NTP 池或一些其他基于互联网的源(time.apple.com 是我经常使用的来源),并从更多对等点和自动替换中受益。
  4. 不要将新虚拟机作为网络中唯一的时间服务器。设置您自己的本地等效池,在其中通过多值 DNS 条目为所有客户端提供多个 NTP 服务器,并使每个源与 4-10 个较低层源对等。
  5. 如果您拥有广阔的天空(对于 GPS 接收器)或无尽的金钱(对于原子钟),请考虑添加一台本地 stratum 1 服务器,该服务器对您的虚拟机具有低延迟。我使用带有 GPS 卡的 BeagleBone;还有许多基于 Raspberry Pi 的解决方案,以及一些经济实惠的现成设备,例如LeoNTP