NTP时钟同步服务器
目录
一、什么是NTP?
二、计算机时间分类
三、NTP如何工作?
四、NTP时钟同步方式(linux)
五、时间同步实现软件(既是客户端软件也是服务端软件)
六、chrony时钟同步软件介绍
七、/etc/chrony.conf配置文件介绍
八、chronyc命令
九、网络公共NTP服务
十、Chrony时钟同步搭建案例
一、什么是NTP?
网络时间协议(NTP)是时间同步协议。它用于在服务器和客户端之间同步时间。服务器端使用的是UDP端口号是123和323。使用NTP的目的是使所有设备的时间与网络上时钟服务器的时间同步,以使网络上所有设备的时间保持一致。对于提供NTP服务的服务器,它既可以作为时间源接受来自其它客户端的同步,自己本身也可做为客户端向网络上的其它时钟服务器同步时间。

二、计算机时间分类
1、系统时间:一般来说就是我们使用date命令查看到的时间,linux系统下所有时间的调用都使用的是系统时间,除了直接访问硬件时间的命令如: clock。
2、硬件时间(RTC): 主板BIOS中的时间,由主板电池供电来维护运行,系统在开机时会读取硬件时间,并根据硬件时间来设置系统时间,系统开机之后时间就由系统来管理,不在受硬件时间的控制。
三、NTP如何工作?

1.设备A向设备B发送NTP消息。消息离开设备A时带有时间戳。时间戳为10:00:00 am(T1)。
2.当此NTP消息到达设备B时,设备B添加其自己的时间戳。时间戳是11:00:01 am(T2)。
3.当此NTP消息离开设备B时,设备B添加其自己的时间戳并将时间戳更改为11:00:02(T3)。
4.设备A收到响应消息后,设备A的本地时间为上午10:00:03(T4)。
5.此时,设备A具有足够的信息来计算两个重要参数:
1、NTP数据包的往返时延Delay=设备A发送消息到收到消息之间所经历的时间-设备B处理消息数据所消耗的时间=(T4-T1)-(T3-T2)=2秒。
2、设备A和设备B之间的时间差offset(平均值)=设备B当前时间-设备A当前时间≈((设备A发给设备B两者当时时间差)+(设备B回复设备A两者当时时间差))/2=1小时。
说明:由于设备A发送给设备B的时间,在设备B收到之时、设备A当前的时间就从之前10点增加到了消息在到达设备B时途中所花费的时间,因此T2-T1的时间差就多增加消息发给设备B途中所花费的时间,并非两者实时的时间差。同理T3-T4的时间差值就少计算了设备B回复给设备A消息途中花费的时间差,并不是设备A收到消息当时本地的时间减去此时设备A的时间,因为在设备A收到消息时,设备B的时间已经在消息回复途中增加了。因此为了尽可能保持两者时间的同步,时间差取的是平均值并非丝毫不差。
四、NTP时钟同步方式(linux)
1、直接同步:
使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的计划任务,当前服务器时间是13点,但标准时间是11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。
2、平滑同步:
使用ntpd进行时钟同步,可以尽可能小的减少系统计划任务数量的重复执行,它每次同步时间的偏移量不会太陡,是慢慢来的。正因这样,ntpd平滑同步可能消耗的时间会比较常,一时间难以看出系统时间变化。

