Linux里面chrony原理是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux里面chrony原理是啥?相关的知识,希望对你有一定的参考价值。

参考技术A Chrony是NTP(Network Time Protocol,网络时间协议,服务器时间同步的一种协议)的另一种实现,与ntpd不同,它可以更快且更准确地同步系统时钟,最大程度的减少时间和频率误差。
在CentOS6中,默认是使用ntpd来同步时间的,但ntpd同步时间并不理想,有可能需要数小时来同步时间。而且ntp也已经很老了。所以在Centos7中换成了chrony来实现时间同步。chrony并且兼容ntpd监听在udp123端口上,自己则监听在udp的323端口上。
如果在chrony配置文件中指定了ntp服务器的地址,那么chrony就是一台客户端,会去同步ntp服务器的时间,如果在chrony配置了允许某些客户端来向自己同步时间,则chrony也充当了一台服务器,所以,安装了chrony即可充当客户端也可以充当服务端。一般我们只需要做客户端就好,不需要对外提供时间同步功能。
一、chrony是两个用来维持计算机系统时钟准确性的程序,这两个程序命名为chronyd和chronyc。
chronyd是一个在系统后台运行的守护进程。主要用于调整内核中运行的系统时间和时间服务器同步,他根据网络上其他时间服务器时间来测量本机时间的偏移量从而调整系统时钟。对于孤立系统,用户可以手动周期性的输入正确时间(通过chronyc)。在这两种情况下,chronyd决定计算机快慢的比例,并加以纠正。chronyd实现了NTP协议并且可以作为服务器或客户端。
chronyc是用来监控chronyd性能和配置其参数的用户界面。他可以控制本机及其他计算机上运行的chronyd进程。
服务unit文件: /usr/lib/systemd/system/chronyd.service
监听端口: 323/udp,123/udp
配置文件: /etc/chrony.conf

二、chrony 的优势:
更快的同步,从而最大程度减少了时间和频率误差,对于并非全天 24 小时运行的虚拟计算机而言非常有用
能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用
在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响
在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性
无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟

Linux时间同步服务chrony

1、简介

Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 。它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势。其用法也很简单。Chrony有两个核心组件,分别是:

chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。

chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作

NTP使用123/UDP端口协议

2、使用方式

1)系统默认已经安装,如未安装,请执行以下命令安装:
yum install chrony -y

2)启动并加入开机自启动
systemctl enable chronyd.service
systemctl start chronyd.service

3)查看状态
systemctl status chronyd.service

4)配置文件详解
cat /etc/chrony.conf

使用pool.ntp.org项目中的公共服务器。以server开始,理论上你想添加多少时间服务器都可以。

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

根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。

driftfile /var/lib/chrony/drift

chronyd根据需求减慢或加速时间调整,

在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。

该指令强制chronyd调整时期,大于某个阀值时步进调整系统时钟。

只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。

makestep 1.0 3

将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。

rtcsync

Enable hardware timestamping on all interfaces that support it.

通过使用hwtimestamp指令启用硬件时间戳

#hwtimestamp eth0
#hwtimestamp eth1
#hwtimestamp *

Increase the minimum number of selectable sources required to adjust

the system clock.

#minsources 2

指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器

#allow 192.168.0.0/16
#deny 192.168/16

Serve time even if not synchronized to a time source.

local stratum 10

指定包含NTP验证密钥的文件。

#keyfile /etc/chrony.keys

指定日志文件的目录。

logdir /var/log/chrony

Select which information is logged.

#log measurements statistics tracking

5)设置时区
查看当前系统时区
$ timedatectl
Local time: Fri 2018-2-29 13:31:04 CST
Universal time: Fri 2018-2-29 05:31:04 UTC
RTC time: Fri 2018-2-29 08:17:20
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

如果你当前的时区不正确,请按照以下操作设置。

查看所有可用的时区:

$ timedatectl list-timezones
筛选式查看在亚洲S开的上海可用时区:

$ timedatectl list-timezones | grep -E “Asia/S.*”
Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk

设置当前系统为Asia/Shanghai上海时区:
$ timedatectl set-timezone Asia/Shanghai

设置完时区后,强制同步下系统时钟:
$ chronyc -a makestep
200 OK

服务器端和客户端修改/etc/chrony.conf配置文件,添加
server xxxx.xx.xx.xx iburst

6)在客户端执行
chronyc sources //刷新一下同步情况
chronyc sources -v //查看时间同步源的状态
netstat -antpul | grep chron //查看该服务端口,并开通相应端口

以上是关于Linux里面chrony原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Linux里面cc攻击和Ddos攻击区别是啥?

请问谁知道概率霍夫变换的原理是啥吗?

epoll为啥这么快?epoll的实现原理是啥?

加速传感器作用与原理是啥?

java 中 System.out.print .out是啥原理为啥可以直接用?

js中sort()对数组排序的原理是啥?为何无法降序字母