Linux中的网络时间服务器

本章主要介绍网络时间的服务器

  • 使用chrony配置时间服务器
  • 配置chrony客户端服务器同步时间

1.1 时间同步的重要性

一些服务对时间要求非常严格,例如如图所示的由三台服务器搭建的ceph集群

这三台服务器的时间必须保持一致,如果不一致,就会显示警告信息。那么。如何能让这三台服务器的时间保持一致呢?手动调整时间的方式肯定不行,因为手动调整时间最多只能精确到分,很难精确到秒。而且即使现在时间调整一致了,过一段时间之后,时间可能又不一样了

所以,需要通过设置让这些服务器的时间能够自动同步,如图

这里假设我们有一个时间服务器时间为7:00,设置 server1和 server2向此时间服务器进行时间同步。 假设serverl 当前时间为6;59,它与时间服务器一对 比,“我的时间比时间服务器慢了一分钟”,然后它主板上的晶体芯片就会跳动得快一些,很快 就“追”上了时间服务器的时间

假设server2当前时间是7:01,它与时间服务器一对比,“我竟然比时间服务器快了一分钟”,然后它主板上的晶体芯片就会跳动得慢一些,“等着”时间服务器

下面就开始使用chrony来配置时间服务器

1.2 配置时间服务器

实验需求

两台Linux主机(redhat8、node1)这里把redhat8配置成时间服务器,node1作为客户端向redhat8进行时间同步

在安装系统时,如果已经选择了图形化界面,则默认已经把 chrony这个软件安装上了(如果没有安装,请先看后面的软件 包管理章节,然后自行安装上去)

使用vim编辑器打开/etc/chrony.conf,只修改我们能用的几行

(1)指定所使用的上层时间服务器

把pool 2.rhel.pool.ntp.org iburst修改成pool 127.127.1.0 iburst

pool后面跟的是时间服务器,因为这里把redhat8作为chrony服务器,没有上一层的服务 器,所以上层服务器设置为本地时钟的IP:127.127.1.0

这里iburst的意思是,如果chrony服务器出问题,客户端会发送一系列的包给chrony服务器,对服务器进行检测

(2)指定允许访问的客户端

修改allow所在行,把注释符#去掉,并把后面的网段改为192.168.161.0/24

把#allow 192.168.0.0/16修改为allow 192.168.161.0/24

redhat8配置成时间服务器之后,只允许192.168.161.0/24网段的客户端进行时间同步。如果要允许所有客户端都能向此时间服务器进行时间同步,可以写成allow 0/0或allow all

(3)把local stratum 前的注释符#去掉

这行的意思是,即使服务器本身没有和时间服务器保持时间同步,也可以对外提供时间服务,这行注释要取消

保存退出,去除空白行和注释行之后,最后修改完成的代码如下

[root@redhat8 ~]# egrep -v "^#|^$" /etc/chrony.conf 
pool 127.127.1.0 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.161.0/24
local stratum 10
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
[root@redhat8 ~]#

然后重启chronyd这个服务(注意,这里是chronyd而不是chrony),并设置开机自动启动

[root@redhat8 ~]# systemctl restart chronyd
[root@redhat8 ~]# systemctl enable chronyd
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.
[root@redhat8 ~]#

chrony用的是UDP的123和323

[root@redhat8 ~]# netstat -nutlp | grep chronyd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2622/chronyd        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           2622/chronyd        
udp6       0      0 ::1:323                 :::*                                2622/chronyd        
[root@redhat8 ~]#

在防火墙中把这两个端口开放

[root@redhat8 ~]# firewall-cmd --add-port=123/udp --permanent 
success
[root@redhat8 ~]# firewall-cmd --add-port=323/udp --permanent 
success
[root@redhat8 ~]# firewall-cmd --reload 
success
[root@redhat8 ~]# 

这里加上 --permanent选项的目的是让其永久生效,然后通过reload重新加载防火墙规则, 让其也立即生效

至此,用chrony搭建的时间服务器完成

1.3 配置chrony客户端

把node1配置成时间服务器的客户端,也就是chrony客户端

在node1(IP地址为192.168.161.12)上用vim编辑器修改/etc/chrony.conf,修改下面的几行

(1)修改pool那行,指定要从哪台时间服务器同步时间

 由原来的pool 2.rhel.pool.ntp.org iburst改为pool 192.168.161.16 iburst

这里指定时间服务器为192.168.161.16,即向192.168.161.16进行时间同步

(2)修改makestep那行,格式如下

 makestep 阈值 limit

客户端向服务器同步时间有两种方式:step和 slew

step:跳跃着更新时间,如时间由1点直接跳到7点

slew:平滑着移动时间,晶体芯片跳动得快一些,就好比秒针的转速“快进”了一样

