![NTP 服务器架构](https://linux22.com/image/709668/NTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9E%B6%E6%9E%84.png)
我有一个运行多个 Linux 机器的虚拟环境,我正在计划如何管理所有的 ntp 架构。
据我所知,在“ntp.conf”文件中有两个服务器是没有用的,客户端指向的 ntp 服务器应该只有一个或三个以上,因此,我的第一种方法是让一个服务器“server1”指向 4 个公共服务器,特别是 RHEL 服务器,然后让另一个服务器“server2”指向 server1,下面所有其他 Linux 服务器都指向 server2。
但是我观察到这种架构的怪异行为。我看到一些服务器与 server2 不同步,有时 server1 和 server2 甚至不能完美同步。
我的第一个疑问是,为什么会发生这种情况?
然后我想出了另一种架构,让相同的 server1 指向公共 ntp 服务器,然后让三台服务器“server2”、“server3”和“server4”指向 server1,下面所有其他机器指向 servers2-4。
这种架构有可能会改善我整个网络内的同步吗?
或者同步之间的性能是否相同?架构此的最佳方式是什么?
已编辑
ntpq -p
以下是来自 server1的输出:
remote refid st t when poll reach delay offset jitter
=========================================================================
*Time100.Stupi. .PPS. 1 u 317 1024 377 182.786 5.327 3.022
LOCAL(0) .LOCL. 10 l 46h 64 0 0.000 0.000 0.000
下面是ntp.conf
:
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.rhel.pool.ntp.org iburst
server 1.rhel.pool.ntp.org iburst
server 2.rhel.pool.ntp.org iburst
server 3.rhel.pool.ntp.org iburst
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
statistics clockstats cryptostats loopstats peerstats sysstats rawstats
### Added by IPA Installer ###
server 127.127.1.0
fudge 127.127.1.0 stratum 10
以下是三个客户端的输出:
remote refid st t when poll reach delay offset jitter
==============================================================================
*server1 172.16.29.21 3 u 1 64 1 1.090 -0.138 0.036
remote refid st t when poll reach delay offset jitter
==============================================================================
*server1 172.16.29.21 3 u 1035 1024 377 1.117 -1.943 0.530
remote refid st t when poll reach delay offset jitter
==============================================================================
*server1 172.16.29.21 3 u 32 64 1 0.902 1.788 0.140
答案1
根据您环境中计时的重要性,您可能不希望服务器 1 成为单点故障。如果您必须长时间将其离线进行维护或维修,其对等节点将停止同步。从此一切都走下坡路了。
为什么不让 server1、server2、server3、server4 都同步到 4 或 5 个 Internet 对等点。然后,您的内部网络可以引用这些系统?
传统观点认为,3 个机器即可达到法定人数,但必须容忍至少一个机器被判定为假机器或离线。
请参见;5.3.3. 上游时间服务器数量
ntpq -p
此外,您提到了当前配置的怪异之处和问题。查看相关主机的输出会有所帮助。
答案2
虽然 2 台服务器并不完全没有用,但NTP 最佳当前实践 RFC(8633)建议至少为 4。NTP 的交集算法不仅仅依赖于网络中的仲裁数字服务器,而且在质量他们回来的时间——你无法预测。所以越多越好。 拥有最多 10 个上游 NTP 服务器没有问题。
正如 Aaron 所说,您提议的服务器 1-4 应全部指向上游 NTP 服务器,并且您的内部系统应指向所有 4 个服务器。服务器 1-4 也可以相互对等(以对称模式),但这并不是严格要求的。
重要的是要理解为什么你不应该在你的架构中的任何一点将 NTP 集中到单个服务器:NTP 需要多个服务器准确性,而不仅仅是冗余(有关详细信息,请参阅 NTP 文档算法描述,这解释了原因)。(无耻的宣传:我对此有更多文章别处, 包括建筑建议。