2、时间服务器

RHCE板块

欢迎来到我的博客,这里是Linux板块,配合之前RHCSA进阶,希望我的博客可以帮助到您,感谢您的阅读,有什么问题还希望一起探讨交流,感谢各位的支持,感谢!

  1. 使用Linux搭建一个简单的论坛
  2. RHCE——一、安装部署及例行性工作
  3. RHCE——二、时间服务器
  4. RHCE——三、远程连接服务器
  5. RHCE——四、Web服务器(理论篇
  6. RHCE——五、Web服务器及内网穿透(实验篇
  7. RHCE——六、基于https协议的静态网站
  8. RHCE——七、搭建云存储器
  9. RHCE——八、DNS域名解析服务器
  10. RHCE——九、SELinux
  11. RHCE——十、防火墙、iptables、firewalld
  12. RHCE——十一、NFS服务器
  13. RHCE——十二、Mysql服务
  14. RHCE——十三、Shell自动化运维编程基础
  15. RHCE——十四、变量和引用
  16. RHCE——十五、shell条件测试
  17. RHCE——十六、流程控制之条件判断、循环
  18. RHCE——十七、文本搜索工具-grep、正则表达式
  19. RHCE——十八、shell编程之sed
  20. RHCE——十九、shell编程之awk
  21. RHCE——二十、Ansible及安装与配置
  22. RHCE——二十一、Ansible模块

一、时间服务器

1、重要性

  • 由于IT系统中,准确的计时非常重要,有很多种原因需要准确计时:
    • 在网络传输中,数据包括和日志需要准确的时间戳
    • 各种应用程序中,如订单信息,交易信息等 都需要准确的时间戳

2、Linux的系统时钟以及硬件时钟

  • 硬件时钟:即BIOS时钟,也就是我们主板中用电池供电的时钟,是将时间写入到BIOS中,系统断电后时间不会丢失,可以在开机时通过主板程序中进行设置
# 硬件时间查看:
[root@server ~]# hwclock
2023-08-20 09:17:13.071047+08:00
  • 系统时钟:顾名思义也就是Linux系统内的时钟,是由Linux内核来提供的,系统时钟是基于内存,如果系统断电时间就会丢失
[root@server ~]# date  -s  10:00         # 修改为错误时间
2023年 08月 20日 星期日 10:00:00 CST
[root@server ~]# date                    # 查看软件时间
2023年 08月 20日 星期日 10:00:06 CST
[root@server ~]# hwclock  -s             # 向硬件时间同步
[root@server ~]# date
2023年 08月 20日 星期日 09:19:22 CST

3、NTP网络时间协议

  • NTP:(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。
  • NTP基于UDP报文进行传输,使用的UDP端口号为123
  • NTP可以对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用,对于运行NTP的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。
  • NTP的其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms

4、Chrony介绍

  • chrony是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。
  • chrony由两个程序组成,分别是chronyd和chronyc
    • chronyd:是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
    • chronyc:提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作
  • 注意:Chrony与NTP都是时间同步软件,两个软件不能够同时开启,会出现时间冲突,RHEL9中默认使用chrony作为时间服务器,不在支持NTP软件包

二、chrony安装与配置

1、安装

[root@server ~]# yum  install  chrony -y
[root@server ~]# systemctl  start  chronyd
[root@server ~]# systemctl  enable  chronyd
[root@server ~]# systemctl  status  chronyd

2、Chrony配置文件分析

[root ~]# vim /etc/chrony.conf 
[root ~]# systemctl restart chronyd
  • 主配置文件:/etc/chrony.conf
[root@server ~]# vim  /etc/chrony.conf

# 使用 pool.ntp.org 项目中的公共服务器。
# 或者使用server开头的服务器,理论上想添加多少时间服务器都可以
# iburst表示的是首次同步的时候快速同步
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 

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

# 如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进。 
# Allow the system clock to be stepped in the first three updates if its offset is larger than 1 second. 
makestep 1.0 3 

# 启用实时时钟(RTC)的内核同步。 
# Enable kernel synchronization of the real-time clock (RTC). 
rtcsync 

# 通过使用 hwtimestamp 指令启用硬件时间戳 
# Enable hardware timestamping on all interfaces that support it. 
#hwtimestamp * 
# Increase the minimum number of selectable sources required to adjust the system clock. 
#minsources 2 

# 指定 NTP 客户端地址,以允许或拒绝连接到扮演时钟服务器的机器 
# Allow NTP client access from local network. 
#allow 192.168.48.0/24

# Serve time even if not synchronized to a time source. 
# local stratum 10 

# 指定包含 NTP 身份验证密钥的文件。 
# Specify file containing keys for NTP authentication. 
# keyfile /etc/chrony.keys 

# 指定日志文件的目录。 
# Specify directory for log files. 
logdir /var/log/chrony 

# 选择日志文件要记录的信息。 
# Select which information is logged. 
# log measurements statistics tracking

3、实验

3.1 实验1

  • 同步时间
  • 第一步:先修改为错误时间
[root@server ~]# date  -s  12:00
2023年 08月 20日 星期日 12:00:00 CST
  • 第二步:编辑chrony的配置文件
[root@server ~]# vim  /etc/chrony.conf  # 定位第3行,修改为阿里的时间同步服务器地址
server  ntp.aliyun.com    iburst

# 或者直接使用阿里推荐的参数配置,清空所有内容后复制粘贴如下:
server ntp.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
logchange 0.5
logdir /var/log/chrony
  • 第三步:重启服务
[root@server ~]# systemctl restart chronyd
  • 第四步:时间同步
[root@server ~]# 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               
===============================================================================
^* 203.107.6.88             2   6    77    59   +8280s[ +8280s] +/-   33ms

在这里插入图片描述
这里为星号即为配置完毕。

[root@server ~]# timedatectl status   # 查看状态
               Local time: 日 2023-08-20 09:51:21 CST
           Universal time: 日 2023-08-20 01:51:21 UTC
                 RTC time: 日 2023-08-20 01:51:20
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes          # yes表示已经完成时间同步
              NTP service: active
          RTC in local TZ: no

在这里插入图片描述
同步完毕。

3.2 实验2

  • 搭建本地时间服务器
  • 架构
性质地址同步对象
服务端server192.168.13.134ntp.aliyun.com
客户端node1192.168.13.135192.168.13.134
  • 要求
    • 服务端server向阿里时间服务器进行同步
    • 客户端node1向同server进行时间同步
  • 第一步:定位server端
[root@server ~]# vim  /etc/chrony.conf 
server  ntp.aliyun.com   iburst   # 修改第3行为阿里的时间服务器地址
allow 192.168.13.135/24    # 删除第26行的前导星号,启用白名单,将node1的ip添加进入
[root@server ~]# systemctl restart chronyd   # 重启服务
[root@server ~]# chronyc  sources  -v   # 同步测试
[root@server ~]# timedatectl status   # 查看是否同步
  • 第二步:定位node1端
[root@node1 ~]# vim  /etc/chrony.conf 
server  192.168.48.130   iburst   # 修改为向server端同步时间
[root@node1 ~]# systemctl restart chronyd  # 重启服务
[root@node1 ~]# timedatectl status
  • 注意:客户端时间同步失败原因
    • 检查系统连通性,使用ping测试
    • 检查服务端的allow参数
    • 必须要重启服务
  • 查看:

在这里插入图片描述
在这里插入图片描述

三、chronyc命令

1、查看时间服务器:

[root@server ~]# chronyc  sources  -v  # -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               
===============================================================================

2、chronyc sources输出分析

  • M:这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。
  • S:此列指示源的状态
*****chronyd当前同步到的源
+表示可接受的信号源,与选定的信号源组合在一起
-表示被合并算法排除的可接受源
表示已失去连接的源
x表示chronyd认为是虚假行情的时钟(即,其时间与大多数其他来源不一致)
~表示时间似乎具有太多可变性的来源
  • Name/IP address:显示服务器源的名称或IP地址
  • Stratum:表示源的层级,层级1表示本地连接的参考时钟,第2层表示通过第1层级计算机的时钟实现同步,依此类推
  • Poll:表示源轮询频率,以秒为单位,值是基数2的对数,例如值6表示每64秒进行一次测量,chronyd会根据当时的情况自动改变轮询频率
  • Reach:表示源的可达性的锁存值(八进制数值),该锁存值有8位,并在当接收或丢失一次时进行一次更新,值377表示最后八次传输都收到了有效的回复
  • LastRx:表示从源收到最近的一次的时间,通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年
  • *Last sample:表示本地时钟与上次测量时源的偏移量,方括号左侧的数字表示原始测量值,方括号右侧表示偏差值,*+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前

3、其它命令

  • 查看时间服务器的状态
[root@server ~]# chronyc  sourcestats  -v
  • 查看时间服务器是否在线
[root@server ~]# chronyc  activity  -v
  • 同步系统时钟
[root@server ~]# chronyc  -a  makestep

4、常见时区

  • UTC 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。
  • GMT 格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
  • CST 中国标准时间 (China Standard Time)GMT + 8 = UTC + 8 = CST
  • DST夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。(中国不使用)

四、练习

要求: 配置ntp时间服务器,确保客户端主机能和服务主机同步时间
准备工作: 两台虚拟机,一台做客户端,一台做服务器,这里:
服务器IP地址: 192.168.13.134
客户端IP地址: 192.168.13.135
1、服务器思路以及配置

  • 1、chrony安装
[root ~]# yum install chrony -y
上次元数据过期检查:2:56:29 前,执行于 20230820日 星期日 102738秒。
软件包 chrony-4.3-1.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[root ~]# 
  • 2、修改配置文件,这里改用阿里的时间授权,并将客户端及192.168.13.135列入白名单
[root ~]# vim /etc/chrony.conf

配置之后:
在这里插入图片描述
在这里插入图片描述

  • 3、重启服务
[root ~]# systemctl restart chronyd
  • 4、进行同步测试

在这里插入图片描述
这里可以看到已经同步完毕。

  • 5、查看同步状态

在这里插入图片描述
2、客户端思路以及配置

  • 1、同样的。chrony安装

在这里插入图片描述

  • 2、修改配置文件
[root ~]# vim /etc/chrony.conf 

修改之后:
在这里插入图片描述

  • 3、重启服务
[root ~]# systemctl restart chronyd
  • 4、进行同步测试
[root ~]# chronyc sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combin
| /             'x' = may be in error, '~' = too variable, '?' = unusab
||                                                 .- xxxx [ yyyy ] +/-
||      Reachability register (octal) -.           |  xxxx = adjusted o
||      Log2(Polling interval) --.      |          |  yyyy = measured o
||                                \     |          |  zzzz = estimated 
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample       
=======================================================================
^* 192.168.13.134                3   6    17    14    -41us[  -44us] +

在这里插入图片描述
这里查看服务器的IP以及状态,可以看到同步完毕。

  • 5、查看同步状态
    在这里插入图片描述
[root ~]# timedatectl status 
               Local time:2023-08-20 10:33:03 CST
           Universal time:2023-08-20 02:33:03 UTC
                 RTC time:2023-08-20 02:33:03
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active

练习结束。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值