配置chrony时间同步服务

article/2025/10/5 2:08:01

一、chrony简介

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

二、安装chrony

1、安装chrony

yum install chrony

两个主要程序:chronyd和chronyc

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

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

服务unit文件: /usr/lib/systemd/system/chronyd.service

监听端口: 323/udp,123/udp

配置文件: /etc/chrony.conf

配置文件详解

server :指明时间服务器地址,iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包。 包间隔通常为2秒,可加快初始同步速度

driftfile : 根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中,会在重启后为系统时钟作出补偿

rtcsync :启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)

allow NETADD/NETMASK 自己作为ntp服务器,让客户端来同步自己的时间

allow all:允许所有客户端主机;

deny NETADDR/NETMASK

deny all:拒绝所有客户端;

cmdallow / cmddeny : 可以指定哪台主机可以通过chronyd使用控制命令

bindcmdaddress : 允许chronyd监听哪个接口来接收由chronyc执行的命令

makestep : 通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个域值时调整系统时钟

local stratum 10 :即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端

2、配置chrony服务

systemctl start  chronyd
systemctl enable chronyd
systemctl status chronyd

3、修改配置文件,添加时间源

[root@localhost ~]# cat /etc/chrony.conf 
# Use public servers from the pool.ntp.org project.
# 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
##添加两个时间源,分别是阿里云和东北大学的时间同步服务器,iburst表示加急
server time1.aliyun.com iburst
server time.neu.edu.cn iburst# Record the rate at which the system clock gains/losses time.
##根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
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根据需求减慢或加速时间调整,
# 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。
# 该指令强制chronyd调整时期,大于某个阀值时(例如1秒)步进调整系统时钟。
# 只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。
makestep 1.0 3# Enable kernel synchronization of the real-time clock (RTC).
# 将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
rtcsync# Enable hardware timestamping on all interfaces that support it.
# 通过使用hwtimestamp指令启用硬件时间戳
#hwtimestamp *# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2# Allow NTP client access from local network.
# 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器
#allow 192.168.0.0/16
allow all# Serve time even if not synchronized to a time source.
#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.
#log measurements statistics tracking

4、测试
重启服务

systemctl restart chronyd
##显示当前chronyd正在同步的时间源的信息

在这里插入图片描述
三、相关命令

chronyc [OPTION]... [COMMAND]...##查看帮助
chronyc help##显示有多少NTP源在线/离线
[root@localhost ~]# chronyc activity
200 OK
2 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

强制同步系统时间(可以在)

[root@localhost ~]# chronyc -a makestep
200 OK

检查是否对特定主机可访问当前服务器

[root@localhost ~]# chronyc accheck 192.168.145.130
208 Access allowed
[root@localhost ~]# chronyc accheck 192.168.145.2
208 Access allowed
[root@localhost ~]# chronyc accheck 10.10.10.102
208 Access allowed

显示当前时间源的同步信息

[root@localhost ~]# chronyc sources 
210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    77     3    -13ms[  -89ms] +/-   89ms
^- time.neu.edu.cn               1   6    77     1  -6618us[-6618us] +/-  133ms
##加v表示显示详细信息
[root@localhost ~]# chronyc sources -v
210 Number of sources = 2.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    77    10    -13ms[  -89ms] +/-   89ms
^- time.neu.edu.cn               1   6    77     7  -6618us[-6618us] +/-  133ms

显示当前时间源的同步统计信息

[root@localhost ~]# chronyc sourcestats 
210 Number of sources = 2
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
203.107.6.88                9   6   524   -282.705   1115.902    -16ms    65ms
time.neu.edu.cn             9   5   521   +265.222   1210.449   +177ms    76ms
##加-v显示详细信息
[root@localhost ~]# chronyc sourcestats -v
210 Number of sources = 2.- 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
==============================================================================
203.107.6.88                9   6   524   -282.705   1115.902    -17ms    65ms
time.neu.edu.cn             9   5   521   +265.222   1210.449   +178ms    76ms

手动添加一台新的NTP服务器

##添加一台复旦大学的时间同步服务器
[root@localhost ~]# chronyc add server ntp.fudan.edu.cn
200 OK
[root@localhost ~]# chronyc sources -v
210 Number of sources = 3.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6   377    41   +139ms[ +143ms] +/-  179ms
^- time.neu.edu.cn               1   6   377   103    +38ms[  +42ms] +/-   92ms
^? 10.108.68.100                 0   7     0     -     +0ns[   +0ns] +/-    0ns
##临时添加,重启服务会失效,若想永久生效可以写入配置文件中

