【Linux】NTP时间服务器Chrony配置详解_chrony服务器配置-程序员宅基地

技术标签: timedatectl  chrony  时钟同步  linux  NTP  chronyc  Linux从入门到精通  

博主 "开着拖拉机回家"带您 Go to New World.

个人主页——开着拖拉机回家_大数据运维-程序员宅基地

希望本文能够给您带来一定的帮助文章粗浅,敬请批评指正!

感谢点赞和关注 ,每天进步一点点!加油!

目录

博主 "开着拖拉机回家"带您 Go to New World.

一、NTP和chrony概述

二、Chrony安装与配置

2.1 安装chrony

2.2 修改配置

2.3 timedatectl 查看时间同步

2.4 chronyc 命令

三、NTPServer 为本机(内网 )

四、NTPServer 从阿里云同步时间(外网)


一、NTP和chrony概述


网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。

Chrony 是网络时间协议 (NTP) 的通用实现。Chrony是一个开源的软件,如果在chrony配置文件中指定了ntp服务器的地址,那么chrony就是一台客户端,会去同步ntp服务器的时间,如果在chrony配置了允许某些客户端来向自己同步时间,则chrony也充当了一台服务器,所以,安装了chrony即可充当客户端也可以充当服务端。

Chrony有两个核心组件,分别是:

  • chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。
  • chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

二、Chrony安装与配置


2.1 安装chrony


yum install chrony -y

测试服务器

hostname

IP

NTP 角色

hdp103

192.168.2.152

client

hdp104

192.168.2.153

NTP Server

hdp105

192.168.2.154

client

2.2 修改配置


配置/etc/chrony.conf文件。如果是做客户端,那么指定一下同步的时间服务器就好了;如果是做服务端,配置允许同步的客户端网段,配置当时间服务器的网络不可用时,采用服务器自身的时间同步,配置基本采用默认即可。

配置详细解释:

[root@hdp105 ~]# cat  /etc/chrony.conf 
#  使用 hdp104 为公共服务器,可配置多台
server hdp104 iburst

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

# chronyd根据需求减慢或加速时间调整,在某些情况下系统时钟可能漂移过快,导致时间调整用时过长
# 该指令强制chronyd调整时期,大于某个阀值时步进调整系统时钟。
# 如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进
makestep 1.0 3

#  启用实时时钟(RTC)的内核同步
rtcsync

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

# 增加调整系统时钟所需的最小可选源数
#minsources 2

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

# 即使未同步到时间源,也要提供时间。取值范围1-15,当默认时钟源无法同步,则当前系统层级为10 
#local stratum 10

# 指定包含 NTP 身份验证密钥的文件
#keyfile /etc/chrony.keys

# 日志文件的目录
logdir /var/log/chrony

# 选择日志文件要记录的信息。
#log measurements statistics tracking

重启chronyd服务 ,一般时间服务器器都会开机启动的。

systemctl restart chronyd
systemctl enable chronyd

NTP cliennt hdp103 配置文件chrony.conf

[root@hdp103 ~]# 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 hdp104 iburst

NTP cliennt hdp105 配置文件chrony.conf

[root@hdp105 ~]# 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 hdp104 iburst

2.3 timedatectl 查看时间同步


timedatectl是一个时间配置工具,用于设定时间、与时间相关的配置等。

timedatectl status --- 时间同步状态, 输入timedatectl 默认为时间同步状态
timedatectl set-ntp true --- 开启网络时间同步

输出说明:

     Local time: Tue 2023-10-10 13:52:22 CST   # 本地时间
  Universal time: Tue 2023-10-10 05:52:22 UTC  # 协调世界时间
        RTC time: Tue 2023-10-10 05:52:22      # 硬件时间
       Time zone: Asia/Shanghai (CST, +0800)   # 时区
     NTP enabled: yes  # NTP时间同步是否开启,yes表示是
NTP synchronized: yes  # yes #如果和远程NTP服务器成功同步,显示为yes
 RTC in local TZ: no   #  #no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间,终端输入:timedatectl set-local-rtc yes,yes可写为no 
      DST active: n/a

常见用法:

  • 查看当前时间/日期/时区:timedatectl 或者 timedatectl status
  • 设定系统时区为亚洲上海timedatectl set-timezone “Asia/Shanghai”
  • 设置日期时间:timedatectl set-time “YYYY-MM-DD HH:MM:SS”
  • 启动NTP时间同步(启用NTP服务或者Chrony服务):timedatectl set-ntp true
  • 设置硬件时钟为本地时间:timedatectl set-local-rtc 1
  • 设置硬件时钟为UTC时间:timedatectl set-local-rtc 0

2.4 chronyc 命令


# 查看 ntp_servers
chronyc sources -v

# 查看 ntp_servers 状态
chronyc sourcestats -v

# 查看 ntp_servers 是否在线
chronyc activity -v

