
在接着往下阅读时,你可以先想想自己的答案。
没理解题目的回答:
还算正常的回答:
电子工程师的回答:
网络工程师的回答:
……
你可能有更精彩的回答……
本实验室将采用可 *** 作的、尽可能精确的实验作为回答。
题目并没有说两台电脑是和时间服务器同步的,所以目的只是测量两台电脑之间的系统时间是否一致。
用date命令(高精度选项)直接看一下两台主机的系统时间。本地的;远程的;本地的;远程的:
显然,host2的时间读数更大一些。但这究竟是host2的时钟快了,还是ssh调用所花的时间导致的呢?现在还不好说。
假设这个时间差异是T1:
T1 = Diff + RTT12
其中,Diff 是两台电脑真实的时间差异,RTT12是host1到host2数据往返所花的时间(严格来说是ssh调用所花的时间)。
反方向做同样的测试:
host1与host2的时间差异设为T2,则:
T2 = -Diff + RTT21
简单地认为两个方向的往返时间是相等的,于是有:
Diff = (T1 – T2)/2
RTT = (T1 + T2)/2
估算一下:
上面的单位都是ns 也就是说时间差异是163~171ms, ssh路途往返耗费728ms
这个结果可信吗?于是写了一段脚本,把这个测试过程自动化,观察一段时间的结果。
下图是每秒测量一次,1个小时的测量数据。为了在对数坐标下显示,时间差异用绝对值。
说明:
在没有时间同步的情况下,观察2组/3台主机:A, B, S的时间差异。
A, B, S实际上是在ESXi上的3台虚拟机。虚拟机的时钟可能和硬件实钟会有某种同步策略,所以看到的并不是单方向的变化。
在A,B,S上都开启NTP服务,时间服务器使用Debian Linux默认的NTP server (xdebianpoolntporg)。
因为幅度悬殊的原因,实际上使用中位数更有意义。可以看到A-S或B-S的时钟差异在30~50ms
在A,B,S上都开启NTP服务,其中A,B与本地的S同步,但S还是与远程NTP server同步。
可以看到A-S或B-S的时钟差异在3ms左右,一致性比远程NTP同步高了一个数量级。
在A,B,S上都开启NTP服务,其中A,B与S同步,但S直接使用本地时钟,配置为:
server 12712710 prefer
结果有点出乎意料,时间不一致接近60ms。
由于通常的 *** 作系统是非实时 *** 作系统,同样的指令占用的执行时间并不是固定的。做一个简单的实验,看看这个因素对测量会有多大影响。
下图给出了在两台机器上,读取系统时间(gettimeofday)这一调用所花的时间(各运行500000次)
可以看出9997%的执行都在1us及以下。这说明分时执行对统计结果的影响很小。
当然,整个ssh调用耗时的波动范围更大一些(RTT的统计值上可以反映出来)。
用ssh调用读取另一台机器上的系统时间,和本地时间比较,并利用双向ssh调用抵消调用所花的时间,从而可以较准确计算出两台主机上的系统时间差。
虽然在分时 *** 作系统上不能保证执行时间的固定,但通过统计可以逼近结果。由于ssh调用所花的时间在06ms以下,所以测量的精度至少是1ms级的。
另外,如果用非加密的web调用,或者自己实现远程调用,应该会有更高的效率,可能会对测量精度略有提高。
利用这一测量,可以观察NTP的同步效果。如果和远程NTP服务器同步,时钟的一致性实测在50ms以内;如果和本地NTP服务器同步,时钟的一致性在3ms左右;但如果本地NTP服务器使用本地时钟,一致性会下降很多(60ms左右)。
由于硬件/虚拟机时钟的波动、网络的波动、NTP的精度,都导致这种一致性总是处于波动之中。总体上,在局域网内,使用NTP同步,能达到毫秒级的一致性就不错了。是为网络设备提供精确、标准、安全、可靠和多功能的时间服务的最佳解决方案,能提供精确的同步时钟信号,支持标准的NTP和SNTP网络对时协议,可提供NTP网络对时、串口授时、1PPS脉冲信号输出等功能。采用泰福特电子自主知识产权的卫星授时、网络同步、频率测控等技术,该产品体积小,系统整体功耗小,采用无风扇设计,运行可靠稳定,可以为计算机网络、计算机应用系统、流程控制管理系统、电子商务系统、网上B2B系统以及数据库的保存及维护等系统需要提供精密的标准时间信号和时间戳服务,已经被成功应用于政府金融、移动通信、公安、石油、电力、交通、工业以及国防等领域。
1)首先确认虚拟化底层的时间是否准确,因为所有虚拟机会自动同步虚拟主机的时间。
2)在所有AD服务器上开启时间同步功能
一、找到适合的NTP服务器
首先需要找一个适合自己网络环境的NTP服务器,因为不同的网络会有不同的NTP服务器起作用,检测NTP服务器的方法为在AD上运行 w32tm /stripchart /computer:NTP服务器域名或IP ,如 w32tm /stripchart /computer:182921211 ,若是可以使用会显示如下图
找到适合自己网络的可用NTP服务器后,假设找到182921211为可用NTP服务器,在AD服务器上开启时间同步,运行如下命令
三、设置主域控制器与国家授时中心服务器时间同步,同步周期为1天。
1、 添加时间服务器
在右边窗口点右键新建“字符串值”,将此“字符串值”命名为0。双击此新建的“字符串值”,输入: 182921211 ,保存。将“默认”(即第一个“字符串值”)修改为0即可,删除其他所有的值只保留如图所示的值
2、 指定时间源
修改键NtpServer的值为 182921211
3、 设置校时周期
修改键SpecialPollInterval的值为十进制的604800(即为604800秒,1天)
四、设置权威服务器
1、 设置权威服务器
在域控服务器上打开注册表,找到键值
修改键AnnounceFlags的值为十进制的10。
2、 启用 NTPServer
修改键Enabled的值为十进制的1
五、配置组策略,设置时间同步
1、 打开组策略管理
2、 在“Default Domain Policy”上右键,编辑。
3、 计算机配置—管理模板—系统—Windows时间服务,双击“全局配置设置”,选择“已启用”。
修改MaxNegPhaseCorrection的值为3600(即为3600秒,1小时)
修改MaxPosPhaseCorrection的值为3600(即为3600秒,1小时)
修改AnnounceFlags的值为5
点“应用”,“确定”。
4、 计算机配置—管理模板—系统—Windows时间服务—时间提供程序,“启用Windows NTP客户端”,选择“已启用”。
“配置Windows NTP客户端”,选择“已启用”。
修改NtpSever的值为 1829211
修改Type的值为NTP
修改SpecialPollInterval的值为1800(30分钟)
5、cmd命令在域控和客户端完成检测
域控上运行下面三条命令检测,返回成功执行了命令即为成功。若是返回此计算机没有重新同步,因为没有可用的时间数据。请排查上述文档中一步时间服务器是否可用,和五-4步服务器是否正确,看w32tm /query /source命令返回的结果是否正确。
域内的客户端想要同主域时间同步,执行下面的命令,返回成功执行了命令即为成功
注意时间若想成功同步,时间不能跟标准时间差别太大,在范围内的才能成功同步。
1、系统时间比标准时间系统时间晚14小时59分钟之内
2、系统时间比标准时间早30分钟之内
3)对于有些客户端Windows Times服务会自动停止,可以尝试重新注册一下此服务项
1首先,运行如下命令删除时间服务:
2然后,再运行如下命令加载默认时间配置服务:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)