首页 > 其他分享 >时间服务器chrony(作时间同步)---------NTP时间同步的另一种表现

时间服务器chrony(作时间同步)---------NTP时间同步的另一种表现

时间:2023-10-16 15:14:59浏览次数:30  
标签:同步 chronyd NTP chrony 时间 服务器 客户端

Linux时间服务器chrony用法

原创 宫关 运维DevOps 2023-09-06 09:00 发表于广东 收录于合集 #linux17个 #chrony1个

Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机时间与标准的时钟服务器(NTP)同步,从而让计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务,Chrony可以理解为NTP的另一种实现。

chrony相比ntp的优势主要如下:

  • 能更精确、更快的同步时钟,传统ntp 需要几小时,而chrony 仅需要数秒钟或数毫秒即可完成时间同步

  • chrony 占用系统资源少,只有被唤起时才占用少部分CPU ,chrony 兼容ntpdate

  • 能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用

  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响

  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟

     

Chrony运行于UDP323端口,ntp运行于UDP123端口,使用chrony服务器可以同时为chrony客户端和ntp客户端提供服务

注意:chrony和ntp不能同时兼容的,只能运行一个,否则会出错

Chrony包括两个核心组件:

  • chronyd:一个后台运行的守护进程,用于调整内核中运行的系统时钟与NTP服务器同步。它确定服务器增减时间的比率,并对此进行调整补偿,即是服务器端进程也可以是客户端进程

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

 

CentOS7默认使用了chrony作为时间服务器,如果要使用ntp,需要额外安装

本例子演示通过一台机器部署chrony来作为时间服务器,另一台客户端来同步此时间

环境准备:

  • 192.168.49.224:时间服务器,需要安装chrony

  • 192.168.49.130:客户端服务器,需要同步时间

 

服务端

1、首先查看49.224机器的时间以及是否安装了chrony,如图:

图片

从上图可以看出,49.224服务器时间为2023年9月5号上午十点34,并且已经安装了chrony,如果没有安装,那么就执行如下命令安装和启动:

yum -y install chronysystemctl enable chronydsystemctl start  chronyd

2、查看chrony.conf配置文件,参数说明如下:

#配置时间服务器,以server开头,可添加多个server 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburst#根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中重启补偿校正driftfile /var/lib/chrony/drift#如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进makestep 1.0 3#启用一个内核模式,在该模式中,系统时间每1分钟会拷贝到实时时钟rtcsync#通过使用 hwtimestamp 指令启用硬件时间戳#hwtimestamp *#增加调整所需的可选择源的最小数量#minsources 2#允许指定网络的主机同步时间,不指定就是允许所有,默认不开启allow 192.168.49.130/16#当chrony提供的时间不可用,采用本地时间继续作为时间服务器让其他主机来同步时间local stratum 10#指定包含NTP验证密钥的文件#keyfile /etc/chrony.keys#指定存放日志文件的目录logdir /var/log/chrony

注意看上面的allow是允许哪个客户端来同步时间,如果不设置则所有客户端都可同步,修改完成后重启chrony,如下:

systemctl restart chronyd

 

客户端

客户端同步时间也使用chrony守护进程进行同步

1、首先查看客户端的时间,如图:

图片

从上图可以看出,与服务端的时间差了很多,现在进行同步下

2、安装chrony进程,执行如下命令:

yum -y install chronysystemctl enable chronydsystemctl start  chronyd

3、编辑配置文件chrony.conf,添加时间服务器为服务端地址,其余配置不用动,如图:

图片

4、启动chrony,未成功,查看错误日志/var/log/message,内容如下:

Sep  5 05:45:25 localhost systemd: Starting NTP client/server...Sep  5 05:45:25 localhost chronyd[18360]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)Sep  5 05:45:25 localhost chronyd[18360]: Could not change ownership of /var/run/chrony : Operation not permittedSep  5 05:45:25 localhost chronyd[18360]: Could not access /var/run/chrony : No such file or directorySep  5 05:45:25 localhost chronyd[18360]: Disabled command socket /var/run/chrony/chronyd.sockSep  5 05:45:25 localhost chronyd[18360]: Fatal error : Could not open /var/run/chrony/chronyd.pid : No such file or directorySep  5 05:45:25 localhost chronyd: Could not open /var/run/chrony/chronyd.pid : No such file or directorySep  5 05:45:25 localhost systemd: chronyd.service: control process exited, code=exited status=1Sep  5 05:45:25 localhost systemd: Failed to start NTP client/server.Sep  5 05:45:25 localhost systemd: Unit chronyd.service entered failed state.Sep  5 05:45:25 localhost systemd: chronyd.service failed.

上面的错误是因为当前系统是centos7.3,然后使用yum安装chrony后默认安装了最新版本的chrony,最新版本chrony不兼容7.3内核,因为要么安装对应7.3内核的chrony,要么升级系统版本,我这里直接升级系统版本,执行如下命令:

yum update -y

升级后重启chronyd即可成功

注意:如果没有报错,第4步可忽略

5、此时查看服务端和客户端的时间,一般客户端重启chronyd后几秒钟即可实现时间同步,如图:

图片

图片

