引子:在企业网络中,时间服务可能是最不受重视却又非常重要的服务,说其不受重视一则是因为时间服务难以像OA/CRM/Mail等业务系统为企业带来直接收益,二是各类业务系统在使用系统时钟作为时间源表面上也能工作的很好;说其重要一则是因为时间的同步会直接影响业务系统数据的准确性和业务系统稳定性,二是在业务数据分析、系统运维或故障排查中一致的时钟能够极大降低工作复杂度。本文将简要说明基于CnetOS7.5的时间服务器和客户端基础配置操作,高阶操作后续有闲心在写。
0x1 设置时区
时区的产生和由来参考初中地理课本,在国内我们统一采用Asia/Shanghai或Asia/Chongqing进行配置。
#timedatectl set-timezone Asia/Shanghai
0x2 认识chrony
在基于Redhat的Linux发行版中,ntpd曾是默认的时间服务器,自RHEL7/CentOS7开始软件仓库开始提供替代应用---chrony。同ntpd一样基于C/S架构,但chrony具备更多的功能和使用场景,它可以将系统时钟、硬件时钟或手动输入作为参考时间,因此能够在间断性网络连接的场景中提供准确的时钟服务。chrony提供了两个命令,分别是管理命令chronyc和服务进程chronyd。
0x3 部署chrony
#yum -y install chrony
配置文件为/etc/chrony.conf,简要参考关键配置如下:
#参考时间源配置,可以使用默认的由pool.ntp.org提供的时间源,也可以使用国家授时中心或清华大学等国内靠谱的时间服务器,在homelab.pub中我将使用默认时间源;
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
#允许指定网络通过本服务器同步时间,如果是服务于分支机构的*服务器,还需额外增加防火墙安全策略;
allow 192.168.0.0/16
#该配置表示即使向以上指定的参考时间源同步失败,仍然提供时钟服务,比如为企业提供互联网接入服务的ISP网络故障时企业内部网络仍需正常授时;
local stratum 10
仅需修改以上三条配置即可满足基本要求,通过以下命令启动服务:
#systemctl enable chronyd
#systemctl start chronyd
0x4 客户端配置
chrony虽然是C/S架构,但在Server端和Client端部署的软件没啥区别,只是Client端配置更简单些,仅需指定参考时间源即可。
#yum -y install chrony
配置文件为/etc/chrony.conf,简要参考关键配置如下:
#参考时间源配置,在homelab.pub中时间服务器192.168.2.251
server 192.168.2.251 iburst
有几台的话就填写几条,然后通过以下命令启动服务:
#systemctl enable chronyd
#systemctl start chronyd
0x5 管理与运维
chrony提供的工具只有chronyc,可用于日常管理运维操作,常用基础操作命令参考:
A、查看时间源统计信息
[root@master ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 24.2.59.108.in-addr.arpa 2 10 77 384 -13ms[ -11ms] +/- 351ms
^+ static-5-103-139-163.ip.> 1 10 167 23m +15ms[ +18ms] +/- 162ms
^+ 4.197.134.185.in-addr.ar> 2 10 177 48m -5524us[-2571us] +/- 146ms
^* 85.199.214.101 1 10 363 163 +32ms[ +34ms] +/- 171ms
输出中M列表明时间源的类型,^号表示服务器,=号表示对等体,#号表示本地参考时钟;
输出中S列表明时间源的状态,*号表示当前正在同步,+表示可选/备用时间源,-号表示已排除在可选项之外,?号表示连接丢失或时间源状态没有通过验证;
在客户端运行以上命令,查看同步时间源信息示例输出:
B、查看时间源活动状态
[root@master ~]# chronyc activity
200 OK
4 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
C、查看系统时钟性能信息
[root@master ~]# chronyc tracking
Reference ID : 55C7D665 (85.199.214.101)
Stratum : 2
Ref time (UTC) : Thu Jun 21 00:14:25 2018
System time : 0.002271435 seconds fast of NTP time
Last offset : +0.000506308 seconds
RMS offset : 0.001562944 seconds
Frequency : 14.963 ppm slow
Residual freq : +0.003 ppm
Skew : 0.046 ppm
Root delay : 0.256618977 seconds
Root dispersion : 0.003374373 seconds
Update interval : 1044.2 seconds
Leap status : Normal
Reference ID:时间源ID(域名),如果ID为7F7F0101且域名为空,则表示未与外部时间源同步;Stratum:层级,表示本级到时间源的距离hop;
Ref time:上一次同步的UTC参考时间;
System time:系统时钟步进状态,为避免对应用程序影响,系统时钟采用步进方式进行同步;
Last offset:上次同步时间时本地时钟偏移量;
RMS offset:较长一段时间内偏移量均值;
Frequency:如果chronyd不介入系统时钟发生错误的速率,以ppm(百万分之一)为单位。例如1ppm表示系统时钟认为自己快了1秒,实际相对于真实时间快了1.000001秒;
Root delay:当前服务器到达层级为1的时间源的网络总延迟;
Update interval:更新周期;
D、查看服务日志
默认chonyd通过rsyslog将日志消息发送到/var/log/messages:
[root@master ~]#cat /var/log/messages | grep chrony