如果客户端和服务器的时间相差较多,则通过step的方式更新时间;如果客户端和服务器的时间相差不多,则通过slew的方式更新时间。那么,时间相差多或不多的标准是什么呢? 就要看时间差是否超过makestep后面的住值了

举一个例子,makestep 10 3的意思是,如果客户端和服务器的时间相差10秒以上,就认为客户端和服务器的时间相差较多,则前三次通过step 的方式更新时间。客户端通过这种方式会更新得很快,有些应用程序因为时间的突然跳动会带来问题

如果客户端和服务器的时间相差10秒以内,就认为二者时间相差不多,则通过slew的方式更新时间。这种方式更新的速度会比较慢,但比较平稳

 把原来的makestep 1.0 3改成makestep 200 3

如果客户端和服务器的时间相差200秒以上,就认为二者时间相差较多,则通过step的方式更新时间

保存退出并重启 chronyd服务

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# systemctl enable chronyd.service 
[root@node1 ~]#

为了更细致地看到两台机器的时间差,先配置ssh使得node1可以无密码登录到redhat8。 先生成密钥对

[root@node1 ~]# ssh-keygen -N "" -f /root/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/root/.ssh'.

配置到redhat8的密钥登录

[root@node1 ~]# ssh-copy-id 192.168.161.16

给node1上通过date命令设置时间,使得node1和redhat8的时间相差200秒

[root@node1 ~]# date -s "2023-12-07 12:30:00" ; hwclock -w
2023年 12月 07日 星期四 12:30:00 CST
[root@node1 ~]# 

然后同时显示两台机器的时间