报告已访问本服务器的客户端列表

[root@localhost ~]# chronyc clients 
Hostname                      NTP   Drop Int IntL Last     Cmd   Drop Int  Last
===============================================================================

显示系统的时钟性能参数

[root@localhost ~]# chronyc tracking
Reference ID    : CB6B0658 (203.107.6.88)
Stratum         : 3
Ref time (UTC)  : Wed Aug 18 12:14:04 2021
System time     : 0.013744237 seconds fast of NTP time
Last offset     : +0.011746962 seconds
RMS offset      : 0.093312807 seconds
Frequency       : 3.476 ppm fast
Residual freq   : +32.767 ppm
Skew            : 95.284 ppm
Root delay      : 0.124015316 seconds
Root dispersion : 0.157856569 seconds
Update interval : 65.7 seconds
Leap status     : Normal

其他时间相关命令
设置时区

##查看当前系统时区:
[root@localhost ~]# timedatectlLocal time: Wed 2021-08-18 20:31:45 CSTUniversal time: Wed 2021-08-18 12:31:45 UTCRTC time: Wed 2021-08-18 12:31:45Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yes
NTP synchronized: noRTC in local TZ: noDST active: n/a##查看所有可用的时区:
[root@localhost ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
....##查看上海时区:
[root@localhost ~]#  timedatectl list-timezones |  grep  "Asia/Shanghai"
Asia/Shanghai
##设置当前系统为Asia/Shanghai上海时区:
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai##修改日期时间:
[root@localhost ~]# timedatectl set-time “2021-08-18 10:30:00”
##开启NTP: 
[root@localhost ~]# timedatectl set-ntp true/flase

http://chatgpt.dhexx.cn/article/9QY2i1aA.shtml

相关文章

乐优商城项目

目录 3.4.创建父工程 3.5.创建EurekaServer 3.5.1.创建工程 3.5.2.添加依赖 3.5.3.编写启动类 3.5.4.配置文件 3.6.创建Zuul网关 3.6.1.创建工程 3.6.2.添加依赖 3.6.3.编写启动类 3.6.4.配置文件 3.6.5.项目结构 3.7.创建商品微服务 3.7.1.微服务的结构 3.7.5.…

Java之Spring Data Elasticsearch一篇文章从入门到实战

Elasticsearch提供的Java客户端有一些不太方便的地方: 很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你应该懂的需要自己把对象序列化为json存储查询到结果也需要自己反序列化为对象 因此,我们这里就不讲解原生的Elasticsearch客…

【Elasticsearch】整合Spring Data Elasticsearch

整合Spring Data Elasticsearch 如何查看官方文档(了解) 官方文档:Java High Level REST Client | Java REST Client [6.8] | Elastic 下面是获得文档的方式(可以不用看): 步骤一:查询“文档…

ElasticSearch高级篇

注:该文档是网上资源,该文档通俗易懂,我已经按照文档学习完了,后期我会加入自己的实践内容。 0.学习目标 独立安装Elasticsearch会使用Rest的API操作索引会使用Rest的API查询数据会使用Rest的API聚合数据掌握Spring Data Elastics…

自己挖坑自己填 spring-data-elasticsearch 4.0.0.M4 简单实践

前几天安装了elasticsearch7.6.1,今天准备实践下spring-data-elasticsearch,没想到4.0改动大资料少,全靠官方文档撑着 文章目录 搭建环境编写yml配置创建实体类 基于Spring Data的CRUD直接从方法名称派生查询自定义的查询 ElasticsearchRestTemplate的使用indexOperations 索引…

Elasticsearch集群,java操作es

今日内容 集群和分布式Elasticsearch集群Elasticsearch客户端 java代码取操作ES有三种方式 1、es提供的原生的操作方式 在es 8.0后会移除 2、es提供的rest风格的操作方式 3、SpringDataElasticSearch的方式 第一章 集群和分布式 集群和分布式的概念有联系也有区别,我…

数据结构(Java)-排序算法-插入排序

插入排序法思想: 插入排序的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它依次与有序表元素进行比…

ES基础篇-11-Spring提供的elasticsearch组件:Spring Data Elasticsearch

1. 简介 1.1.什么是SpringDataElasticsearch SpringDataElasticsearch(以后简称SDE)是Spring Data项目下的一个子模块。 查看 Spring Data的官网:http://projects.spring.io/spring-data/ Spring Data 的使命是给各种数据访问提供统一的编…

91-Lucene+ElasticSeach核心技术

LuceneElasticSeach 什么是全文检索: 数据分类: 我们生活中的数据总体分为两种:结构化数据和非结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等 非结构化数据:指…

SpringBoot集成Elasticseach

目录 一、Elasticseach介绍 1.简单介绍 2.对比关系: 3.详细说明: 4.查出数据的解释 二、SpringBoot集成Elasticseach 1.引入依赖 2.添加配置 3.创建pojo类与索引对应 4.SpringData封装了基础的增删改查,自定义增删改查 5.测试方法-…

Windows系统下载安装MinGW(包括32位和64位)

一、MinGW简介 MinGW是是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。MinGW是从Cygwin(1.3.3版)基础上发展而来。GCC支持的语言大多在MinGW也受支持,其…

MySQL寻找特定字符后的字符串

“日边清梦断,镜里朱颜改” 在操作数据库的某些情况下,我们需要对其中一字段的最后几个字做修改,如下图,把老师改为学生 我找了半天,好像没找到mysql中有合适的函数,能找到最后一个/符号并且修改后面的字符串.需要用好几个函数嵌套使用.如下: select 处理前 as status,org…

支付宝支付功能的实现

支付宝支付功能实现 一.环境准备 二.配置沙箱环境 1.浏览器搜索 支付宝开放平台 2.找到开发服务,选择沙箱 3.根据文档提示,一步步配置 4.配置完成后的样子 5.下载好支付宝手机开放平台助手,可以获取应用私钥 **注意:**应用公…

针对Spring/Gradle启动失败的一些通用解决方案

文章目录 0 前言1 更改Gradle JVM的Java JDK1.1 执行JUnit测试时,Gradle报错 0 前言 当你对Spring/Gradle启动失败的错误信息一筹莫展时,不妨试试以下这些通用的解决方案 1 更改Gradle JVM的Java JDK Settings -> Build, Execution, Deployment -&…

13123

111 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不…

编译JSqlparser

这个东西是用来解析sql的。既然要编译源码,第一步当然要下载源码了。 要下源码当然是到世界最大同志网站了: https://github.com/JSQLParser/JSqlParser 项目导入idea,缺少源码,原来需要javacc来生成代码。 自然我们需要安装javacc这个东西&…

jsqlparser:修改语法定义(JSqlParserCC.jjt)实现UPSERT支持Phoenix语法ON DUPLICATE KEY IGNORE

最近在用jsqlparser4.5解析SQL时遇到了一个问题, 如下是apache phoenix的UPSERT语句 UPSERT INTO TEST (ID, COUNTER) VALUES (123, 0) ON DUPLICATE KEY IGNOREON DUPLICATE KEY IGNORE即为当主键重复时忽略,这与MySQL的IGNORE语法不同: …

jsqlparser mysql_java sql解析器比较druid sql parser vs jsqlparser vs fdb-sql-parser

先上结论。 功能上:druid sql parser(支持分区、WITH、DUAL等。使用mysql语法解析时,已知oracle的一些操作符会被转为mysql,如|| 转为OR。使用oracle解析器时,union all里面的括号会被移到外面,从而导致可能执行出错) …

JSqlParser4.3版本无法解析mysql中JSON_OBJECT函数抛出ParseException异常

2022年3月31日,找了一下午的bug bug 已经提交issues,详情请看GitHub,地址:https://github.com/JSQLParser/JSqlParser/issues/1504 使用JSqlparser4.3版作者提供的补丁版后解决,下载地址:https://download.…

JSqlparser 使用攻略(高效的SQL解析工具)

JSqlparser github地址 目录 Maven 引用远程仓库依赖包 SQL解析获取SQL中的信息创建Select的方式创建Select(非SQL String 创建) Insert 插入字段和值where条件中字段替换解析SQL例子获取所有tableNames自动生成别名SQL函数单表where条件拼装JOIN 拼装 校…