注意:如果客户端和服务端时间相差较大,开启makestep 1.0 3参数是可以加快时间同步的,参数说明:

  • 1.0:指定每秒钟的步进量为 1.0 秒。这意味着系统时钟将以每秒 1.0 秒的速度进行调整

  • 3:表示允许的最大步进次数。如果时钟偏离太大,在 makestep 执行期间,默认情况下 chrony 将最多执行 3 次步进调整

     

使用 makestep 可以帮助快速纠正系统时钟的较大偏移,以便尽快与 NTP 服务器同步。然而,过多的大步调整可能会对系统稳定性产生一些负面影响,因此 makestep 的使用应慎重,并尽量在网络环境不稳定或初始同步时使用

常用的chronyc命令如下:

chronyc sources -v      #查看 ntp_serverschronyc sourcestats -v  #查看 ntp_servers 状态chronyc activity -v     #查看 ntp_servers 是否在线chronyc tracking -v     #查看 ntp 详细信息chronyc -a makestep     #强制同步下系统时钟

更多用法可自行网上搜索!!!

宫关

赞赏二维码喜欢作者

收录于合集 #linux  17个 上一篇linux时间服务器NTP搭建 以上内容包含广告 阅读 1153 运维DevOps   ​     关注后可发消息         复制搜一搜分享收藏划线    

人划线

==================================================================================================================

 

 

标签:同步,chronyd,NTP,chrony,时间,服务器,客户端
From: https://www.cnblogs.com/cherishthepresent/p/17767333.html

相关文章

  • 用友U8 同步许可提示failed 1091,sync license unknown error?
    软件版本:用友U816.5问题:许可管理--导入许可--在线同步许可报错解决办法:服务器上面找到U8的应用服务器,停止所有的U8服务;将软件安装目录/U8SOFT/SoftSeccurity/data中的.temp文件剪切放到其他的文件下做并备份;重新启动U8服务;打开许可管理--导入许可---重新导入许可文件,重新......
  • 多线程编程同步:互斥锁和条件变量
    多线程同步怎样同步多个线程或多个进程的活动?为允许在线程或进程间共享数据,同步通常是必需的。而互斥锁和条件变量是同步的基本组成部分。互斥锁用于保护临界区(criticalregion),以保证任何时刻只有一个线程在执行其中的代码,或者任何时刻只有一个进程在执行其中的代码。互斥......
  • C#固定时间间隔触发的计数器
    在运行需要很长时间完成的任务时,一般需要定期展示当前处理进度,比如批量文件复制时,显示复制的文件数和总传输字节数,这时候就需要用计数器对处理任务的完成度进行统计,并以一定时间间隔(如500ms)显示当前统计结果。实现上述功能需要使用一些内部变量来保存当前进度:longlast......
  • 使用轮廓分数提升时间序列聚类的表现
    我们将使用轮廓分数和一些距离指标来执行时间序列聚类实验,并且进行可视化让我们看看下面的时间序列:如果沿着y轴移动序列添加随机噪声,并随机化这些序列,那么它们几乎无法分辨,如下图所示-现在很难将时间序列列分组为簇:上面的图表是使用以下脚本创建的: https://avoid.overf......
  • 第二轮的时间陷阱——写在赛后
    我真的困死了。话说回来,最近我有了一个想法,鉴于本校高三的成绩实在不甚理想,所以我就开始怀疑竞赛看第二轮到底有没用。然后根据一些我的个人经验,提出了这样一个观点。竞赛的第二轮如果还和第一轮一样看,大概率没有进步甚至会退步。 首先,如果你是一个小众竞赛的学生,你在第二轮......
  • 时间(1)
    time(0)获取距离1970年1月1日的格林尼治(本初子午线所在地)时间差秒为单位与time_tt;time(&t)同理由此我们可以制作一个简易的报时装置:所需头文件stdio.h、stdlib.h、time.h  强迫症所需windows.h所需函数time()、printf()、Sleep()     强迫症所需system()首先我们要......
  • 07-建立时间和保留时间
    建立时间和保留时间首先,我们必须有一个观点,就是对任何一种触发器在时钟触发沿儿前后的一个小的时间窗口内,输入的信号必须稳定。这样的作用,也就是说我们时钟沿而来的时候,我们捕获的数据也是稳定的值,也就是确定的值。那如果不稳定呢,如果数据变化在这个时钟沿,那请问你这个时钟捕......
  • 同步和互斥概念
       ......
  • Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间
    场景SpringBoot+Mybatis+定时任务实现大数据量数据分表记录和查询:SpringBoot+Mybatis+定时任务实现大数据量数据分表记录和查询_mybatis定时任务创建日表_霸道流氓气质的博客通过以上分表实现的同结构不同表名之间的表,如何将一个表中的数据复制到另一个表中,且将日期字段进行同样的......
  • 深入理解 JavaScript 时间分片:原理、应用与代码示例解析
    JavaScript时间分片(TimeSlicing)是一种优化技术,用于将长时间运行的任务拆分为多个小任务,以避免阻塞主线程,提高页面的响应性和性能。本文将详细解释JavaScript时间分片的原理、应用场景,并通过代码示例帮助读者更好地理解和应用该技术。本文首发于:kelen.cc概念时间分片(TimeSl......