NTP 服务是什么和为什么我们需要在我们的服务器启用 NTP 服务?
可能很多人都不是非常了解,简单来说就是我们希望我们服务器的时间是准确的没有偏差的。这个的意义在数据插入和你程序取得计算机时间的时候是准确的。
比如说在 java 中如果 new date() 将会获得计算机当前的时间,如果当前的世界不准确的话,那么你插入数据库的时间就是混乱的。
同时,我们也希望我们的服务器的时区是准确的,比如说我们常使用的东八区和美国太平洋时间等。
如果计算机有什么原因导致时钟慢了,我们可以通过 ntp 进行同步。
所以针对服务器来说,在设置好时区后,NTP 服务是必须要启用的。
NTP 介绍
网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机[时间同步化的一种协议,它可以使计算机对其服务器或时钟源如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶意攻击。
NTP 的目的是在无序的 Internet 环境中提供精确和健壮的时间服务。
NTP 提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。
NTP 获得 UTC的 时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。
按照离外部 UTC 源的远近将所有服务器归入不同的 Stratum(层)中。Stratum-1在顶层,有外部 UTC 接入,而 Stratum-2 则从 Stratum-1 获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。
所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。
为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。NTP时间同步报文中包含的时间是格林威治时间,是从1900年开始计算的秒数。
安装 NTP 服务
在 CentOS 8 中,我们使用 chronyd 来提供 NTP 的服务。
在 CentOS 上执行下面的命令来进行安装,如果你已经安装过的话,系统会进行提示。
dnf install chrony
开启启用 NTP 服务
在 CentOS 8 中,执行下面的命令,来让服务进程随开机自动启动。
systemctl enable chronyd
上面的命令会随计算机开机的时候自动运行。
检查服务器 NTP 服务器地址
请执行下面的命令,确定 NTP 服务器的地址已经配置成功了。
chronyc sources
上面命令会显示默认配置的 NTP 服务器地址。
强制同步
在安装操作系统后,可能会遇到时间不准确的情况。
可以使用下面的命令对服务器的世界进行强制同步一次。
chronyc -a makestep
服务器的输入内容是:
[root@vps-c853c8ac home]# chronyc -a makestep
200 OK
[root@vps-c853c8ac home]#
然后可以在服务器上执行
date +%z
以确定当前的时区和你可用使用 date 确定当前服务器的时间。
date
通过这个设置,我们就可以在服务器上使用 NTP 进行同步了,你就不需要对服务器的时间进行调整了。