描述:假设设备A当前的时间是13:00,通过联系时钟同步服务器计算推算出了当前的标准时间是8:00、与标准时间差5h。如果此时设备A采用平滑同步时间的工作方式,那么设备A并不会直接将当前时间减少5h,调整到标准时间8:00。而是采用平滑的、一点一点的缩小与标准时间差。比如:一开始设备A先将本地当前时间13:00向前偏移2h,调整到11:00点;然后时间从11:00开始向后接着计时,其间设备A就重复执行了从11:00到13:00之间预先设置好的计划任务如黄色框区域所包含的计划任务。当设备A时间到了15:00时又进行了一次时间的平滑同步,将当前系统时间由15:00点向前偏移了2h,假设偏移后的时间是14:00;之后系统开始从14:00继续开始计时,其间设备A只是重复执行了第二个黄色框时间内的计划任务。当设备系统时间为19:00时,设备A又开始进行时间的平滑同步,将系统当前时间向前偏移1h变成18:00;然后继续开始计时,其间同样只是重复执行了从18:00到19:00之间第三个黄色框时间内的计划任务。通过以上过程,设备A总共执行了3次时间的平滑同步:减2h---->减2h----->减1h。设备A系统时间总共减少了5个小时,最终减少的时间和标准时间差相同以此通过几次时间平滑偏移完成了系统时间和标准时间的同步一致,并且尽可能小的减少了系统内的计划任务因时间调整重复执行的不同类型任务数量。
五、时间同步实现软件(既是客户端软件也是服务端软件)
*由于客户端系统时间经常时而不准,为了能让其在任何情况下向NTP服务器自动同步时间,需保持客户、服务端程序在后台持续运行。
1、ntp: 将主机系统时间和世界协调时间UTC进行同步,在局域网内误差可达0.1ms,在互联网内绝大地方时间误差控制在1-50ms。
2、chrony: 红帽系统8.0以后系统默认安装的ntp服务软件,可使系统时间与NTP服务器、GPS接收器以及手表进行同步。还可以作为NTP服务器为其它客户端提供时钟同步服务。在局域网内误差控制在几十微秒,在互联网上时间同步误差控制在几十毫秒内,时间同步更精准。
六、chrony时钟同步软件介绍
两个主要程序:
1、chronyd: 后台运行的NTP服务守护进程,用于将内核控制的系统时间和时钟服务器时间进行同步。并根据从NTP服务器获取的时间信息计算出标准时间差,并以此对系统时间进行补偿调整。
2、chronyc: 客户命令行工具,用于监控性能并进行多样化配置。它既可以在运行chronyd实例的计算机上进行使用,也可以在一台不同的远程计算机上进行使用。
服务单元unit文件: /usr/lib/systemd/system/chronyd.service
监听端口: 323/udp,123/udp(为了兼容老版红帽系统自带的的ntp时间同步软件)
配置文件:/etc/chrony.conf
七、/etc/chrony.conf配置文件介绍
- server-----指定本机要同步的NTP服务器IP地址或域名。iburst选项表示时间源可达时,一下子发8个数据包而不是一个数据包向服务器同步时间。包间隔为2s,可加速用户初始时间同步速度。
 - driftfile----根据从时间源获取的标准时间计算出系统本身调整时间的差值,并将其记录到此处指定的文件中,以便系统重启后为调整系统时间做补偿。
 - rtcsync----开启内核模式。使内核控制的系统时间每11分钟拷贝到实时时间RTC,即硬件时间内。
 - allow/deny -----设置是否允许某台主机、子网、或者网络访问到本系统NTP服务。
 - cmdallow/cmddeny-------指定那台主机可以通过chronyd使用控制命令。
 - bindcmdaddress-----指定chronyd时间同步服务所监听的接口IP地址
 - makestep------为客户端的时钟同步设置时间差阈值。只有用户系统时间偏差超过所允许的时间阈值时,进行系统时间的调整。
 - local stratum 10----即使上面server指令中的时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端。我们知道NTP组网架构有层级划分:如阿里云服务器为企业内部的A1设备授时------>A1设备又为企业的A2、A3设备提供时间同步服务------->A3设备又给企业内的A4设备提供NTP服务。这样站在阿里云服务器角度,阿里云服务器就属于0层---->A1设备属于1层------>A2、3设备属于2层------>A4设备就属于3层了(层:客户机到达时钟源服务器中间所经历的其它NTP服务器跳数)。因此,"local stratum 10"就表示在server处的服务器不可访问时,本系统作为NTP服务器只给位于其下(从本服务器开始算起:服务器本身属于0层)10层内的设备提供授时服务。
 
