俗话说“失之毫厘,谬以千里”,时间的精准度对于我们的工作、生活都非常重要。2000年的千年虫事件以及2017年元旦全球多一秒事件,都引起了人们的高度关注,尤其是数据中心行业。数据中心里很多系统都依赖时间来正常运行,人们要认真评估这一时间变化对内部运行设备的影响,如果设备不能够自行调整时间,则就会与实际时间产生偏差,因此而带来一系列误判,导致问题。所以,时间精准度对于数据中心来讲是非常重要的参量。
数据中心的时间有两个维度含义,一个是相对时间。比如很多的网络设备要启用OSPF、ARP、MAC等各种协议,每种协议都有各种各样的定时器,以便实时判断协议状态是否有变化。OSPF邻居要通过一定间隔时间收发Hello报文保持邻居状态为Full,一旦超过三个Hello报文的发送时间间隔,一个Hello报文也没有收到,就认为这个邻居状态发生了变化,邻居状态由Full切换到Init或Down,记录Hello报文超时的时间定时器要准确,周期性地记录每个Hello报文的收时间,以便统计准确;另一个是绝对时间,就是北京标准时间,每天我们在新闻联播时看到的时间,2000年的千年虫事件以及2017年元旦全球多一秒事件都说的是这个时间。数据中心有很多设备,这些设备运行中会产生很多的日志和告警信息,所有的信息都有时间纪录,只有这个时间准确,才能通过这些时间来进行分析问题。比如数据中心发生了业务中断,我们首先要知道是什么时候中断的,持续多长时间,与哪些设备有关,然后再去查找这个时间点,设备上留下的相关纪录,时间的准确性对于分析业务中断原因非常关键,如果没有各个设备的准确运行时间,就无法判断哪些信息是中断时报出的,哪些信息与故障有关,故障将很难分析出结果,所以绝对时间也非常重要。
无论是相对时间,还是绝对时间,对于数据中心运行都非常重要,同时也要保证两个时间的准度,如果精度太差,也会产生不少问题。上面也有介绍,会导致网络协议的各种定时器判断不准确,发生故障时无法明确哪些是故障时间报出的,这只是举个示例,其实还有更多的方面。如果相对时间不准,误差大,服务器上的应用系统也会出问题,如果要是银行的存取款业务系统,每存一笔钱时间都慢慢将误差拉大,可能到***,连储户上的钱数数据记录都出现错误,甚至出现丢失的情况。如果相对时间不准,二三层转发网络,表项老化的时间都不一致,有长有短,导致表项学习不稳定,流量转发出现丢包,严重的会导致表项无法学习,造成网络中断;如果是绝对时间不准,数据中心所有设备记录的信息都是不准确的,各个设备之间的信息也没有可对比性,相互之间的影响和作用就无法从时间轴上分得清楚。在一些重要变更和操作时,由于绝对时间的不准确,会导致操作的时机不是***的,在变更和设备准确上不同步,从而会产生这样那样的问题。
既然时间准度对数据中心这么重要,那就要提升时间准度了。不过,提升时间准度可不是一件轻松的事儿。首先,对于相对时间,这个和北京时间无关,与个体设备有关,这个只能靠设备内部的实现来保证。很多网络设备在内部会设定很多定时器,这些定时器专门记录各种协议的运行时间,以便判断协议的状态是否正常,这个时间一般通过CPU的晶振频率计算获得。这样相对时间的准确度和设备的CPU性能有很大关系,往往是越高端的设备采用的CPU晶振频率越准,当然这类设备的价格也要高很多。
其次,对于绝对时间,为保证数据中心内部所有设备的时间一致,可以通过将所有设备的时间对一遍,尽量做到时间同步,不过每个设备的时间准度不同,有的设备运行个一年半载,偏差可能达到数十秒,而有的设备偏差却很小,这样虽然当初时间都对过,不同设备的运行时间是一致的,随着运行时间越来越长,误差变得越来越大,所以这种方式不可行。更多的数据中心是通过设定一个NTP服务器,这个服务器可以是网络设备也可以服务器,甚至是专用的授时设备,然后数据中心里所有设备都通过这台设备来获取时间,从而整个数据中心里的设备运行时间是完全一致的。
如果采用一般的网络设备做NTP服务器,运行个几个月,这些服务器运行时间与实际时间偏差可能达到数十秒,虽然这些时间偏差比较大,但仍能保证这些设备之间的相对时间是一致的,并不妨碍各种工作的开展,包括问题定位。不过,有的时候数据中心业务对时间要求比较高,这时就需要使用专用的授时设备做NTP服务器。授时设备运行时间误差小,精度可以达到毫秒甚至微秒级,与北京时间保持完全一致,即使运行时间久了,偏差也在微秒级,这就保证了数据中心里所有设备与实际北京时间完全一致,避免因为时间不准确,导致这样那样的问题。除了授时系统,还有时间频率基准,守时用原子钟,星载原子钟等技术,采用这些技术都可以大幅提升数据中心的时间准度。
时间准度已经成为数据中心运行中至关重要的参量,一切的数据中心活动都和时间准度有密切关系。数据中心对高精度时间频率的需求越来越强烈,需要一系列精度越来越高的计时器具,同时要在各个设备之间做好时间同步工作,保持设备之间时间的一致性,以便于开展各种数据中心运维工作。