chrony软件使用说明

chrony简介

  chrony是一个开源的自由软件,它能保持系统时钟与时间服务器(ntp)同步,让时间保持精确。

  它由两个程序组成:chrongd和chronyc。

  chronyd是一个后台运行的守护进程,用于调整内核运行的系统时钟和时间服务器同步。

  它确定计算机增减时间的比率,并对此进行补偿。

  chrony是CentOs7.x上自带的时间同步软件

安装及配置

  • 本地服务器作为时间服务器同步时间
  • 本地服务器不同步互联网时间服务器的时间
1 #yum install chrony --RHEL7默认已安装chrony,而没有安装ntpd。
 2 
 3 #systemctl status chronyd --查看chronyd服务状态
 4 
 5 #systemct enable chronyd --开机启动
 6 
 7 #vim /etc/chrony.conf --修改配置文件
 8 
 9 #server 0.rhel.pool.ntp.org iburst --注释这4行,表示的是外网时间服务器的网址。
10 
11 #server 1.rhel.pool.ntp.org iburst 
12 
13 #server 1.rhel.pool.ntp.org iburst 
14 
15 #server 1.rhel.pool.ntp.org iburst 
16 
17  server 192.168.56.112 iburst --添加这一行,表示与本机同步时间
18 
19  local stratum 10 -->>该行注释取消掉不然NTP synchronized: 为no 取消掉后变为 NTP synchronized:yes
20 
21 #Allow NTP client access from local network.
22 
23  allow 192.168.56.0/24 -->>允许哪些服务器或客户端到这台时间服务器来同步时间。必须配置
24 
25 #systemctl restart chronyd -->>修改完配置文件后,重启chrony服务
[root@chronyd ~]# netstat -antulp|grep chronyd  -->>查看时间服务器是否允许
udp 0 0 0.0.0.0:123 0.0.0.0:* 12505/chronyd 
udp 0 0 127.0.0.1:323 0.0.0.0:* 12505/chronyd 
udp6 0 0 ::1:323 :::* 12505/chronyd 
[root@chronyd ~]# ss -antulp|grep chronyd
udp UNCONN 0 0 *:123 *:* users:(("chronyd",pid=12505,fd=7))
udp UNCONN 0 0 127.0.0.1:323 *:* users:(("chronyd",pid=12505,fd=5))
udp UNCONN 0 0 ::1:323 :::* users:(("chronyd",pid=12505,fd=6))

显示系统当前日期和时间

[root@chronyd ~]#timedatectl 

Local time: 二 2019-11-12 11:06:46 CST
Universal time: 二 2019-11-12 03:06:46 UTC
RTC time: 二 2019-11-12 03:06:46
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

注意NTP synchronized值,只有时间服务器自己同步完成时间后,才能为其他服务器提供时间同步。

 设置日期和时间 

timedatectl set-time "YYYY-MM-DD HH:MM:SS"

timedatectl set-time "YYYY-MM-DD"

timedatectl set-time "HH:MM:SS"

查看所有可用的市区

1 [root@chronyd ~]# timedatectl list-timezones |grep Asia/Shanghai
2 Asia/Shanghai

 设置时区

1 [root@chronyd ~]# timedatectl set-timezone Asia/Shanghai

设置硬件时间

#硬件时间默认为UTC

1 [root@chronyd ~]# timedatectl set-local-rtc 1
2 [root@chronyd ~]# hwclock --systohc --localtime
3 #两条命令效果等同

 启用NTP时间同步

1 [root@chronyd ~]# timedatectl set-ntp yes
2 [root@chronyd ~]# timedatectl set-ntp true
1 #两条命令效果等同
2 问题:ntp设置为yes,手动设置时间报错。

查看时间源信息

1 [root@chronyd ~]# chronyc sources -v
 2 210 Number of sources = 1
 3 
 4 .-- Source mode '^' = server, '=' = peer, '#' = local clock.
 5 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
 6 | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
 7 || .- xxxx [ yyyy ] +/- zzzz
 8 || Reachability register (octal) -. | xxxx = adjusted offset,
 9 || Log2(Polling interval) --. | | yyyy = measured offset,
10 || \ | | zzzz = estimated error.
11 || | | \
12 MS Name/IP address Stratum Poll Reach LastRx Last sample 
13 ===============================================================================
14 ^* chronyd 10 6 177 9 -15ns[ -15us] +/- 25us
15 
16 [root@chronyd ~]#

客户端时间同步配置

#yum install chrony -y  -->>安装时间服务器软件

修改配置文件

1 [root@Client ~]# vim /etc/chrony.conf
2 
3 # Use public servers from the pool.ntp.org project.
4 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
5 #server 0.centos.pool.ntp.org iburst
6 #server 1.centos.pool.ntp.org iburst
7 #server 2.centos.pool.ntp.org iburst
8 #server 3.centos.pool.ntp.org iburst
9 server 192.168.56.112 iburst -->>添加该行,表示到这台服务器去同步时间。

重启chrony服务,并设置开机自启动

1 [root@Client ~]# systemctl restart chronyd.service -->>重启chrony服务
2 [root@Client ~]# systemctl enable chronyd.service -->>设置开机自启动模式

查看时间同步状态

1 [root@Client ~]# timedatectl 
2 Local time: 四 2013-02-14 12:37:25 CST
3 Universal time: 四 2013-02-14 04:37:25 UTC
4 RTC time: 日 2019-05-12 04:24:01
5 Time zone: Asia/Shanghai (CST, +0800)
6 NTP enabled: no
7 NTP synchronized: yes -->>为yes表示已同步
8 RTC in local TZ: no
9 DST active: n/a

重启chronyd服务后,需要过几分钟才会自动完成同步。

如果需要手动,可以使用下面的命令

[root@Client ~]# ntpdate 192.168.56.112
14 Feb 12:40:09 ntpdate[8038]: adjust time server 192.168.56.112 offset -0.000067 sec

也可以使用crontab -e定时任务同步时间

1 [root@Client ~]# crontab -l
2 */2 * * * * /usr/sbin/ntpdate 192.168.56.112  -->>创建脚本每个2分钟来同步时间一次
1 如果同步失败,有可能是时间服务器的时间为同步,即时间服务器NTP  synchronized 为no
2 
3 手动修改时间时,必须把NTP enable 设置为no
4 
5 如果把 NTP enable修改为yes时,表示开启自动同步时间,此时,是不能手动修改时间的。如果为no时,表示关闭自动同步时间。

 

1 [root@chronyd ~]# timedatectl set-ntp true 
2 
3 [root@chronyd ~]# timedatectl set-time "2019-11-11 12:56:11"
4 Failed to set time: Automatic time synchronization is enabled