# 查看 ntp 详细信息
chronyc tracking -v

# 强制同步下系统时钟
chronyc -a makestep

# 查看哪些ip连接我的ntp时间了
chronyc clients

chrony sources -v,查看时间的同步情况

[root@hdp103 ~]# chronyc sources -v
210 Number of sources = 1

  .-- 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               
===============================================================================
^* hdp104                       11  10   377   764    +73us[  +45us] +/-  323ms

输出信息说明:

(1)M

这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。

(2)S

此列指示源的状态。

  • * 表示chronyd当前同步到的源。
  • + 表示可接受的信号源,与选定的信号源组合在一起
  • - 表示被合并算法排除的可接受源。
  • ? 指示已失去连接性或其数据包未通过所有测试的源。它也显示在启动时,直到从中至少收集了3个样本为止。
  • x 表示chronyd认为是虚假行情的时钟(即,其时间与大多数其他来源不一致)。
  • 〜 表示时间似乎具有太多可变性的来源。

(3)Name/IP address

这显示了源的名称或IP地址,或参考时钟的参考ID。

(4)Stratum

这显示了来源的层,如其最近收到的样本中所报告的那样。层1表示一台具有本地连接的参考时钟的计算机。与第1层计算机同步的计算机位于第2层。与第2层计算机同步的计算机位于第3层,依此类推。

(5)Poll

这显示轮询源的速率,以秒为单位的时间间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd会根据当前情况自动更改轮询速率。

(6)Reach

这显示了源的可达性寄存器以八进制数字打印。寄存器有8位,并在每个从源接收或丢失的数据包上更新。值377表示从最后八次传输中收到了对所有用户的有效答复。

(7)LastRx

此列显示多长时间前从来源接收到了最后一个好的样本(在下一列中显示)。未通过某些测试的测量将被忽略。通常以秒为单位。字母m,h,d或y表示分钟,小时,天或年。

(8)Last sample

