1. Chrony介绍
Chrony是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。它由两个程序组成,分别是chronyd和chronyc。
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
RedHat Linux7及Centos7使用chrony做为时间同步,目前也运行使用NTP。两个服务不能同是启用。
2. 安装环境
Linux系统版本:Centos 7.4最小化安装
Linux内核版本:3.10.0-693.el7.x86_64
使用两台设备做测试,一台做为服务端,另一台做为客户端。
3. 服务端配置
安装chrony之前,如果安装有NTP,需要卸载或使用mask命令关掉NTP:
systemctl mask ntpd
3.1 安装chrony
最小化安装的操作系统默认没有安装chrony,其他安装方式默认会安装有。如果没有安装chrony则可以使用YUM方式安装,前提是服务器能上外网或者配置本地YUM源。
yum install chrony
3.2 启动chrony
systemctl start chronyd
systemctl enable chronyd
3.3 查看
systemctl status chronyd
netstat -tulnp | grep chrony
可以看到,默认情况下只监控了127.0.0.1这些一环回接口,这样没法给客户端提供服务,所以接下来我们需要修改配置文件。原因是chrony默认不允许任何客户端连接,需要修改配置文件中的allow选项。
3.4 配置chrony
chrony的配置文件是 /etc/chrony.conf 。
在配置chrony过程中,我们再讲一下相关参数。
以下是整个配置文件的内容:
如果想要对外提供时间同步功能,服务器本身需要与其他时间同步服务器进行时间同步,确保服务器自身的时间是正确的,默认跟红帽的4台时间服务器进行同步:
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
而服务器只做为内网使用,又无法联网怎么办,将上面4行用"#"号注释,把自己写上去。
设置自己与自己同步:
将:# local stratum 10
改为:local stratum 10
就是去掉行首的"#"号
还可以设置允许哪些NTP客户端来进行时间同步,默认是禁止所有客户端连接,必须设置:
# allow 192.168.0.0/16
allow 0.0.0.0/0
allow FEC0::0/121
最终配置文件内容:
egrep -v "^#|^#34; /etc/chrony.conf
主要修改两个地方:
local stratum 10
allow 0.0.0.0/0
allow FEC0::0/121
3.5 重启服务
systemctl restart chronyd
重启服务后,服务器不是立即与自己同步,需要等几分钟才能同步,服务器没有与其他时间服务器同步的话,是不能给客户端提供服务的。
3.6 查看端口
netstat -tulnp | grep chronyd
端口监听正常。
3.7 配置防火墙
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
4. 配置客户端
客户端也要安装chrony。
安装chrony之前,如果安装有NTP,需要卸载或使用mask命令关掉NTP:
systemctl mask ntpd
4.1 安装chrony
最小化安装的操作系统默认没有安装chrony,其他安装方式默认会安装有。如果没有安装chrony则可以使用YUM方式安装,前提是服务器能上外网或者配置本地YUM源。
yum install chrony
4.2 启动chrony
systemctl start chronyd
systemctl enable chronyd
4.3 查看
systemctl status chronyd
netstat -tulnp | grep chrony
4.4 配置
vi /etc/chrony.conf
#增加一行
server FEC0::3A iburst
#其他4行server注意掉
egrep -v "^#|^#34; /etc/chrony.conf
4.5 同步时间
在同步前我们先查看一下当前时间:
timedatectl
现在还没有与时间服务器进行同步。
重启服务:
systemctl restart chronyd
开启时间同步:
timedatectl set-ntp yes
再次查看时间:
#中间可能需要等几分钟。
timedatectl
NTP synchronized为yes则
4.6 查看与哪些服务器同步
chronyc sources -v
这个状态则表示与时间服务器连接正常。
查看时间同步源状态:
chronyc sourcestats -v
校准时间服务器:
chronyc tracking