时间同步服务器--Linux中

news2024/12/26 21:22:46

时间同步服务器

1. 时间同步服务

  • 时间同步:多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP(Network Time Protocol )协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一。
  • 时间同步实现:ntp,chrony。
  • ntp:将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms,项目官网:http://www.ntp.org
  • chrony : 实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬件时间戳或硬件参考时钟,可实现亚微秒的精度。

2. 时间同步服务的使用

2.1 系统时间及时区的管理

timedatectl set-time "2024-02-13 10:41:55" ##设定系统时间
timedatectl list-timezones ##显示系统的所有时区
timedatectl set-timezone "Asia/Shanghai" ##设定系统时区
timedatectl set-local-rtc 0|1 ##设定系统时间计算方式            ##0表示使用utc时间计算方式

练习扩充

时间控制(做之前一定要把rtc关了)
再克隆一份主机,修改ip
 ssh   -l  root   172.25.254.200    (100的连接200)
 timedatectl(查看系统时间)
系统时间=rtc时间(即硬件时间)和timezone时间总和    ----utc计算方式
改系统时间
  watch  -n  1   timedatectl   (另一台100的监控)
200的改,先关同步的, systemctl     stop    chronyd.service
再改时间timedatactl   set-time  "2024-11-25  20:40:00"
改时区
timedatectl   list-timezones    查看时区
timedatectl   set-timezone   "Asia/Baku"
启用rtc时间
timedatectl   set-local-rtc    1  (监控的那方出现警告,系统时间是rtc时间)
用utc方式时间
timedatectl   set-local-rtc    0

  • 公告ntp地址

    • Unix/linux类: ntp.aliyun.com,ntp1-7.aliyun.com
    • windows类: time.pool.aliyun.com
    • 国家授时中心服务器:ntp.ntsc.ac.cn
  • 使用公共的ntp到本机

    • 在RHEL 9 中使用的同步时间软件为hrony

    • chrony由两个程序组成,分别是chronyd和chronyc。

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

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

    • chrony作为client使用方法如下:

      ]# dnf install chrony –y
      ]# vim /etc/chrony.conf
      server ntp.ntsc.ac.cn iburst #server 指定时钟服务器地址
      #iburst 当服务器可达时,发送一个八个数据包
      #包间隔通常为2秒,可加快初始同步速度
      
  • 显示同步信息

    • 在RHEL9中我们可以使用chronyc 来查看时间同步情况

      chronyc sources –v
      
    • [root@localhost ~]# chronyc sources -v
      
        .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
       / .- Source state '*' = current best, '+' = combined, '-' = not combined,
      | /             'x' = may be in error, '~' = too variable, '?' = unusable.
      ||                                                 .- 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               
      ===============================================================================
      ^* 172.25.254.200               10   6     7     0   +303us[ +348us] +/-  538us
      
      
      M:时间源模式 ^表示服务器,=表示对等方,#表示本地连接的参考时钟
      S:指源的状态
      表示chronyd当前已经同步到的源。
      + 表示可接受的信号源,与选定的信号源组合在一起。
      表示被合并算法排除的可接受源
      ? 指已失去连接性或者其数据包未通过所有测试的源。
      x 表示chronyd认为时虚假行情的时钟,即标记该时间与其他多数时间不一致
      ~ 表示时间似乎具有太多可变性
      Name/IP address:显示源的名称或IP地址
      Stratum:显示时间来源的层
      Poll:显示轮询源的速率
      Reach:显示源的可达性寄存器以八进制数字打印
      LastRx:显示多长时间前从来源接收到了最后一个好的样本
      Last sample:此列显示上次测量时本地时钟与源之间的偏移
      

练习扩充


ping    ntp1.aliyun.com(ping通,表明这个可以用)
vim   /etc/chrony.conf
指定时间原
pool ntp1.aliyun.com iburst(把时间立即向阿里云同步)
systemctl   restart   chronyd.service(重启)
chronyc   sources  -v(查看是否同步)(也可查看公共时间偏差)


2.2 时间同步服务器的搭建

在RHEL9中ntp的服务端同样默认使用chrony

chrony使用端口为udp 323,chrony兼容ntp所以在设定chrony为服务端是也会开启udp的123端口

  • chrony 的优势:

    • 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,对于并非全天24小时运行的虚拟计算机而言非常有用

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

    • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性;

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

  • chrony的参数说明

    - server 	#可用于时钟服务器,
    - iburst    #选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包
    
    #包间隔通常为2秒,可加快初始同步速度
    
    - driftfile #根据实际时间计算出计算机增减时间的比率
    
    - #将它记录到一个文件会在重启后为系统时钟作出补偿
    
    - rtcsync 	#启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)
    
    - allow / deny 	#指定一台主机、子网,或者网络以允许或拒绝访问本服务器
    
    - bindcmdaddress 	#允许chronyd监听哪个接口来接收由chronyc执行的命令
    
    - local stratum 10 	#即使server指令中时间服务器不可用
    
    - #也允许将本地时间作为标准时间授时给其它客户端
    
  • 修改配置文件

    [root@localhost ~]# vim /etc/chrony.conf
    
    allow 0.0.0.0/0
    
    local stratum 10
    

练习扩充

用200的搭建一个时间原,客户和用户端用的同一个配置,200的相当于时间同步服务器的时间源主机
vim    /etc/chrony.conf    这个文件里改这两个
pool 172.25.254.100  iburst
allow 0.0.0.0/0    允许所有人通过   
local stratum 10   指定第几层
systemctl    restart   chronyd.service   重启这个服务
 netstat  -antlupe   |   grep   chrony    查看开启的端口(323  接受时间的端口,123发送时间端口)