八、chronyc命令
help----查询更多有关chronyc的交互命令
accheck-----指定客户端地址或域名检查其是否可以访问到本地ntp服务器
activity-----显示当前有多少NTP服务源在线/离线
sources [-v]-----显示当前时间源的同步信息
sourcestats [-v]------显示当前时间源的同步统计信息
add server ------手动添加一台新的NTP服务器(并不会保存到配置文件中)
clients -----查看有哪些客户端已访问到本服务器
delete ------手动删除NTP服务器
settime -----手动设置守护进程时间
sracking-------显示系统时间信息
九、网络公共NTP服务
cn.pool.ntp.org------虚拟化集群的ntp服务器
ntp.aliyun.com-----阿里云linux公共NTP服务器
time.pool.aliyun.com------阿里云windows的NTP服务器
s1b.time.edu.cn--------清华大学NTP服务器
210.72.145.44--------国家授时中心服务器
十、Chrony时钟同步搭建案例
实验环境:

实验描述:
NTP-Server/Client扮演客户机角色向阿里云同步时间、同时也扮演内网NTP时钟源服务器角色向内网主机Cliet提授时服务。
注意:
1、客户端系统时间与NTP服务器系统时间差过大,客户端将有可能不会执行时间同步。
2、若本机系统为时钟同步的Server和Client两种角色,当本地系统无法访问指定的服务器进行时钟同步时,则默认也不允许向其它的客户机提供授时服务。除非手动配置允许对本地客户端授时的层级。
Server端:
1、安装NTP服务客户端软件chrony(红帽8.0默认已安装)。

2、查看主机系统时间和硬件时间,为了时间同步测试将系统和硬件时间调错。

2、修改/etc/chrony.conf配置文件。
本系统向阿里云NTP服务器同步系统时间:

允许企业内部的主机访问本NTP服务:

3、防火墙放行chrony监听的UDP_323和123端口。

4、开启chronyd时钟同步服务

5、查看系统时间同步状况。

6、在NTP服务器端测试客户端能否访问到本机提供的ntp服务(可省略)。

Client端:
1、安装chrony客户端软件(红帽8.0默认已安装)。

2、修改/etc/chrony.conf配置文件来指定本机所要向哪台NTP时钟源同步时间。

3、将系统时间调错,用于测试后面同步效果。

4、开启chronyd服务,并查看chrony.conf配置文件指定的NTP服务器是否处于运行状态。

5、查看系统时间同步状况

