1、实战:Centos7时间服务器搭建(ntp服务方式)-2023.12.17(测试成功)
更新于:2023年12月24日
实战:Centos7时间服务器搭建(ntp服务方式)-2023.12.17(测试成功)
目录
[toc]
写在前面
对于时间服务(ntp/chrony),都是cs架构(服务端和客户端),我们一般该如何使用呢?
- 服务端:就是提供给其它机器ntp时钟源的机器。(安装好ntp/chrony软件,配置一些必要参数,保证自己的ntp服务始终可用就好。)
- 客户端:去同步ntp server的机器。(安装好ntp/chrony软件,将ntp server ip配置进去就好。)
前言
Linux的两种时钟: (1)系统时钟(System Clock):由Linux内核通过CPU的工作频率进行的 (2)硬件时钟(RealTime Clock,简称RTC):主板
注意:系统时间是基于内存的,断电就会丢失;硬件时间是写在硬件中的bios程序里的。
系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中的“Standard BIOS Feture”选项进行设置。
当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。因此系统时钟和硬件时钟可以采用异步方式,即系统时间和硬件时间可以不同。从linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但linux中的所有命令都是采用的系统时钟设置。
标准时间
说到时间,我们先来了解一下标准时间的概念及演变。
早期,标准时间采用的是格林尼治时间,即GMT,也称为世界时。它是指英国伦敦格林尼治天文台的标准时间,是以地球自转为基础,根据太阳横穿格**林尼治本初子午线(即0度经线)**来确定标准时间,用天来定义秒的计量系统,是基于天文学的。由于地球自转速度不均匀,并且正在缓慢减速,因此,在GMT下,每天的一秒在微观尺度上和其它天的都不相同,不是一种均匀的时间系统。
基于某些元素的原子能级跃迁频率有极高的稳定性这一特点,1967年国际度量衡大会对秒重新进行了定义:铯133元素的两个超精细能阶之间跃迁时所辐射的电磁波的周期的9,192,631,770倍的时间定义为一秒。在此基础上,1971年由国际时间局建立了国际原子时(TAI),并取1958年1月1日0时0分0秒世界时的瞬间作为同年同月同日0时0分0秒TAI。因此,TAI是基于物理学,为一种极其精确的时间系统,是用秒来定义天。
为解决TAI和GMT之间的时间误差,协调世界时于1972年面世。协调世界时,又称世界标准时间、国际协调时间,简称UTC。以TAI秒长为基础,当GMT与TAI之间时刻相差超过0.9秒时,通过在当年的6月30日或12月31日的最后时刻增减1秒进行修正,在时刻上尽量接近GMT。这就是闰秒。自1972年以来,一共进行了27次闰秒调整,都是正闰秒,即增加一秒。
闰秒在当今存在一些争议。一些国家(如美国、法国、日本)认为应该直接使用TAI,不需要闰秒。因为要让世界各国在同一个瞬间增加一个闰秒,绝非易事。稍有疏忽,很多重要系统就会因时间误差而导致混乱。而且,基于闰秒出现的无规律性和不可预知性,要在设备上预留“置闰”设置也非常麻烦。总而言之,闰秒会让全世界付出更多的许多人力财力成本。而另一些国家(如中国、英国、俄罗斯)则认为,在地球越转越慢的现实之中,五千年后的人类将发现,“日居正中”将 是下午1时。“作为科技进步的产物,全面采用原子时,意味着人们可以完全摆脱地球自转与日月更替,孤独地奔跑在向前的路上。”,因此需要用闰秒进行修正。就最近国际电信联盟的投票结679C而言,闰秒得以保留,UTC依然作为公认的国际标准时间。
网络时间(NTP)协议
NTP(Network Time Protocol) 网络时间协议,工作在UDP的123端口上。是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(局域网上与标准间差小于1毫秒,互联网上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
既然确定了UTC作为公认的国际标准时间。那如何保证时间的统一性和准确性,是按照A这台计算机的时间,还是按照B这台计算机的时间?这就需要用到网络时间协议,英文名称为Network Time Protocol ,简称NTP。通过该协议,可以把计算机的时钟同步到UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
在NTP协议中,下级服务器在指定的轮询时间范围(如64秒至1024秒)内,向上一级服务器通过_UDP123端口_发送报文,进行探测,根据多次的探测结果进行时间校准。在默认配置下,时差在128ms以内,会分成多步慢慢调整;时差在128ms至1000ms,时间会一次性调整到位;**时差超过1000ms,NTP会判定为当前环境不可靠,而中止运行。**有些系统支持对以上参数进行调整,但有些系统则不可以。
正如之前所提到的,在对时间精确度要求很高的环境下进行闰秒的调整绝非易事,其最主要的原则就是不能发生时间跳变。在一个复杂网络环境中,不是所有的系统或设备都能支持参数调整,也就是说在向上级服务器探测时间时,时差不能超过128ms。所以闰秒调整需分多步进行,以保证每一级服务时间差不超过128ms。受到网络传输延时的影响,在广域网内,越远端的服务器(如Stratum-15)的时间波动越明显,因此,在确认闰秒分步调整时,需要考虑这方面的因素,合理确定分步范围。根据笔者最近两次的调整经验,在3层服务器架构中,一次闰秒调整需分13次至15次完成。
NTP有足够的容错性,除之前提到的1000ms中止运行外,还能根据算法,选用可靠的上一级服务器。当无法正确获得上一级服务器时间时,NTP将使用自身的时间设备(普通设备一般为晶振,一级服务器一般为原子钟)提供服务。
理解时间源的层数
在NTP中,时间按照服务器的等级传播,Stratum-1(我们一般称作一级服务器)为最高层,其时间源为标准UTC,该时间源可以来自外部,如北斗、GPS,也可以来自该服务器内部的原子钟。
而**Stratum-2(二级服务器)**则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推。
但Stratum层的总数最多不超过15层。
为防止单点故障,每一级服务器都应该有多台,且数量一般为奇数,以便于下级服务器决策。
原子钟 是什么
原子钟是一种利用原子物理学原理来测量时间的设备。它的工作基于原子的精确振荡特性。最常用的原子钟基于铯或钙原子的振荡。这些钟的精度非常高,能够提供极为准确的时间测量。
原子钟的基本原理涉及到原子的稳定振荡。在一个原子钟中,通常使用一个原子束穿过磁场,使原子的电子在两个能级之间跃迁。这种跃迁的频率非常稳定,因此可以作为时间的基准。铯原子钟使用铯的一个特定跃迁,而钙原子钟使用钙的特定跃迁。
国际单位制(SI)中的秒定义为铯原子的某个特定跃迁的9,192,631,770次振荡的持续时间。因此,铯原子钟可以提供非常准确的秒级时间测量。
原子钟的高精度使其成为国际时间标准的基础。全球定位系统(GPS)等现代科技领域都依赖于原子钟来提供高精度的时间信号。原子钟的发展对于科学研究、导航、通信等领域都有着深远的影响。