时间同步 | chrony 服务

chrony服务

RHEL从7.0开始改用chrony同步时间,原ntp同步方式也可以使用,但默认安装后不启用,如果需要使用ntp方式,需要额外开启

最小化安装的Centos7.9操作系统:

chronyd默认启动

在这里插入图片描述

ntpd默认不启动

在这里插入图片描述

同步方式

chrony是两个用来维持计算机系统时钟准确性的程序,这两个程序命名为chronyd和chronyc。

  • chronyd:系统后台运行的守护进程,根据网络上其他时间服务器时间来测量本机时间的偏移量从而调整系统时钟,chronyd实现了NTP协议并且可以作为服务器或客户端。
  • chronyc:监控chronyd性能和配置其参数的用户界面,控制本机及其他计算机上运行的chronyd进程,最小化默认未安装。

配置方法

如不确定是否安装chrony服务,可以通过以下方式进行查看:

# 查看是否安装
[root@vm01 /]# rpm -qa |grep chrony
chrony-3.4-1.el7.x86_64						# 返回结果表示已经安装
[root@vm01 /]#

启动服务chronyd

# 系统默认是启动的,可以通过以下命令确认相关配置
# 查看chronyd运行状态:running
[root@vm01 /]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2022-01-20 18:09:07 CST; 3h 5min ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 702 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 677 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 695 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─695 /usr/sbin/chronyd

120 18:09:07 vm01 systemd[1]: Starting NTP client/server...
120 18:09:07 vm01 chronyd[695]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +S... +DEBUG)
120 18:09:07 vm01 chronyd[695]: Frequency -4.275 +/- 3.698 ppm read from /var/lib/chrony/drift
120 18:09:07 vm01 systemd[1]: Started NTP client/server.
120 18:09:41 vm01 chronyd[695]: Selected source 119.28.183.184
120 18:09:43 vm01 chronyd[695]: Source 162.159.200.123 replaced with 84.16.73.33
120 20:56:26 vm01 chronyd[695]: System clock was stepped by 0.000615 seconds
Hint: Some lines were ellipsized, use -l to show in full.
[root@vm01 /]#
# 查看系统是否开机自启chronyd服务:返回结果enabled表示已设置开机自启动
[root@vm01 /]# systemctl list-unit-files |grep chronyd
chronyd.service                               enabled
[root@vm01 /]#
# 如环境和上述不一致,可以手动进行设置
systemctl start chronyd				# 启动
systemctl stop chronyd				# 停止
systemctl enable chronyd			# 设置开机自启动

配置时间同步源

# chrony服务的配置文件:/etc/chrony.conf
# 编辑配置文件,将阿里云的时间服务器地址添加进入即可,不需要的时间服务器地址可以注释掉
[root@vm01 /]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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

在这里插入图片描述

# 配置好以后重启chronyd服务即可
[root@vm01 /]# systemctl restart chronyd
[root@vm01 /]#
# 查看时间同步源:chronyc sources -v
[root@vm01 /]# chronyc sources -v
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                     |          |  zzzz = estimated error.
||                                 |    |           
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 120.25.115.20                 2   6    17    36   +617us[+1421us] +/-   24ms
# 查看时间同步源状态:chronyc sourcestats -v
[root@vm01 /]# chronyc sourcestats -v
210 Number of sources = 1
                             .- Number of sample points in measurement set.
                            /    .- Number of residual runs with same sign.
                           |    /    .- Length of measurement set (time).
                           |   |    /      .- Est. clock freq error (ppm).
                           |   |   |      /           .- Est. error in freq.
                           |   |   |     |           /         .- Est. offset.
                           |   |   |     |          |          |   On the -.
                           |   |   |     |          |          |   samples. 
                           |   |   |     |          |          |             |
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
120.25.115.20               5   3   135     -0.140    109.667  -8449ns  1248us

一些解释:

chronyc sources -v

列名 含义 具体说明
M 时钟源的说明 ^表示服务器,= 表示二级时钟源 ,#表示本地的时钟
S 指示源的状态 *当前同步的源,+表示其他可接受的源,?表示连接丢失的源,x表示一个认为是falseticker 的时钟,~表示其时间似乎具有太多可变性的来源
Name/IP address 源的名称或IP地址,或者参考时钟的refid值 如上图的120.25.115.20:阿里云NTP服务器的IP地址
Stratum 源的层级 层级1表示本地的参考时钟,图中第2层表示通过第1层级计算机的时钟实现同步
Poll 表示源轮询的频率 以秒为单位,上图的6表示每2的6次方进行一次测量,chronyd会根据当时的情况自动改变轮询频率
Reach 表示源的可达性的锁存值(八进制数值) 该锁存值有8位,并在当接收或丢失一次时进行一次更新
LastRx 表示从源收到最近的一次的时间 通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年,值10年表示从未从该来源收到时间同步信息
Last sample 表示本地时钟与上次测量时源的偏移量 方括号中的数字表示实际测量的偏移值,这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)为后缀;方括号左侧的数字表示原始测量值,这个值是经过调整以允许应用于本地时钟的任何偏差;方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围,+偏移表示本地时钟快速来源

chronyc sourcestats -v

列名 含义
Name/IP address 表示源的名称或IP地址,或者参考时钟的refid值
NP 这是当前为服务器保留的采样点数,通过这些点执行线性回归方法来估算出偏移值
NR 这是在最后一次回归之后具有相同符号的偏差值的运行次数。如果此数字相对于样本数量开始变得太小,则表明直线不再适合数据。如果运行次数太少,则chronyd丢弃旧样本并重新运行回归,直到运行次数变得可接受为止
Span 这是最旧和最新样本之间的间隔。如果未显示任何单位,则该值以秒为单位。在该示例中,间隔为46分钟
Frequency 这是服务器的估算偏差值的频率,单位为百万分之一。在这种情况下,计算机的时钟估计相对于服务器以10 ** 9的速度运行1个部分
Freq Skew 这是Freq的估计误差范围(再次以百万分率计)
Offset 这是源的估计偏移量
Std Dev 这是估计的样本标准偏差

配置验证

在这里插入图片描述