6、切换到ntp服务器查看有哪些客户机已访问到本服务器(可省略)

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!
相关文章:
NTP时钟同步服务器
目录 一、什么是NTP? 二、计算机时间分类 三、NTP如何工作? 四、NTP时钟同步方式(linux) 五、时间同步实现软件(既是客户端软件也是服务端软件) 六、chrony时钟同步软件介绍 七、/etc/chrony.conf配置文件介…...
webassembly003 ggml GGML Tensor Library part-2 官方使用说明
https://github.com/ggerganov/whisper.cpp/tree/1.0.3 GGML Tensor Library 官方有一个函数使用说明,但是从初始版本就没修改过 : https://github1s.com/ggerganov/ggml/blob/master/include/ggml/ggml.h#L3-L173 This documentation is still a work in progres…...
ES主集群的优化参考点
因为流量比较大, 导致ES线程数飙高,cpu直往上窜,查询耗时增加,并传导给所有调用方,导致更大范围的延时。如何解决这个问题呢? ES负载不合理,热点问题严重。ES主集群一共有几十个节点࿰…...
全国范围内-二手房小区数据-2023-8月更新
收录融合去重多个平台数据:80万,仅供数字参考 数据纬度字段名注释枚举值基础信息id主键id:名称城市来源生成 md5值00001073838501125ec4473463ead9ccname名称瑞祥安文创园address地址(朝阳)双桥路东柳村口南口lng经度116.581903lat纬度39.89…...
第4章 循环变换
4.1 适配体系结构特征的关键技术 由于高级语言隐藏了底层硬件体系结构的大量细节,如果不经过优化直接将高级程序设计语言编写的程序部署在底层硬件上,往往无法充分利用底层硬件体系结构的处理能力。 算子融合不仅可以提…...
spring cloud使用git作为配置中心,git开启了双因子认证,如何写本地配置文件
问题 spring cloud使用git作为配置中心,git开启了双因子认证,死活认证不成功!!!!! 报错关键字 org.eclipse.jgit.api.errors.TransportException: https://git.qualink.com/zhaoxin15/sc-confi…...
JVM内存管理、内存分区:堆、方法区、虚拟机栈、本地方法栈、程序计数器
内存管理 内存分区 线程共享 堆 存放实例,字符串常量(直接引用),静态变量,线程分配缓冲区(TLAB线程私有)。垃圾收集器管理的区域 方法区 非堆,和堆相对的概念。存储已被虚拟机加载的…...
L1-047 装睡(Python实现) 测试点全过
题目 你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找…...
Mysql优化原理分析
一、存储引擎 1.1 MyISAM 一张表生成三个文件 xxx.frm:存储表结构xxx.MYD:存储表数据xxx.MYI:存储表索引 索引文件和数据文件是分离的(非聚集) select * from t where t.col1 30; 先去t.MYI文件查找30对应的索引…...
软考高级系统架构设计师系列案例考点专题一:软件架构设计
软考高级系统架构设计师系列案例考点专题一:软件架构设计 一、考点梳理及精讲1.质量属性判断与质量属性效用树2.必备概念3.架构风格对比4.MVC架构5.J2EE架构6.面向服务的架构SOA7.企业服务总线ESB一、考点梳理及精讲 系统架构设计师方面的知识在案例分析中每年必考1~2题,并且…...
css实现垂直上下布局的两种常用方法
例子:将两个<span>元素在<div>内垂直居中放置. 方法一:使用 Flexbox 来实现。 在下面的示例中,我将为 <div> 元素添加样式,使其成为一个 Flex 容器,并使用 Flexbox 属性将其中的两个 <span>…...
【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )
文章目录 一、NavigationUI 类简介二、NavigationUI 类使用流程1、创建 Fragment2、创建 NavigationGraph3、Activity 导入 NavHostFragment4、创建菜单5、Activity 界面开发 NavigationUI 的主要逻辑 ( 重点 )a、添加 Fragment 布局b、处理 Navigation 导航逻辑 ( 重点 )c、启…...
基于NAudio实现简单的音乐播放器
《测试.net开源音频库NAudio》介绍了使用NAudio实现音乐播放和录音的基本用法,本文基于NAudio的音乐播放功能实现简单的mp3音乐播放器程序,主要实现以下功能: 1)导入文件夹中的mp3音乐文件,直接导入多个mp3音乐文件…...
C++之“00000001“和“\x00\x00\x00\x01“用法区别(一百八十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
Java“魂牵”京东店铺所有商品数据接口,京东店铺所有商品API接口,京东API接口申请指南
要通过京东的API获取店铺所有商品数据,您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过京东开放平台API获取整店商品数据: 首先,确保您已注册成为京东开放平台的开发者,…...
vuex详细用法
Vuex是一个专门为Vue.js应用程序开发的状态管理模式。它可以帮助我们在Vue组件之间共享和管理数据,以及实现更好的代码组织和调试。 在Vue.js中,组件之间的数据通信可以通过props和事件来实现。然而,随着应用程序规模的增长,组件…...
微前端-monorepo-无界
文章目录 前言一、微前端二 、monorepo三 、pnpm硬链接软链接(符号链接)幽灵依赖依赖安装耗时长monorepo项目搭建子模块复用 四、无界接入无界无界预加载无界传参 总结 前言 本文主要记录微前端框架 无界 的使用与理解以及monorepo代码管理方式。 一、微…...
阿里云矢量图标透明背景转换/展示时变为黑色解决方法
下载了一个矢量图标,背景是透明的 上传到minio然后在前端展示,发现透明(白色)的地方变成黑色了 处理方法:去除透明的底色。使用window的画图程序打开保存一遍,将透明色转为白色 OK...
Linux之Shell(二)
Linux之Shell 函数系统函数basenamedirname 自定义函数 正则表达式入门常规匹配常用特殊字符 文本处理工具cutawk 综合应用案例归档文件发送消息 函数 系统函数 basename 基本语法 basename [string / pathname] [suffix] 功能描述:basename 命令会删掉所有的前缀…...
以太网POE供电浪涌静电防护推荐TVS二极管
POE是一种传输技术,可在以太网电缆上传输电力和数据。1000M千兆以太网POE供电端口广泛用于安防、视频监控以及智能电网等工业系统,以实现系统内的数据、视频传输、流量控制、以及通过总线实现供电。由于工业以太网工作环境非常严酷苛刻,对于以…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
