我们在 Litespeed 网络集群中同步时间时遇到了问题,即系统时间(我们使用的是 CentOS)似乎认为 EST(“美国/纽约”)时区的当前时间比当前时间早 3 小时。
佛罗里达州的当前时间为晚上 10:53,服务器报告:将使用 TZ='America/New_York'。当地时间现在是:2013 年 6 月 4 日星期二 01:51:43 EDT。世界标准时间现在是:2013 年 6 月 4 日星期二 05:51:43 UTC。
什么原因会导致这样的情况? 同样的情况也发生在我们集群的 PHP.ini 配置中。
这是来自配置完全相同的完好网络服务器的响应:将使用 TZ='America/New_York'。当地时间现在是:2013 年 6 月 3 日星期一 22:53:15 EDT。
--更新 1-- 工作服务器上的 ntp 对等体:
krillin.ecansol 184.164.149.162 2 u 52 64 1 35.631 110337. 7937.50
ntp.sunflower.c 184.164.149.162 16 u - 64 0 0.000 0.000 15937.5
triangle.kansas 184.164.149.162 2 u 50 64 1 55.125 110331. 7937.50
损坏的服务器上的 ntp 对等体:
fairy.mattnordh 164.244.221.197 2 u 59 64 7 49.397 -108052 1.171
ec2-50-16-231-1 209.51.161.238 2 u 60 64 7 59.565 -108052 0.016
colossus915.ser 200.23.51.102 2 u 59 64 7 46.693 -108052 0.051
答案1
除非你专门配置了操作系统,否则服务器的系统时钟必须反映 UTC,而不是本地时区。时区偏移量是事后应用的,因为单个服务器上可以同时使用多个时区。您的时区文件会告诉服务器在假设系统时钟设置为 UTC 的情况下返回什么时间。
如果系统时钟与目标时钟相差太大,NTPd 将拒绝同步。您必须手动将其设置为与目标时间 (UTC) 相差一分钟左右的时间;或者使用它ntpdate
从 NTP 服务器获取时间并立即设置相应的时钟。然后您可以运行 ntpd 来微调您的时钟以获得所需的毫秒精度。
预热一段时间后,应该会在左侧ntpq -pn
显示一个标有 的远程服务器,以表明该服务器已被声明为主要同步对等体,而其他服务器则有望标有,以表明它们是合格的对等备份候选者。*
+
如果不是,则您的时钟未同步。
请注意,在对等点列表中,在正常运行条件下偏移量应小于 1ms [绝对值],在时钟微调后可能为几百毫秒。您的列表显示偏移量远远超出范围,因此无法使用时钟摆动进行同步。相反,您需要将时钟“跳转”到正确的时间,而 ntpd 按照策略永远不会自行执行此操作。这就是该ntpdate
工具的用途。
答案2
您是否ntpd
使用该-g
选项运行?应在 中指定/etc/sysconfig/ntpd
。如果没有-g
,则ntpd
如果时钟偏差超过 1000 秒,将拒绝设置时钟。