我在设置 NTP 以在独立网络上保持时间时遇到了问题。这将是一个孤岛时区。问题是,即使最初已同步,时间也会漂移。
有两个运行 RHEL 5.4 的冗余 NTP 服务器和多个 Windows XP 客户端。要求是网络同步到服务器 A,而服务器 B 充当备份。我们确实有一个 GPS,它充当控制服务器 A 和服务器 B 的时间服务器,但它并不总是可用的。当 GPS 存在时,两个服务器都会同步到 GPS。
一旦服务器分开,XP 客户端似乎就会分成两组;一组跟随服务器 A,另一组跟随服务器 B。
我怎样才能防止我的两台服务器渐行渐远?
我可以控制 XP 客户端跟随哪个服务器吗?
两个ntp.conf文件如下
服务器 A 的 ntp.conf ( 10.203.224.13
)
# Tweek NTP's behavior
tinker panic 0 step 0.01 stepout 64
# GPS
server 10.203.220.12 burst iburst minpoll 4 maxpoll 6
# Server A
server 10.203.224.13 burst iburst minpoll 4 maxpoll 6
# Server B
server 10.203.224.14 burst iburst minpoll 4 maxpoll 6
# Configure the local clock to serve from
server 127.127.1.1
fudge 127.127.1.1 stratum 11
# Establish the drift file location
driftfile /etc/ntp.drift
服务器 B 的 ntp.conf ( 10.203.224.14
)
# Tweek NTP's behavior
tinker panic 0 step 0.01 stepout 64
# GPS
server 10.203.220.12 burst iburst minpoll 4 maxpoll 6
# Server A
server 10.203.224.13 burst iburst minpoll 4 maxpoll 6
# Server B
server 10.203.224.14 burst iburst minpoll 4 maxpoll 6
# Configure the local clock to serve from
server 127.127.1.1
fudge 127.127.1.1 stratum 13
# Establish the drift file location
driftfile /etc/ntp.drift
在服务器 A 上
[root@serverA]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.203.220.12 .INIT. 16 u - 64 0 0.000 0.000 0.000
10.203.224.13 .INIT. 16 u - 64 0 0.000 0.000 0.000
10.203.224.14 LOCAL(1) 14 u 27 64 377 0.312 359.753 0.289
*LOCAL(1) .LOCL. 11 l 55 64 377 0.000 0.000 0.001
在服务器 B 上
[root@serverB]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.203.220.12 .INIT. 16 u - 64 0 0.000 0.000 0.000
10.203.224.13 LOCAL(1) 12 u 55 64 377 0.346 -359.56 0.107
10.203.224.14 .INIT. 16 u - 64 0 0.000 0.000 0.000
*LOCAL(1) .LOCL. 13 l 54 64 377 0.000 0.000 0.001
答案1
在服务器 A 上,删除指向其自身和服务器 B 的线路,只留下“fudge”本地时钟线路和 GPS。在服务器 B 上,删除“fudge”线路和服务器 B 线路,只留下服务器 A 线路和 GPS。
这个想法是,如果 GPS 可用,服务器 A 应该使用它,否则它应该信任自己的时钟。无论服务器 A 如何获取时间,服务器 B 都应该使用服务器 A,或者使用 GPS。如果允许服务器 B 信任自己,它将向其客户端通告一个可靠的时间源,即使该时间与服务器 A 的时间不同 - 这就是您所看到的。
答案2
这里存在一些问题:
- GPS 设备无法正常工作。这很可能是连接问题。要么是防火墙阻止了数据包,要么是防火墙没有监听正确的接口,要么是防火墙无法接收 GPS 信号,或者类似情况。可能是您提到的间歇性不可用。如果是这样,请尝试显示它
ntpq -p
何时正常工作。 - GPS 是层 16。当它工作时,它应该是 1。任何高于 11 的值都会导致与您遇到的相同问题,因为服务器 A 比 11 或更高级别的任何值更信任它的本地时钟。
- 服务器 A 配置为从服务器 B 获取时间,服务器 B 配置为从服务器 A 获取时间。这种设置应该是对等关系,而不是循环主/从关系。为此使用
peer
关键字,而不是关键字。server
- 服务器 A 和服务器 B 都设置为通过 ntp 协议使用自身作为时间源。这是多余的,并且不起作用。连接失败或当前层数为 16,无法再提高。
- 两台服务器都选择了自己的时钟作为最可靠的时间源(由源旁边的 * 表示)
LOCAL
。它们也都设法相互连接。我不确定为什么服务器 B 没有选择服务器 A 作为最佳时间源,因为它具有最低的层值,但可能是因为它的抖动明显高于时间LOCAL
源。
让 GPS 工作起来,将两台服务器改为相互对等,并删除从其自己的 IP 地址获取时间的线路。(本地时钟很好,但为本地时钟添加网络协议的延迟是愚蠢的。)