100的主机上
vim    /etc/chrony.conf   
pool 172.25.254.200  iburst   指定时间原
然后重启
systemctl    status   firewalld    一定要关闭服务器火墙
chronyc   sources  -v    查看



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot集成Kafka和avro和Schema注册表

Schema注册表 为了提升kafka的性能,减少网络传输和存储的数据大小,可以把数据的schema部分单独存储到外部的schema注册表中,整体架构如下图所示: 1)把所有数据需要用到的 schema 保存在注册表里,然后在记…

c++领域展开第一幕——入门基础(命名空间、iostream、缺省参数、函数重载、nullptr、inline(内联函数))超详细!!!!

文章目录 前言一、c的第一个程序二、命名空间2.1 namespace 的价值2.2 namespace 的定义2.3 命名空间的使用 三、c的输入和输出四、缺省参数五、函数重载六、nullptr七、inline总结 前言 今天小编带着大家进入c的大门,虽然c难,但好事多磨,一起…

Java Web 1HTML快速入门

目录 一、Web开发介绍 1.什么是Web? 2.初识Web前端 二、HTML快速入门 1.什么是HTML、CSS? 2、案例练习 3.小结 三、VS Code开发工具 四、基础标签&样式(HTML) 2、实现标题--样式1(新闻标题的颜色&#xff0…

【Python网络爬虫笔记】7-网络爬虫的搜索工具re模块

目录 一、网络爬虫中的正则表达式和re模块(一)数据提取的精确性(二)处理复杂的文本结构(三)提高数据处理效率 二、正则表达式的内涵(一)、常用元字符(二)、量…

42_GAN网络详解(2)---常见的GAN

DCGAN CGAN 条件生成对抗网络(Conditional Generative Adversarial Networks, CGAN)是生成对抗网络(Generative Adversarial Networks, GAN)的一种变体,由Mehdi Mirza和Simon Osindero在2014年提出。CGAN的主要改进在…

PC端阅读器--koodo reader

官网:请在必应搜索引擎上输入 koodo reader GitHub:GitHub - koodo-reader/koodo-reader: Windows, macOS, Linux and Web 123云windows版:Koodo-Reader-1.5.1.exe下载 提取码:4455 优: 1.开源,懂&#x…

PyQt设计界面优化 #qss #ui设计 #QMainWindow

思维导图 通过qss实现ui界面设计优化 Qss是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,它是用来美化UI界面。实现界面和程序的分离,快速切换界面。 首先我们在Pytchram创建一个新目录 然后将我们所需要的图片打…

多维数组及其应用————13

1. 二维数组 如果我们把 ⼀维数组做为数组的元 素,这时候就是⼆维数组, ⼆维数组作为数组元素的数组被为三维数组,⼆维数组以上的数组统称 为多维数组。 1.1 二维数组的创建 先行后列 其实也可以这样理解:把二维数组当成特殊的一维…

基于Java Springboot校园导航微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开发…

k8s,声明式API对象理解

命令式API 比如: 先kubectl create,再replace的操作,我们称为命令式配置文件操作 kubectl replace的执行过程,是使用新的YAML文件中的API对象,替换原有的API对象;而kubectl apply,则是执行了一…

【北京迅为】iTOP-4412全能版使用手册-第三十五章 WEB控制LED

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

轻量的基于图结构的RAG方案LightRAG

LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》(github),也是使用图结构来索引和搜索相关文本。 LightRAG作者认为已有的RAG系统有如下两个限制,导致难以回答类似"How does the rise of electric vehi…

分布式cap

P(分区安全)都能保证,就是在C(强一致)和A(性能)之间做取舍。 (即立马做主从同步,还是先返回写入结果等会再做主从同步。类似的还有,缓存和db之间的同步。&am…

AD7606使用方法

AD7606是一款8通道最高16位200ksps的AD采样芯片。5V单模拟电源供电,真双极性模拟输入可以选择10 V,5 V两种量程。支持串口与并口两种读取方式。 硬件连接方式: 配置引脚 引脚功能 详细说明 OS2 OS1 OS2 过采样率配置 000 1倍过采样率 …

[VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动

在现代Web开发中,Vue.js已经成为前端开发的热门选择之一。然而,将Vue.js项目打包并部署到生产环境可能会让一些开发者感到困惑。本文将详细介绍如何将Vue.js项目打包,并通过Tomcat服务器启动运行。 1. 准备工作 确保你的项目能够正常运行,项…

服务器与普通电脑有什么区别?

服务器和普通电脑(通常指的是个人计算机,即PC)有众多相似之处,主要构成包含:CPU,内存,芯片,I/O总线设备,电源,机箱及操作系统软件等,鉴于使用要求…

2.2 线性表的顺序表示

2.2.1 顺序表的定义 一、顺序表的基本概念 线性表的顺序存储又称顺序表。 它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的连个元素在物理上也相邻。 第1个元素存储在顺序表的起始位置,第i个元素存储位置后面紧接着存…

游戏引擎学习第30天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 在这段讨论中,重点是对开发过程中出现的游戏代码进行梳理和进一步优化的过程。 工作回顾:在第30天,回顾了前一天的工作,并提到今天的任务是继续从第29天的代码开始&#xff0c…

探索HarmonyOS:一键掌握Router与NavPathStatck的传参和页面回调技巧

路由的选择 HarmonyOS提供两种路由实现的方式,分别是 Router 和 NavPatchStack。两者使用场景和特效各有优劣。 组件适用场景特点备注Router模块间与模块内页面切换通过每个页面的url实现模块间解耦NavPathStack模块内页面切换通过组件级路由统一路由管理 什么时候使…

每日计划-1203

1. 完成 236. 二叉树的最近公共祖先 ​ /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution {public:TreeNode* lowe…