前言

在实际项目部署中,时间同步很重要,必须确保服务器集群时间一致,不然会导致很多问题出现。

NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC(世界统一时间),再配合各个时区的偏移调整就能实现精准同步对时功能。在Linux系统中,该NTP协议由运行在用户空间中的守护程序实现。

用户空间守护程序更新内核中运行的系统时钟。系统时钟可以通过使用各种时钟源来节省时间。通常,使用时间戳计数器(TSC)。TSC是一个CPU寄存器,用于计数自上次复位以来的周期数。它非常快,具有高分辨率并且没有中断。

chrony简介

Chrony是网络时间协议(NTP)的实现。您可以使用Chrony:

  • 使系统时钟与NTP服务器同步,
  • 使系统时钟与参考时钟(例如GPS接收器)同步,要将系统时钟与手动时间输入同步,
  • 作为NTPv4(RFC 5905)服务器或对等方以向网络中的其他计算机提供时间服务。
  • Chrony在各种条件下都表现良好,包括间歇性网络连接,网络严重拥塞,温度变化(普通计算机时钟对温度敏感)以及无法连续运行或在虚拟机上运行的系统。

通过Internet同步的两台计算机之间的典型精度在几毫秒内,而在LAN上的计算机则在几十微秒内。硬件时间戳或硬件参考时钟可以提高同步到亚微秒级别的两台计算机之间的准确性。

Chrony包含chronyd一个在用户空间中运行的守护程序,以及chronyc一个命令行程序,可用于监视其性能chronyd并在运行时更改各种操作参数。chronyd可以监测和由命令行实用程序来控制chronyc。该实用程序提供了一个命令提示符,该命令提示符允许输入许多命令来查询其当前状态chronyd并对其配置进行更改。默认情况下,chronyd仅接受chronyc本地实例的命令,但可以将其配置为也接受来自远程主机的监视命令。远程访问应受到限制。

安装

# Cneos7默认已安装,chrony守护程序 的默认位置是/usr/sbin/chronyd。命令行实用程序将安装到/usr/bin/chronyc
yum install chrony
# 启动命令
systemctl start chronyd
systemctl status chronyd
systemctl enable chronyd

配置文件

/etc/chrony.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 配置NTP服务器
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
# Record the rate at which the system clock gains/losses time.# 记录系统时钟获得/丢失时间的速率至drift文件中
driftfile /var/lib/chrony/drift# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
# 默认情况下,chronyd通过减慢或加快时钟速度来逐渐调整时钟。如果时钟与实际时间偏差太大,则需要很长时间才能纠正错误。这种方法叫做步进时钟(时间跳变)。
# 此处表示如果调整值大于1000秒,则这将使系统时钟步进,但仅在前十个时钟更新中。
makestep 1000 10# Enable kernel synchronization of the real-time clock (RTC).
# 启用RTC(实时时钟)的内核同步
rtcsync# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2# Allow NTP client access from local network.
# 只允许192.168.网段的客户端进行时间同步
#allow 192.168.0.0/16# Serve time even if not synchronized to a time source.
# NTP服务器不可用时,采用本地时间作为同步标准
#local stratum 10# Specify file containing keys for NTP authentication.
# 指定包含NTP验证密钥的文件
#keyfile /etc/chrony.keys# Specify directory for log files.
# 指定日志文件的目录
logdir /var/log/chrony# Select which information is logged.
# 将对系统增益或损耗率的估计值以及所做的任何转换记录的更改记录到名为的文件中tracking.log。
#log measurements statistics tracking# 其他未在默认配置文件的配置项
# 在第一次时钟更新之后,chronyd将检查每次时钟更新的偏移量,它将忽略两次大于1000秒的调整,并退出另一个调整。
maxchange 1000 1 2
# 该rtcfile指令定义中的文件名chronyd可以保存跟踪系统的实时时钟(RTC)的精度相关的参数。
rtcfile /var/lib/chrony/rtc

相关操作

  1. 检查时间是否同步
chronyc tracking

