在一个稍微大一点的单位里,设备之间的时间不一致,经常是出了故障才被发现。比如两个机房的核心交换机,A机的日志显示故障发生在23:00:01,B机显示22:59:58,仅仅三秒的差异,就让排查人员搞不清到底是谁先触发了问题。再比如,一套分布式存储系统里,节点之间时间差超过一定范围,数据同步就会出现异常。解决这类问题,不能靠人工挨个校时,需要一套整体的架构来统一管理。时钟同步系统,就是为这个需求而生的。
时钟同步系统不是一台设备,而是一整套从时间源到终端设备的分层架构。它的工作可以分成三个环节:源头、传输、落地。源头是一台高精度的时间服务器,通常通过天线接收北斗或GPS卫星信号,获取UTC标准时间。传输环节利用现有的网络基础设施,通过NTP或者PTP协议将时间信号分发下去。落地环节则是各个终端设备,包括服务器、交换机、存储设备、安防摄像头、门禁控制器、LED时钟等,它们主动向时间源发起同步请求,自动校准自己的时钟。
这套系统的设计思路是分层的。一般在中心机房放置一级时间服务器,作为整个系统的时间基准。如果园区很大或者楼宇较多,可以在各个分机房部署二级服务器,一级向二级同步,二级再往下分发。这样做的好处是,即使某条线路或者某个二级服务器出现故障,影响的也只是局部范围,不会让整个系统的时钟都乱掉。另外,分层架构还能减轻中心服务器的负载,跨网络传输的延时误差也更小。
搭建一套时钟同步系统,需要想清楚几个问题。第一,时间源怎么选。如果天线能架在室外开阔位置,卫星接收方式比较可靠,不依赖外网。如果楼顶不方便架天线,也可以考虑从上游的时间服务器获取,或者使用带有高稳晶振甚至铷原子钟的守时设备。第二,网络条件是否支持。NTP协议对网络延迟有一定要求,一般建议在核心交换机上为NTP流量单独配置优先级,避免网络拥堵时同步精度下降。对于要求微秒级同步的场景,则需要换用PTP协议,并且网络里的交换机和网卡都需要支持PTP功能。第三,终端设备的覆盖范围。不同类型的设备对精度的要求不一样,普通安防摄像头毫秒级就够了,但电力行业的一些测量设备需要微秒甚至纳秒级,这些都要提前摸底。
有些用户会问,如果每台设备都从互联网上的公共NTP服务器同步时间,不也能解决问题吗?在小规模环境里确实可以,但规模大了之后有几个不便之处。一是每台设备都需要访问外网,很多内部系统出于安全考虑是不允许上网的。二是公共服务器的精度波动较大,几十到几百毫秒的误差对于某些业务来说太大了。三是不好管理,设备多了以后,哪些同步成功了、哪些失败了,没有一个统一的视图可以查看。而一套自建的时钟同步系统,管理员可以在一个平台上看到所有设备的时间同步状态,哪台设备离线了、哪台设备偏差超限,一目了然。
日常维护方面,时钟同步系统不算复杂。主要工作包括定期检查天线是否有遮挡、查看一级服务器是否正常锁定卫星、观察二级服务器的同步偏差是否在允许范围内、抽查终端设备的时间是否准确。大多数系统支持SNMP或Syslog日志输出,出现异常时会自动发送告警。总体来看,这套系统部署好之后,日常需要人工介入的地方并不多。
总的来说,时钟同步系统适合那些设备分布广、数量多、对时间一致性有明确要求的单位。它不直接参与业务运行,但为整个信息系统提供了一个统一的时间基准。如果您所在的机房或者园区经常遇到时间对不上的麻烦,搭建一套时钟同步系统,比让每台设备各自为政要省心很多。
