安装命令为: dnf install chrony
如果你使用的是老的版本 Linux 服务,并且还可以使用 NTP 安装命令的话,请参考:Linux 中老的 NTP 服务安装和配置 文章中的内容,但我们不推荐使用,因为这个 NTP 服务已经被逐步废弃掉了。
在任何新的服务器安装完成之后,建议都安装 NTP 时间服务器。通过安装这个时间服务器,你可以有效的调整服务器的时间,时区,并能够对服务器的时间进行自动更新。
更主要的是,如果你还在服务器上部署的应用的话,你还能够从源头避免应用和服务器的时间偏差,以及和数据库服务器的偏差。
计算机内部所记录的时钟是记载于 BIOS (CMOS) 内的,但如果你的计算机上面的电池没电了,或者是某些特殊因素导致 BIOS 数据被清除, 此时计算机的时间就会不准。同时,某些操作系统程序的问题,也可能导致我们看到的时间与现实社会不相同的情况。 所以我们都会调整一下时间,好让计算机系统的时间可以一直保持正确的状态。 在实际生活中,我们可以透过电视台、广播电台、电话等等来调整我们的手表,那么如果是在网络上呢? 该如何让我们的主机随时保持正确的时间信息?这就需要 NTP 这个服务器。
Linux 操作系统的计时方式主要是由 1970/01/01 开始计算总秒数,因此,如果你还记得 date 这个指令的话, 会发现它有个 +%s 的参数,可以取得总秒数,这个就是软件时钟。但,如同前面说的,计算机硬件主要是以 BIOS 内部的时间为主要的时间依据 (硬件时钟),而偏偏这个时间可能因为 BIOS 内部芯片本身的问题,而导致 BIOS 时间与标准时间 (UTC) 有一点点的差异存在!所以为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步 (synchronize) 的工作就显的很重要了!
配置时间
在 CentOS 中配置时间首先你需要修改时区。
显示时区
[root@ossez ~]# date +%z
-0400
这里显示的时间是美国东部时间,-0400 的时区
系统中的时间文件保存在:/usr/share/zoneinfo 路径下。
修改时区
假设你希望将服务器的时区修改为美国东部时间
可以运行下面的命令:
[gaarai
@server
~]$ sudo mv /etc/localtime /etc/localtime.bak
[gaarai
@server
~]$ sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
安装 NTP
安装 NTP 服务
在新版本的的 Linux 中,系统已经不再使用 ntp 服务名称来进行 安装了。
新的安装命令为:
dnf install chrony
这个安装命令已经被废弃掉了 yum install ntp
具体有关 chrony 的安装,请参考: CentOS 8 启用 NTP 服务 页面中的内容
开启启用 NTP 服务
在 CentOS 8 中,执行下面的命令,来让服务进程随开机自动启动。
systemctl enable chronyd
上面的命令会随计算机开机的时候自动运行。
防火墙配置
chronyd 进程使用的端口有 2 个,分别为: udp 323 和 udp 123。
如果你的操作系统防火墙阻止了上面的 2 个端口访问的话,NTP 的时间同步是没有办法完成的。
将 NTP 的防火墙打开,NTP 服务使用的是 UDP 123 端口。
可以分别在服务器上运行下面 2 个命令:
# firewall-cmd --permanent --zone=public --add-port=123/upd
# firewall-cmd --reload
需要注意的是,不是所有的防火墙都默认的关闭了 NTP 端口。
如果你发现 NTP 出现问题的话,可以尝试打开。
上图显示了防火墙更新后的情况。
查看当前服务运行状态
[root@vps-f2a02f66 ~]# systemctl status 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 进行同步了,你就不需要对服务器的时间进行调整了。