字段 说明
Reference ID 参考编号:这是IP计算机当前同步到的服务器的参考ID和名称(或地址)(如果有)。参考ID是一个十六进制数,以避免与IPv4地址混淆。
Stratum 层次:表示带有附加参考时钟的计算机距计算机的跳数。这样的计算机是第1层计算机,因此示例中的计算机距离两跳(也就是说,abc是第2层,并且与第1层同步)。
Ref time (UTC) 这是处理来自参考源的最后一次测量的时间(UTC)。
System time 在正常操作中,chronyd步进系统时钟,因为时标的任何跳跃都可能对某些应用程序产生不利影响。取而代之的是,通过稍微加快或降低系统时钟的速度来纠正系统时钟中的任何错误,直到错误被消除,然后恢复到系统时钟的正常速度
Last offset 最后偏移:上次时钟更新时本地偏移量
RMS offset 偏移值的长期平均值
Frequency “频率”是如果chronyd不对其进行校正,则系统时钟出错的速率。用ppm(百万分之一)表示。例如,值1 ppm表示当系统时钟认为它已提前1秒时,它实际上已相对于真实时间提前了1.000001秒。
Residual freq 显示了当前选定参考源的“剩余频率”。这反映了来自参考源的测量结果表明该频率应与当前使用的频率之间的任何差异
Skew 频率上的估计误差范围
Root delay 这是到第1层计算机的网络路径延迟的总和,该计算机最终从该第1层计算机同步。根延迟值以纳秒分辨率打印。在某些极端情况下,该值可以为负。(这可能发生在对称的对等方排列中,其中计算机的频率彼此不跟踪,并且相对于每台计算机的周转时间,网络延迟非常短。)
Root dispersion 根扩散:这是通过所有计算机累积到第1层计算机的总色散,最终从第1层计算机对其进行同步。色散是由于系统时钟分辨率,统计测量变化等引起的。根色散值以纳秒分辨率打印
Leap statusl 这是飞跃状态,可以是“正常”,“插入第二”,“删除第二”或“未同步
Update interval 更新间隔
  1. 检查时间来源
chronyc sources

字段 说明
M 这表示信号源的模式。^表示服务器,=表示对等方,并#指示本地连接的参考时钟
S 此列指示源的状态。“ *”表示chronyd当前同步到的源。“ +”表示可接受的来源,已与所选来源合并。“-”表示组合算法排除的可接受源。“?” 指示已失去连接性或其数据包未通过所有测试的源。“ x”表示一个时钟,它chronyd认为是虚假行情(其时间与大多数其他来源不一致)。“〜”表示时间似乎变化太大的来源。“?” 启动时也会显示条件,直到从中至少收集了3个样本为止
Name/IP address 这显示了IP源的名称或地址
Stratum 这显示了来源的层次,如其最近收到的样本中所报告的那样。层1表示具有本地连接的参考时钟的计算机。与第1层计算机同步的计算机位于第2层。与第2层计算机同步的计算机位于第3层,依此类推。
Poll 这显示轮询源的速率,以秒为单位的间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd 根据当前情况自动更改轮询速率
Reach 这显示了源的范围寄存器以八进制数字打印。该寄存器有8位,并在从源接收或丢失的每个数据包上进行更新。值377表示已收到所有最后八次传输的有效回复。
LastRx 此列显示多久以前从源接收到最后一个样本。通常以秒为单位。这些信件m,h,d或y表示分钟,小时,天或数年。10年的值表示尚未从此来源接收到任何样本。
Last sample 此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。
  1. 检查时间来源统计,-v可以指定 可选参数,表示冗长。在这种情况下,将显示额外的标题行,以提醒各列的含义。
chronyc sourcestats

字段 说明
Name/IP address 这是该行其余部分所涉及IP的NTP服务器(或对等方)的名称或地址或参考时钟的参考ID。
NP 这是当前为服务器保留的采样点数。通过对这些点进行线性回归可以估算漂移率和电流偏移。
NR 这是在最后一次回归后具有相同符号的残差游程数。如果此数字相对于样本数开始变得太小,则表明直线不再适合数据。如果运行次数太少,则chronyd丢弃较旧的样本,然后重新运行回归,直到运行次数变得可接受为止。
Span 这是最旧和最新样本之间的间隔。如果未显示单位,则该值以秒为单位。在示例中,间隔为46分钟。
Frequency 这是服务器的估计剩余频率,以百万分之一为单位。在这种情况下,计算机的时钟估计中所运行1份10 9相对于服务器慢。
Freq Skew 这是Freq的估计误差范围(再次以百万分之一为单位)。
Offset 这是源的估计偏移量
Std Dev 这是估计的样品标准偏差。
  1. 手动调整系统时钟,要立即步进系统时钟,以通过回转来绕过正在进行的任何调整,如果使用该rtcfile指令,则不应手动调整实时时钟。随机调整会干扰chrony需要测量实时时钟漂移的速率。
chronyc makestep

案例

需求:搭建一台NTP服务器,同步阿里云时间,当阿里云可不用时,使用本地时间,其他服务器同步这台服务器上的时间,确保时间一致。

  1. 搭建服务端
# Centos7.6已默认安装,查看状态
systemctl status  chronyd
# 注释其他server开头的配置,添加阿里云NTP公共时间同步服务器
vim /etc/chrony.conf
添加内容
server ntp.aliyun.com iburst
allow 0.0.0.0/0
local stratum 10
# 重启chronyd
systemctl restart   chronyd
# 查看时间同步源,查看时间同步进度
chronyc sources –v
  1. 配置客户端