此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。可以用ns(表示纳秒),us (表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。

+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。


查看 NTP Client 同步的client Server:


三、NTPServer 为本机(内网 )


[root@hdp104 ~]# 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 hdp104 iburst

说明:chrony服务部署:三台机器
a: hdp104机器将自身时间作为时间服务,也就是同步自身时间,hdp103、hdp105 作为 NTP Client 从 hdp104 同步时间;
b: hdp104服务器使用系统时间作为hdp103、hdp105服务器的时钟源;

hdp104 NTFServer 层级为10,自身时间从NTPServer同步,所以层级为 (11), hdp104作为 NTP Server ,hdp103、hdp105 作为 NTP Client 从 hdp104 同步时间,则hdp103、hdp105层级是(12),一般NTPServer 会同步网络时间也就是不会使用自身时间作为时间源。

查看 NTPServer hdp104 层级

查看hdp103和hdp105 层级


四、NTPServer 从阿里云同步时间(外网)


说明:chrony服务部署:三台机器
a: hdp104机器从阿里云同步时间主机hdp104 从time_server 同步时间
b: hdp103、hdp105 作为 NTP Client 从 hdp104 同步时间

[root@hdp104 ~]# 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 ntp.aliyun.com iburst

时钟服务器time_server:它的层级是2,主机hdp104 从time_server 同步时间,那么hdp104 主机的层级就是3,以此类推另外两台台在hdp104同步时间,那它的层级就是4。

hdp103 从 hdp104 同步时间,层级为 4

强制同步系统时钟(特定条件才能进行,超过步进时间则无法同步)

date -s "2023-09-11 11:30"
chronyc -a makestep
systemctl restart chronyd --- 需重启chronyd服务才可同步

# 或者
timedatectl set-ntp no
timedatectl set-time "2022-02-28 17:13:55"
timedatectl set-ntp yes
ntpdate 192.168.2.104 -- 客户端立即获取

总结: 以上内网和外网的配置文件我只修改配置文件 chrony.conf 中的 server信息,客户端的配置文件不用做特殊修改。


参考原文链接:linux上外网和内网环境配置NTP时间同步详解~【基于chrony服务,效率更高的方法】、chrony不能同步时间排错详解、timedatactl命令修改时间和时区等说明【4.7万字符详细说明】_内网ntp服务器时间修改-程序员宅基地

linux进阶 --- chrony服务器_chrony安装-程序员宅基地

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35995514/article/details/133752893

智能推荐

(转)在JSP客户端限制表单重复提交-程序员宅基地

文章浏览阅读55次。在客户端限制表单重复提交有两种方法: 第一种:在javascript脚本中设置一个标志变量,来区分表单是否已经提交。如果已经提交,则弹出对话框告诉用户“重复提交”。 第二种:在单击提交按钮以后将提交按钮设置为disabled状态,这样用户就无法再提交按钮,客户端也就无法重复提交。 采用第一种方法:1.新建一个ClientTest1.jsp文件,代码如..._jsp限制表单重复提交

Tensorflow构建卷积神经网络_with open(cifar10_folder + test_dataset[0], 'rb') -程序员宅基地

文章浏览阅读269次。【方向】 2017-08-24 16:31:56 浏览8502 评论2 ..._with open(cifar10_folder + test_dataset[0], 'rb') as f0:

UE4 C++和蓝图相互调用_虚幻4c++调用蓝图函数-程序员宅基地

文章浏览阅读1k次。Ue4蓝图和c++如何相互调用(宏)官方文档官方文档常用BlueprintCallable 此函数可在蓝图或关卡蓝图图表中执行。BlueprintImplementableEvent 此函数可在蓝图或关卡蓝图图表中实现。BlueprintNativeEvent 此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用 Implementation 方法。_虚幻4c++调用蓝图函数

Arduino智能小车设计(二)_csdn arduino 小车-程序员宅基地

文章浏览阅读3.4k次,点赞13次,收藏49次。由于学校这几天在开运动会,所以刚好有空闲的时间来好好琢磨这些原件以及认认真真完成这几篇博客。。。。所以,这几天就好好研究这些电子元件。那怎么具体研究呢,我想大概可以从这几个方面入手。1.元件的介绍2.作用3.连接方式4.所控代码因为我也算是萌新,所以这个过程大概会比较复杂,但是我会将我所不懂得点着重标记下来。如果你也是小萌新,也可以参考参考我所遇到的问题;如果你是大佬,也可以给些不错..._csdn arduino 小车

小白易懂的遗传算法(Python代码实现)_遗传算法python代码详解-程序员宅基地

文章浏览阅读7.8k次,点赞13次,收藏137次。讲解通俗、代码简单易懂,小白也能学会遗传算法_遗传算法python代码详解

所有idea中文乱码解决_idea中文乱码的解决方法-程序员宅基地

文章浏览阅读529次。所有idea中文乱码解决_idea中文乱码的解决方法

随便推点

R中.rda文件如何读取(专用)_r语言读取rda文件-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏6次。一、问题描述和解决在用R读取数据的时候,常见的一般是.txt或.cvs结尾的文件。突然遇见一个.rda结尾的文件一下子不知道如何读取。经过查资料和自己尝试,终于找到了读取的方法。这里需要使用load函数,使用load(“文件名.rda”)即可将数据读取,但需要注意的是,有一点特殊的地方就是,读取出来,直接用变量名输出出来并不是文件里的数据,而是文件里保存的数据的名字。要想使用文件里的数据,直接..._r语言读取rda文件

.NetCore实现Session与Cookie以及授权过滤器的步骤-程序员宅基地

文章浏览阅读889次。1:在控制器验证登录成功时存储session与cookie的值 /// <summary> /// 验证登录 存储Session或Cookie /// </summary> /// <returns></returns> public async Task<IA..._.netcore实现session与cookie以及授权过滤器的步骤

2023(19届) 软件工程毕业设计选题推荐(二)-程序员宅基地

文章浏览阅读1.5w次,点赞20次,收藏237次。这是学长亲手整理的,软件工程毕设选题系列第三篇,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!相对容易工作量达标题目新颖学长限时开放免费开题指导,对开题有任何不明白的,对某项技术或算法不理解的,不知道怎么下手毕设的,都可以问学长,学长会根据你的情况提供帮助,希望能帮助到你。_软件工程毕业设计

python获取当前项目根路径-程序员宅基地

文章浏览阅读1.4k次。两行代码搞定import os# 获取当前文件的目录cur_path = os.path.abspath(os.path.dirname(__file__))# 获取根目录root_path = cur_path[:cur_path.find('pythonProject2')]+'pythonProject2' print(root_path)实际路径:C:\Users\86..._python 当前工程根目录

python判断元素在列表中的索引位置的代码-程序员宅基地

文章浏览阅读2.5k次。把开发过程比较重要的代码段备份一下,如下代码段是关于python判断元素在列表中的索引位置的代码,希望能对大伙也有用途。list = ["red","green","blue"] assert list.index("red") == 0assert list.index("blue") == 2 ..._索引定位代码

H3C设备-802.1X认证配置_华三交换机配置802.1x认证-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏18次。5、SW1 与 RADIUS 认证服务器交互报文时的共享密钥为 h3c@123、与 RADIUS 计费服务器交互报文时的共享密钥为 h3c@123。1、打开iNode智能客户端,输入用户名:admin,密码:admin123,点击"连接",连接成功则表示认证通过,如下图所示;1、打开WinRadius软件,点击"设置">"系统"配置NAS秘钥:h3c@123,认证端口1812,计费端口1813;2、 端口GE1/0/1 下的所有接入用户均需要单独认证,当某个用户下线时,也只有该用户无法使用网络。_华三交换机配置802.1x认证