[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:30:03 CST
2023年 12月 07日 星期四 12:16:39 CST
[root@node1 ~]#

可以看到,时间相差了约13分钟,即780秒

然后重启node1的chronyd服务,等待几秒之后再次查看

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:18:59 CST
2023年 12月 07日 星期四 12:18:59 CST
[root@node1 ~]#

可以看到,时间很快就同步了,因为这是通过step的方式同步的

再次修改时间

[root@node1 ~]# date -s "2023-12-07 12:22:00" ; hwclock -w
2023年 12月 07日 星期四 12:22:00 CST
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:22:06 CST
2023年 12月 07日 星期四 12:20:26 CST
[root@node1 ~]# 

两台机器的时间相差1分40秒,即100秒,这个值低于200秒,即在makestep的阙值范围 之内,此时客户端向服务器进行时间同步时只能通过slew的方式同步

此时重启 chronyd服务,也不会保持时间同步

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:23:14 CST
2023年 12月 07日 星期四 12:21:34 CST
[root@node1 ~]#

可以看到,并没有同步,因为slew同步的速度比较慢

此时如果通过执行chronyc makestep命令手动step同步,则会立即同步时间

[root@node1 ~]# chronyc makestep
200 OK
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:22:20 CST
2023年 12月 07日 星期四 12:22:20 CST
[root@node1 ~]#

这样就可以看到立即同步成功了

通过chronye -n sources -v查看现在的同步状况,如图

可以看到,node1是向192.168.161.16进行时间同步的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言之动态内存管理(malloc calloc realloc)

C语言之动态内存管理 文章目录 C语言之动态内存管理1. 为什么要有动态内存管理2. malloc 和 free2.1 malloc2.2 free2.3 例子 3. calloc 和 realloc3.1 calloc3.2 realloc 4. 常见的动态内存错误4.1 对NULL指针的解引⽤操作4.2 对动态开辟空间的越界访问4.3 对⾮动态开辟内存使…

Themis: Fast, Strong Order-Fairness in Byzantine Consensus

目录 笔记后续的研究方向摘要引言秩序井然 Themis: Fast, Strong Order-Fairness in Byzantine Consensus CCS 2023 笔记 后续的研究方向 摘要 我们介绍了Themis,这是一种将交易的公平排序引入(许可的)拜占庭共识协议的方案,最…

【洛谷】更换头像

错误展示 今天换头像的时候发现一直换不了,即使显示修改成功,然后我等了半个多小时也还没换好 解决办法 上传成功头像后,按ctrl F5 结果 更新成功!

文本润色工具有哪些,高质量的文本润色软件

在当今信息过载的时代,文本的重要性愈发凸显。即便是最精心构思的文章,若未经过仔细的润色,也难以达到最佳的表达效果。本文将专心分享文本润色工具的种类。 文本润色工具的种类 文本润色工具根据其功能和应用范围可以分为多个种类&#xff…

菜鸟学习日记(python)——推导式

python中的推导式是一种独特的数据处理方式,可以从一个数据序列去构建另一个新的数据序列的结构体。 它包括以下推导式: 列表(list)推导式字典(dict)推导式集合(set)推导式元组&am…

Kettle 安装配置

文章目录 Kettle 安装配置Kettle 安装Kettle 配置连接 Hive Kettle 安装配置 Kettle 安装 在安装Kettle之前,需要确定已经安装Java运行环境。Kettle需要Java的支持才能运行,JDK的版本最好是8.x的太新的也会出现bug。Kettle的7.1版本的太旧了&#xff0…

排序-插入排序与希尔排序

文章目录 一、插入排序二、希尔排序 一、插入排序 思路: 当插入第i(i>1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将…

Apollo新版本Beta自动驾驶技术沙龙参会体验有感—百度自动驾驶开源框架

在繁忙的都市生活中,我们时常对未来的科技发展充满了好奇和期待。而近日,我有幸参加了一场引领科技潮流的线下技术沙龙,主题便是探索自动驾驶的魅力——一个让我们身临其境感受创新、了解技术巨擘的机会。 在12月2日我有幸参加了Apollo新版本…

PaddleClas学习3——使用PPLCNet模型对车辆朝向进行识别(c++)

使用PPLCNet模型对车辆朝向进行识别 1 准备环境2 准备模型2.1 模型导出2.2 修改配置文件3 编译3.1 使用CMake生成项目文件3.2 编译3.3 执行3.4 添加后处理程序3.4.1 postprocess.h3.4.2 postprocess.cpp3.4.3 在cls.h中添加函数声明3.4.4 在cls.cpp中添加函数定义3.4.5 在main.…

亚马逊、OZON、速卖通、美客多店铺怎么增加页面访问量?

店铺怎么增加页面访问量?页面访问量是衡量你的亚马逊店铺或产品在互联网上的可见性和曝光度的重要指标。如果你的店铺没有足够的访问量,意味着很少有人能看到你的内容或产品,这将限制你的潜在受众和销售机会。 没有流量就没有店铺&#xff0c…

京东运营数据分析:10月京东奶粉行业销售数据分析

近年来,随着出生人口红利逐渐消逝,婴幼儿奶粉竞争进入红海时代,产品逐渐过剩。在这种情况下,我国奶粉市场进入调整阶段,企业开始将目光投向奶粉的品类细分领域,如有机奶粉、羊奶粉、特殊配方奶粉、成人奶粉…

物联网+AI智慧工地云平台源码(SaaS模式)

智慧工地云平台充分运用数字化技术,聚焦施工现场岗位一线,依托物联网、互联网、AI等技术,围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管…

达梦 DM 数据库

达梦数据库 varchar varchar2的区别 DATE DATETIME TIMESTAMP 类型

空中“千里眼” 复亚环保监测无人机助力生态保护

生态环境保护是全球共同关注的重要议题,为了持续改善环境、加强执法效能,复亚智能环保监测无人机在环保领域大显身手。该智能系统为环境执法人员提供了全新的工具,使其能够在无人机的“千里眼”下,及时发现和制止环境违法行为&…

ssm校园论坛管理系统项目分享

校园论坛管理系统是基于java编程语言,mysql数据库,ssm框架和idea工具开发,本系统主要分为学生用户,管理员两个角色,其中用户可以注册登陆系统,在线发帖,查看栏目帖子,回复帖子&#…

智能外呼核心功能是什么? 智能外呼有什么功能?

智能外呼是现今市场营销领域中的一种新型的技术手段。与传统的市场营销不同,智能外呼不仅仅是单纯的电话营销,其功能更加丰富多样,而且能够节省很多人力、财力资源。 智能外呼的核心功能是什么呢? 智能外呼的核心功能是AI智能外呼…

泰裤辣!这个网站制作电子产品册很轻松

电子产品册的制作对于许多企业来说是一项重要的任务,它不仅能够帮助企业展示自己的产品,还能够提高企业的品牌形象和市场竞争力。 这个网站能够轻松制作电子产品册,这无疑是一个非常有用的工具,可以帮助许多企业节省时间和精力&am…

​LeetCode解法汇总1466. 重新规划路线

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: n 座城市&…

pytest +uiautomator2+weditor app自动化从零开始

目录结构1.0 把设备连接单独移出去了 模块操作代码,有一些流程操作和断言方法 from devices import dv from time import sleep import random from tool.jt import capture_screenshotdef initialization(func):def wrapper():sleep(1)dv.app_stop(com.visteon.…

使用SLS日志服务采集Kong网关的日志

一、阿里云SLS 官方的接入文档已比较丰富了,本文不意重复说明此事。 站在使用的角度,以采集Kong的日志为示例,说明我们应该如何治理日志。 说白了,本文是想给你怎么省钱作一个建议,希望不会让你公司也“降本增笑”。…
最新文章