# Centos7.6已默认安装,查看状态
systemctl status  chronyd
# # 注释其他server开头的配置,添加本地NTP公共时间同步服务器
vim /etc/chrony.conf
server 192.168.58.201 iburst
# 重启chronyd
systemctl restart   chronyd
# 查看时间同步源,查看时间同步进度
chronyc sources –v

Linux服务器时间同步chrony详解+案例相关推荐

  1. Linux服务器启动流程详解

    启动第一步 - 加载BIOS 启动第二部 - 读取MBR 启动第三部 - Boot Loader 启动第四部 - 加载内核 启动第五部 -用户层init依据inittab文件来设定运行等级 重新引导系 ...

  2. linux服务器操作系统日志都有哪些,Linux操作系统服务器日志管理详解

    Linux操作系统服务器日志管理详解 Linux操作系统服务器日志管理详解 日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下 ...

  3. 在linux系统上怎么架设服务器吗,Linux下各种服务器的架设详解

    Linux下各种服务器的架设详解 本站整理   发布时间:2009-03-10 12:10:57   作者:jb51.net   我要评论 ########DNS########bind 篇##### ...

  4. linux下Redis服务器部署过程详解

    一.前言 最近公司需要使用redis缓存服务器,所以就用了一个下午的时间部署了一个linux版本的Redis缓存服务 器.Redis缓存服务器是近两年比较热门的NOSQL系统之一,它是一个key-va ...

  5. linux安装openssh服务器的命令,ubuntu 安装openssh服务器的教程详解

    1.安装openssh 首先得安装 openssl 和zlib 安装openssl ---下载openssl-1.0.1j.tar.gz,解压到/usr/openssl/目录下进入解压目录 执行./c ...

  6. Linux下的时间详解【转】

    Linux下的时间详解 [转载]http://www.fangshanzi.com/linux-time-function-detail/ 1.首先来总结一下hwclock,这个容易晕: 1)/etc ...

  7. linux开机启动服务详解

    http://blog.163.com/sjt_linux/blog/static/19931031920126295452884/ linux开机启动服务详解(转) 2012-07-29 17:45 ...

  8. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发详解:基于最新的Linux 4.0内核> china-pub   天猫     dangdang   京东 China-pub 8月新书销售榜 推荐序一 技术日新月 ...

  9. GPS授时服务器工作原理详解

    GPS授时服务器工作原理详解 GPS授时服务器工作原理详解 目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态.随着计算机网络应用的不断涌现,计算机的时间同步问题成为愈来愈重要的事情.以 ...

最新文章

  1. 第六篇T语言实例开发,多点找色应用
  2. Vijos P1449 字符串还原【密码】
  3. Android中实现调用摄像头拍照并显示在ImageView中
  4. springmvc常用5种注解_砂石骨料线常用的5种破碎设备、5种筛分和制砂设备特点比较...
  5. 30秒实现Vue吸顶效果
  6. P4137 Rmq Problem / mex 主席树求mex
  7. 浏览器的安全设置在哪里?要如何设置
  8. HTMLCSS————CSS常用选择器及优先级
  9. 操作系统系统用c语言写,用C语言写关于操作系统的一个问题。
  10. docker安装部署和常用命令
  11. HDU 2819 Swap(二分图匹配)
  12. Notefile for Mac(记事本工具)支持12系统
  13. 那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)
  14. centos镜像 from_Docker 基于 CentOS 基础镜像开发环境的搭建与部署
  15. 解决nohup.out文件过大的方法
  16. 博士阶段能学到什么硕士学不到的东西
  17. 保护站点上已存在另一个具有相同实例 UUID的虚拟机_化合物晶形专利权利要求的表征及保护范围探讨...
  18. 客户开发篇 | 外贸业务员怎么打电话开发跟进客户呢?
  19. 个性注释,让你的代码飞起来
  20. xp系统可用的远程投屏软件_Windows XP电脑投屏

热门文章

  1. LIO-SAM运行报错[lio_sam_imuPreintegration-2]和[lio_sam_mapOptmization-5]解决
  2. 基于8086简易电子琴系统仿真设计-基于8086红外自动门控制系统设计-基于单片机8x8矩阵键盘两机串口通信-基于单片机8层电梯控制系统仿真设计-基于单片机ADC0809和DAC0832模数和数模设计
  3. css字体倾斜角度_字体倾斜怎么变正
  4. HOME键窥探Android的Activity生命周期
  5. HR 绩效管理流程检查表
  6. hdfs与hbase关系原理简述
  7. 绩差股成妖 妖王一日暴涨900%
  8. iqtree+ggtree绘制进化树教程
  9. EcoVadis认证获得奖牌的评分要求
  10. 新增用户ui界面的实现