在一个稍微成规模的网络环境里,时间不统一带来的问题经常让人头疼。你去看服务器日志,这台机器显示故障发生在10:00:01,那台机器显示10:00:15,前后差了十几秒,根本判断不了是谁先出了问题。再比如,数据库的主从复制,主库的时间和从库的时间对不上,数据同步的顺序就可能乱掉。这些问题其实有一个共同的解决办法,就是给整个网络配一个统一的时间源。NTP网络同步时钟,就是专门干这件事的设备。
NTP网络同步时钟的核心功能可以拆成三块:接收时间、保持时间、分发时间。接收时间这一步,设备通常通过天线接收卫星信号,比如北斗或者GPS,也可以从上一级的时间服务器获取。保持时间这一步,靠的是设备内部的高稳晶振,即使收不到外部信号,设备也能在一定时间内保持输出时间的准确性。分发时间这一步,用的就是NTP协议,也就是网络时间协议,通过以太网把标准时间发送给网络里所有需要同步的设备。
NTP协议本身不算复杂。它的工作原理可以通俗地理解为“一问一答算延时"。客户端向NTP网络同步时钟发一个请求,记下发出时刻;服务器收到后记下接收时刻,然后回复一个包含接收时刻和发送时刻的数据包;客户端收到回复后,用这四个时间点就能算出网络来回的传输延迟,再据此调整自己的本地时钟。经过几轮这样的交互,客户端的时间就能和服务器的时间对齐。这个过程是自动完成的,不需要人工干预。
一台NTP网络同步时钟能管多大的范围?这个跟网络规模有关系。一般来说,一台标准的NTP服务器可以同时响应成千上万个同步请求,覆盖一个中型园区或者一栋写字楼没有问题。如果设备数量特别多,或者网络跨了多个城市,通常会在核心机房放一台一级NTP网络同步时钟,下面各个分机房再放二级时钟,一级往二级同步,二级往下面的设备同步,形成树状结构。这样既能减轻核心设备的压力,也能减少跨网络传输带来的延时误差。
部署一台NTP网络同步时钟,考虑的地方主要有几个。第一是天线安装,如果选用卫星接收方式,天线必须放在室外开阔位置,保证能稳定收到卫星信号。第二是网络规划,NTP流量一般占用带宽很小,但建议给它在交换机上配置一个独立的VLAN或者做一下QoS,避免网络拥堵时影响同步精度。第三是安全防护,NTP网络同步时钟通常是网络里的关键基础设施,建议在交换机上做访问控制,只允许授权设备访问它的NTP服务,防止被恶意利用。
有些用户会问,直接用互联网上的公共NTP服务器不行吗,为什么非要自己部署一台?这要看具体场景。对于家庭或者很小的工作组,用公共服务器确实够用了。但对于企业、政府、金融、医疗这些行业,有自己的NTP网络同步时钟有几个实际好处。一是精度更高,局域网内的同步延迟一般在几毫秒以内,比跨互联网稳定不少。二是安全可控,不需要给每台设备开放外网访问权限。三是责任明确,公共服务器出问题了没人负责,自己的设备出了问题自己能排查。
日常维护方面,NTP网络同步时钟比较省心。主要工作包括定期查看卫星锁定颗数是否正常、检查时间偏差是否在允许范围内、观察日志里有没有大量的同步失败记录。大多数设备都支持SNMP告警,出现问题会自动发通知给网管平台。总体来说,这是一类部署好之后很少需要操心的设备。
总的来说,NTP网络同步时钟属于那种平时感觉不到、但缺了它会很麻烦的基础设施。它不处理业务数据,不跑应用系统,但为整个网络提供了统一的时间坐标。如果您所在的单位有几十台甚至上百台设备需要保持一致的时间,部署一台NTP网络同步时钟,会让很多后续的运维工作变得简单不少。
