Chrony 应用本身已经有几年了,其是是网络时间协议的 (NTP) 的另一种实现。
Chrony可以同时做为ntp服务的客户端和服务端
一直以来众多发行版里标配的都是ntpd对时服务,自rhel7/centos7 起,Chrony做为了发行版里的标配服务,不过老的ntpd服务依旧在rhel7/centos7里可以找到 。
Chrony有两个核心组件:
chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。
chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
chrony用来同步时间,来代替ntp服务,优点是很精巧的时间同步工具,更快响应时钟变化,在应对延时提供更好的稳定性能,不会出现时间空白,跨越互联网同步时间只需要几毫秒。
操作系统: CentOS7.x
chronyServer 192.168.1.106
chronyClient 192.168.1.100
在chronyServer 和chronyClient 服务器:
# yum -y install chrony
# rpm -ql chrony
开启防火墙
# firewall-cmd --add-service=ntp --permanent
# firewall-cmd --reload
关闭selinux
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
在chronyServer服务器:
# vim /etc/chrony.conf
#########################
server pool.ntp.org iburst prefer
server 192.168.1.106 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.1.0/24
local stratum 10
logdir /var/log/chrony
bindaddress 192.168.1.106
port 123
###############################
# systemctl start chronyd
# systemctl enable chronyd
# systemctl status chronyd
查看服务端绑定的IP和端口监听
# ss -uan
chronyd默认监听两个端口: 123/udp 323/udp
123/udp ,是供客户端通讯连接用的,安全起见,请绑定服务端socket的IP,而不是0.0.0.0
323/udp,供chronyc连接用,安全起见,默认绑定的本地socket的IP为 127.0.0.1
在chronyClient服务器:
# vim /etc/chrony.conf
################################
server 192.168.1.106 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
bindacqaddress 192.168.1.100
acquisitionport 1234
#######################################
# systemctl start chronyd
# systemctl enable chronyd
# systemctl status chronyd
# ss -uan
注意:chrony作为客户端是采用随机的udp端口与服务端进行通讯的,但是我们可以绑定客户端socket的的IP和端口,以便于相应的防火墙管理控制,,本客户端,我们配置的与服务端通讯的端口为 1234。
# watch chronyc tracking
Chrony Introduction
https://chrony.tuxfamily.org/
https://wiki.archlinux.org/index.php/Chrony
chrony.conf(5) Manual Page
https://chrony.tuxfamily.org/doc/3.4/chrony.conf.html
CentOS / RHEL 7 : Chrony V/s NTP (Differences Between ntpd and chronyd)
https://www.thegeekdiary.com/centos-rhel-7-chrony-vs-ntp-differences-between-ntpd-and-chronyd/
CHAPTER 17. CONFIGURING NTP USING THE CHRONY SUITE
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite
CentOS 7.x中正确设置时间与时钟服务器同步
https://linux.cn/article-4764-1.html
https://www.jianshu.com/p/a8cc55c894e9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
chronyd Can't synchronise: no majority
https://forums.fedoraforum.org/showthread.php?298929-Automatic-time-set
CentOS / RHEL 7 : How to sync chrony to local clock
https://www.thegeekdiary.com/centos-rhel-7-chrony-how-to-sync-to-local-clock/
Manage NTP with Chrony
https://opensource.com/article/18/12/manage-ntp-chrony
Chrony:一个类 Unix 系统上 NTP 客户端和服务器替代品
https://linux.cn/article-10250-1.html
How to Install and Use Chrony in Linux
https://www.tecmint.com/install-chrony-in-centos-ubuntu-linux/
一般会默认安装 chrony 软件包
[root@kube-master-5 ~]# rpm -qa | grep chrony
chrony-3.4-1.el7.x86_64
设置开机启动并查看状态
systemctl enable chronyd.service
systemctlstartchronyd.service
systemctl status chronyd.service
服务端和客户端chrony配置
1. 服务端配置
配置文件修改vi /etc/chrony.conf a、修改第22行,Allow NTP client access from local network,配置允许访问的客户端列表,支持CIDR,例如:allow 192.168/16
b、修改第29行设置同步,Serve time even if not synchronized to any NTP server.,打开注释即可,即:
local stratum 10
重启下服务端chrony服务,使用systemctl restart chronyd.service重启即可。
2、客户端配置
配置文件修改vim /etc/chrony.conf a、修改server即可,删掉其他的,添加要同步时间的源服务器ip,格式如下:
server x.x.x.x iburst
重启下客户端chrony服务,使用systemctl restart chronyd.service重启即可。
客户端使用chronyc sources -v命令完成同步即可
查看同步状态
命令行模式查看时间同步源
chronyc sources-v
查看时间同步源状态
chronyc sourcestats-v
timedatectl status
Local time: Thu2020-10-2911:47:42 CST
Universal time: Thu2020-10-2903:47:42 UTC
RTC time: Thu2020-10-2903:47:43
Time zone: Asia/Shanghai (CST,+0800)
NTP enabled:yes
NTP synchronized:yes
RTCinlocal TZ: no
DST active: n/a
### NTP synchronized 为yes 代表已经同步
查看chrony是否启动
systemctl status chronyd |grepActive
查看配置文件中配置的时间同步器
cat/etc/chrony.conf |grepserver
手动进行同步
chronyc -a makestep
国内几个好的时间同步服务器
server ntp.ntsc.ac.cn prefer
server ntp1.aliyun.com
1.chronyc sources
查看到的同步源 以及字段解析
[root@kube-compute-node-11 ~]# chronyc sources
210Number of sources=4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^?120.25.115.20060-+0ns[+0ns]+/- 0ns
^* time.cloudflare.com361710+14ms[+64ms]+/- 169ms
^- amy.chl.la26179+102ms[+102ms]+/- 311ms
^- ntp5.flashdance.cx26179-79ms[-79ms]+/- 224ms
这里总共输出8列信息,分别对应含义如下:
列名含义具体说明
M表示授时时钟源^表示服务器,= 表示二级时钟源 ,#表示本地连接的参考时钟
S指示源的状态*当前同步的源,+表示其他可接受的源,?表示连接丢失的源,x表示一个认为是falseticker 的时钟(即它的时间与大多数其他来源不一致),~表示其时间似乎具有太多可变性的来源
Name/IP address表示源的名称或IP地址,或者参考时钟的refid值无
Stratum表示源的层级层级1表示本地连接的参考时钟,第2层表示通过第1层级计算机的时钟实现同步,依此类推。
Poll表示源轮询的频率以秒为单位,值是基数2的对数,例如值6表示每64秒进行一次测量,chronyd会根据当时的情况自动改变轮询频率
Reach表示源的可达性的锁存值(八进制数值)该锁存值有8位,并在当接收或丢失一次时进行一次更新,值377表示最后八次传输都收到了有效的回复
LastRx表示从源收到最近的一次的时间通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年,值10年表示从未从该来源收到时间同步信息
Last sample表示本地时钟与上次测量时源的偏移量方括号中的数字表示实际测量的偏移值,这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)为后缀;方括号左侧的数字表示原始测量值,这个值是经过调整以允许应用于本地时钟的任何偏差;方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围,+偏移表示本地时钟快速来源
2.chronyc sourcestats
[root@kube-compute-node-11 ~]# chronyc sourcestats -v
210 Number of sources = 4
.- 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 6 4 324 +221.821 805.359 +20ms 21ms
time.cloudflare.com 10 5 396 +27.605 261.826 -34ms 24ms
amy.chl.la 10 8 399 +66.182 289.209 -19ms 23ms
ntp5.flashdance.cx 10 5 397 +95.528 223.986 -62ms 16ms
列名含义
Name/IP address表示源的名称或IP地址,或者参考时钟的refid值
NP这是当前为服务器保留的采样点数,通过这些点执行线性回归方法来估算出偏移值
NR这是在最后一次回归之后具有相同符号的偏差值的运行次数。如果此数字相对于样本数量开始变得太小,则表明直线不再适合数据。如果运行次数太少,则chronyd丢弃旧样本并重新运行回归,直到运行次数变得可接受为止
Span这是最旧和最新样本之间的间隔。如果未显示任何单位,则该值以秒为单位。在该示例中,间隔为46分钟
Frequency这是服务器的估算偏差值的频率,单位为百万分之一。在这种情况下,计算机的时钟估计相对于服务器以10 ** 9的速度运行1个部分
Freq Skew这是Freq的估计误差范围(再次以百万分率计)
Offset这是源的估计偏移量
Std Dev这是估计的样本标准偏差
Centos 8不在直接使用ntp,而是使用chrony作为时间同步,chrony既可以当服务器端广播时间,又可以作为客户端同步时间
安装
sudo dnf install chrony -y
sudo yum install chrony -y
Centos8使用firewalld服务对防火墙进行管理。放行ntp服务(123/udp)
firewall-cmd --add-service=ntp --permanent &&firewall-cmd --reload
作为服务器端
配置chrony服务端
sudo vim /etc/chrony.conf
删除配置自带的NTP服务器。换成国内阿里云的NTP服务器地址。
添加上游NTP服务器
server time1.aliyun.com iburst
server time2.aliyun.com iburst
server time3.aliyun.com iburst
允许 192.168.1.0/24 内的客户端通过这台服务器获取时间
allow 192.168.1.0/24
配置无误后,重启chrony服务,并配置开机自启动:
systemctl restart chronyd.service
systemctl enable chronyd.service
使用ss -tlunp | grep chrony或者 lsof -i:123 命令 检查chrony服务使用的123/udp端口是否启动成功
作为客户端
同样安装,然后修改客户端chrony配置文件
sudo vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst
#添加NTP服务器
server time1.aliyun.com iburst
server time2.aliyun.com iburst
server time3.aliyun.com iburst
如果有自建的chrony客户端也可以自行配置
server 192.168.1.30 iburst
重启chrony客户端服务,重启chrony服务,并配置开机自启动:
systemctl restart chronyd.service &&systemctl enable chronyd.service --now
查看同步状态
chronyc sources -v
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)