机房运维里有一类问题,平时不怎么被人留意,出了故障才让人觉得麻烦。比如某个应用系统夜里出了异常,运维人员把前端服务器、数据库服务器、负载均衡设备的日志都调出来,结果发现三台设备记录的时间差了四五秒,没法直接按时间顺序把故障经过串起来。类似的事情反复出现,原因不复杂——每台设备有自己的系统时间,出厂的时候是准的,跑久了时钟漂移不一样,有的快有的慢,没人去统一校准。把机房里的设备时间对齐,需要一个专门干这个活的设备,叫NTP同步时钟。

山东唯尚电子有限公司
打开网易新闻 查看精彩图片
山东唯尚电子有限公司

这类产品非民用,它不是家用电脑上装个时间同步软件那么简单,而是部署在数据中心的网络机柜里、企业总部的核心机房中、金融单位的交易系统后台、医院的信息集成平台、工业控制系统的调度室机架上的专业设备。它做的事情简单来说就一句话:从标准时间源拿到准确时间,再通过内网分发给所有需要同步的设备。

NTP同步时钟的工作机制并不难理解。设备本身通过外接天线接收北斗或GPS卫星信号,解算出标准时间后,作为内网的顶层时间源。接入内网的其他设备——不管是物理服务器、虚拟机、交换机、路由器还是存储阵列——只要把NTP同步时钟的IP地址填进时间同步配置里,设备就会定期自动向它发请求,获取标准时间然后校准自身。整个过程自动进行,不需要运维人员一台台去手动调。

有人可能会觉得,设备系统自带的时间同步功能不是也能用吗?确实,Windows有时间同步、Linux有ntpd服务,但它们需要一个目标地址来获取时间。如果指向的是互联网上的公共NTP服务器,就得依赖外网通不通、服务器响应快不快。在内网环境里,很多机房对外部网络访问做了严格限制,公共服务器经常连不上;就算连上了,公共服务器用户量大、网络跳转多,同步回来的时间误差有时会到几百毫秒甚至更高,对交易系统、数据库集群这种对时间一致性要求高的场景来说不够用。NTP同步时钟把时间源放在内网内部,不需要经过外网链路,同步精度稳定得多,同步的频次也可以按需自由配置。

从实际部署来看,NTP同步时钟在机柜里的位置并不显眼,一般占1U或者2U的机架高度,接上天线和网线就能工作。上线后通过浏览器访问管理界面,可以查看卫星锁定状态、当前精度、已同步设备数量等运行信息。设备内部配有高稳时钟晶振,遇到恶劣天气导致卫星信号丢失时,晶振会自行守时,时间漂移控制在很小的范围内,等到信号恢复后自动重新锁定同步。

NTP同步时钟在不同行业里承担的角色不太一样。金融行业用它保证交易流水和数据库日志的时间戳对齐,满足审计和风控要求。广电行业用它保证播控系统、字幕机、切换台同步工作,防止节目切换时出现不同步卡顿。工业制造里MES系统和SCADA系统的时间统一,靠它来保证生产数据的时间标签有效。医疗机构里HIS系统、PACS系统、电子病历系统的日志时间对齐,也是类似的需求。还有等保测评,检查项里专门有一条看各系统时间是否一致,这条过不去,测评得分会受影响。

NTP同步时钟在机房里的存在感很低,上架之后就默默干活,平时没人专门去看它。但每一条系统日志、每一笔业务流水、每一次故障排查,时间戳上那个精确到毫秒的数字,都靠它在背后撑着。机房设备再多,有了它,时间就只有一个标准。