3.chrony服务器

打印 上一主题 下一主题

主题 545|帖子 545|积分 1635

目次

1. 简介
1.1. 紧张性
1.2. Linux的两个时钟
1.3. 设置日期时间
1.3.1. timedatectl命令设置
1.3.2. date命令设置
1.4. NTP
1.5. Chrony介绍
2. 安装与配置
2.1. 安装:
2.2. Chrony配置文件分析
2.3. 同步时间服务器
2.3.1. 授时中心
2.3.2. 实验1
2.3.3. 实验2
2.4. chronyc命令
2.4.1. 检察时间服务器:
2.4.2. chronyc sources输出分析
2.5. 其它命令
3. 常见时区


1. 简介

1.1. 紧张性

由于IT系统中,正确的计时非常紧张,有很多种缘故原由需要正确计时:
1.在网络传输中,数据包括和日记需要正确的时间戳
2.各种应用程序中,如订单信息,交易信息等 都需要正确的时间戳
1.2. Linux的两个时钟

硬件时钟RTC (Real Time Clock):即BIOS时钟,也就是我们主板中用电池供电的时钟,是将时间写入到 BIOS中,系统断电后时间不会丢失,可以在开机时通过主板程序中进行设置 系统时钟 (System Clock) :顾名思义也就是Linux系统内核时钟、软件时钟,是由Linux内核来提供的,系统时钟是基于内存,如果系统断电时间就会丢失

# 检察硬件时间
  1. # 查看硬件时间
  2. [root@server ~]# hwclock
  3. 2023-05-30 09:48:32.535594+08:00
复制代码

系统时钟 (System Clock) :顾名思义也就是Linux系统内核时钟、软件时钟,是由Linux内核来提供的, 系统时钟是基于内存,如果系统断电时间就会丢失
  1. # 查看系统时间
  2. [root@server ~]# date
  3. 2023年 05月 30日 星期二 09:50:50 CST
  4. [root@server ~]# date -s 10:00 # 修改为错误的时间
  5. 2023年 05月 30日 星期二 10:00:00 CST
  6. [root@server ~]# date
  7. 2023年 05月 30日 星期二 10:00:01 CST
  8. [root@server ~]# hwclock -s # 向硬件时间同步
  9. [root@server ~]# date
  10. 2023年 05月 30日 星期二 09:51:50 CST
复制代码

1.3. 设置日期时间

1.3.1. timedatectl命令设置

  1. # [root@server ~]# timedatectl # 显示当前的日期和时间
  2. Local time: 三 2023-11-15 13:00:26 CST # 本地时间
  3. Universal time: 三 2023-11-15 05:00:26 UTC # 世界时间
  4. RTC time: 三 2023-11-15 06:16:16 # 硬件时间
  5. Time zone: Asia/Shanghai (CST, +0800) # 时区
  6. System clock synchronized: yes # 时间是否已同步
  7. NTP service: active # 时间同步服务已启动
  8. RTC in local TZ: no # no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间
  9. [root@server ~]# systemctl status chronyd # 查看时间同步服务状态(由于默认使用chrony服务同步时间,不再使用ntp服务)
  10. [root@server ~]# timedatectl set-ntp no # 关闭时间同步,以方便修改日期时间
  11. [root@server ~]# systemctl status chronyd
  12. [root@server ~]# timedatectl set-time "2023-12-12" # 设置新日期
  13. [root@server ~]# timedatectl set-time "12:12:12"
  14. [root@server ~]# timedatectl
  15. Local time: 二 2023-12-12 12:12:22 CST
  16. Universal time: 二 2023-12-12 04:12:22 UTC
  17. RTC time: 二 2023-12-12 04:12:23
  18. Time zone: Asia/Shanghai (CST, +0800)
  19. System clock synchronized: no
  20. NTP service: inactive
  21. RTC in local TZ: no
  22. [root@server ~]# timedatectl list-timezones | grep Asia # 查看可用时区
  23. [root@server ~]# timedatectl set-timezone Asia/Shanghai # 设置时区
复制代码
1.3.2. date命令设置

  1. [root@server ~]# date # 显示
  2. [root@server ~]# date +"%Y-%m-%d %H:%M:%S" # 格式显示
  3. # 设置日期时间
  4. [root@server ~]# date -s 2023-11-15
  5. 2023年 11月 15日 星期三 00:00:00 CST
  6. [root@server ~]# date -s 14:33:33
  7. 2023年 11月 15日 星期三 14:33:33 CST
  8. [root@server ~]# date
  9. 2023年 11月 15日 星期三 14:33:34 CST
复制代码
留意:以便于以后的实验正常执行,可规复快照后继承
1.4. NTP

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

1.chrony是一个开源的自由软件,它能资助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。
2.chrony由两个程序构成,分别是chronyd和chronyc
(1)chronyd:是一个配景运行的守护进程,用于调解内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
(2)chronyc:提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作
3.留意:Chrony与NTP都是时间同步软件,两个软件不能够同时开启,会出现时间冲突,openeuler中默认使用chrony作为时间服务器,不在支持NTP软件包
  1. [root@server ~]# systemctl status ntp # 查看ntp状态
复制代码


2. 安装与配置

2.1. 安装:

  1. # 默认已安装,若需要安装则可执行:
  2. [root@server ~]# yum install chrony -y
  3. [root@server ~]# systemctl start chronyd
  4. [root@server ~]# systemctl enable chronyd
复制代码
2.2. Chrony配置文件分析

主配置文件:/etc/chrony.conf
  1. [root@server ~]# vim /etc/chrony.conf
  2. # 使用 pool.ntp.org 项目中的公共服务器。
  3. # 或者使用server开头的服务器,理论上想添加多少时间服务器都可以
  4. # iburst表示的是首次同步的时候快速同步
  5. pool pool.ntp.org iburst
  6. # 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间 补偿调整。
  7. driftfile /var/lib/chrony/drift
  8. # 如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进。
  9. # Allow the system clock to be stepped in the first three updates if its offset is
  10. larger than 1 second.
  11. makestep 1.0 3
  12. # 启用实时时钟(RTC)的内核同步。
  13. # Enable kernel synchronization of the real-time clock (RTC).
  14. rtcsync
  15. # 通过使用 hwtimestamp 指令启用硬件时间戳
  16. # Enable hardware timestamping on all interfaces that support it.
  17. #hwtimestamp *
  18. # Increase the minimum number of selectable sources required to adjust the systemclock.
  19. #minsources 2
  20. # 指定 NTP 客户端地址,以允许或拒绝连接到扮演时钟服务器的机器
  21. # Allow NTP client access from local network.
  22. #allow 192.168.48.0/24
  23. # Serve time even if not synchronized to a time source.
  24. # local stratum 10
  25. # 指定包含 NTP 身份验证密钥的文件。
  26. # Specify file containing keys for NTP authentication.
  27. # keyfile /etc/chrony.keys
  28. # 指定日志文件的目录。
  29. # Specify directory for log files.
  30. logdir /var/log/chrony
  31. # 选择日志文件要记录的信息。
  32. # Select which information is logged.
  33. # log measurements statistics tracking
复制代码
2.3. 同步时间服务器

2.3.1. 授时中心

  1. 210.72.145.44 国家授时中心
  2. ntp.aliyun.com 阿里云
  3. s1a.time.edu.cn 北京邮电大学
  4. s1b.time.edu.cn 清华大学
  5. s1c.time.edu.cn 北京大学
  6. s1d.time.edu.cn 东南大学
  7. s1e.time.edu.cn 清华大学
  8. s2a.time.edu.cn 清华大学
  9. s2b.time.edu.cn 清华大学
  10. s2c.time.edu.cn 北京邮电大学
  11. s2d.time.edu.cn 西南地区网络中心
  12. s2e.time.edu.cn 西北地区网络中心
  13. s2f.time.edu.cn 东北地区网络中心
  14. s2g.time.edu.cn 华东南地区网络中心
  15. s2h.time.edu.cn 四川大学网络管理中心
  16. s2j.time.edu.cn 大连理工大学网络中心
  17. s2k.time.edu.cn CERNET桂林主节点
  18. s2m.time.edu.cn 北京大学
  19. ntp.sjtu.edu.cn 202.120.2.101 上海交通大学
复制代码
2.3.2. 实验1

同步时间
第一步:先修改成错误时间
  1. [root@server ~]# date -s 10:30
  2. 2023年 05月 30日 星期二 10:30:00 CST
复制代码
第二步:编制chrony的配置文件
  1. [root@server ~]# vim /etc/chrony.conf
  2. # 定位第3行,删除后添加阿里的时间同步服务地址
  3. server ntp.aliyun.com iburst
  4. # 注意:也可以先清空chrony.conf内容,将阿里开源提供的时间服务器推荐配置复制粘贴到该文件中
  5. server ntp.aliyun.com iburst
  6. stratumweight 0
  7. driftfile /var/lib/chrony/drift
  8. rtcsync
  9. makestep 10 3
  10. bindcmdaddress 127.0.0.1
  11. bindcmdaddress ::1
  12. keyfile /etc/chrony.keys
  13. commandkey 1
  14. generatecommandkey
  15. logchange 0.5
  16. logdir /var/log/chrony
复制代码


第三步:重启服务
  1. [root@server ~]# systemctl restart chronyd
复制代码
第四步:时间同步
  1. [root@server ~]# chronyc sources -v
  2. .-- Source mode '^' = server, '=' = peer, '#' = local clock.
  3. / .- Source state '*' = current best, '+' = combined, '-' = not combined,
  4. | / 'x' = may be in error, '~' = too variable, '?' = unusable.
  5. || .- xxxx [ yyyy ] +/- zzzz
  6. || Reachability register (octal) -. | xxxx = adjusted offset,
  7. || Log2(Polling interval) --. | | yyyy = measured offset,
  8. || \ | | zzzz = estimated error.
  9. || | | \
  10. MS Name/IP address Stratum Poll Reach LastRx Last sample
  11. ==========================================================================
  12. ^* 203.107.6.88 2 6 17 56 +493us[ -335us] +/- 34ms
复制代码
第五步:检察时间是否同步
  1. [root@server ~]# timedatectl status
  2.                 Local time: 二 2023-05-30 10:24:39 CST
  3.                 Universal time: 二 2023-05-30 02:24:39 UTC
  4.                 RTC time: 二 2023-05-30 02:24:40
  5.                 Time zone: Asia/Shanghai (CST, +0800)
  6. System clock synchronized: yes # yes 表名已同步
  7.                 NTP service: active
  8.                 RTC in local TZ: no
  9. [root@server ~]# date
  10. 2023年 05月 30日 星期二 10:26:14 CST
复制代码
2.3.3. 实验2

搭建本地时间同步服务器
架构


要求
(1)服务端server向阿里时间服务器进行时间同步
(2)客户端node1向服务端server进行时间同步
第一步:定位服务端server
  1. # 安装软件
  2. [root@server ~]# yum install chrony -y # 默认已安装
  3. # 编辑配置文件,定位第3行,修改为阿里的时间服务地址
  4. [root@server ~]# vim /etc/chrony.conf
  5. server ntp.aliyun.com iburst
  6. # 重启服务
  7. [root@server ~]# systemctl restart chronyd
  8. # 测试
  9. [root@server ~]# chronyc sources -v
  10. [root@server ~]# timedatectl status
  11. # 设置允许客户端时间同步
  12. [root@server ~]# vim /etc/chrony.conf
  13. 26 allow 192.168.48.131/24 # 定位第26行,设置谁可以访问本机进行同步
  14. [root@server ~]# systemctl restart chronyd
复制代码
第二步:定位客户端node1
  1. # 安装软件
  2. [root@node1 ~]# yum install chrony -y
  3. # 编辑配置文件
  4. [root@node1 ~]# vim /etc/chrony.conf # 修改第3行为server的地址
  5. server 192.168.48.130 iburst
  6. # 重启服务
  7. [root@node1 ~]# systemctl restart chronyd
  8. # 测试
  9. [root@node1 ~]# chronyc sources -v
  10. .-- Source mode '^' = server, '=' = peer, '#' = local clock.
  11. / .- Source state '*' = current best, '+' = combined, '-' = not combined,
  12. | / 'x' = may be in error, '~' = too variable, '?' = unusable.
  13. || .- xxxx [ yyyy ] +/- zzzz
  14. || Reachability register (octal) -. | xxxx = adjusted offset,
  15. || Log2(Polling interval) --. | | yyyy = measured offset,
  16. || \ | | zzzz = estimated error.
  17. || | | \
  18. MS Name/IP address Stratum Poll Reach LastRx Last sample
  19. =========================================================================
  20. ^* 192.168.48.130 3 6 17 39 +20us[ +252us] +/- 38ms
  21. [root@node1 ~]# timedatectl status
  22.       Local time: 二 2023-05-30 11:08:37 CST
  23.       Universal time: 二 2023-05-30 03:08:37 UTC
  24.       RTC time: 二 2023-05-30 03:08:38
  25.       Time zone: Asia/Shanghai (CST, +0800)
  26. System clock synchronized: yes
  27.      NTP service: active
  28.       RTC in local TZ: no
复制代码
留意:客户端同步失败的缘故原由
(1)查抄网络连通性,需要能ping通
(2)查抄服务端的allow参数
(3)需要重启服务
2.4. chronyc命令

2.4.1. 检察时间服务器:

  1. [root@server ~]# chronyc sources -v # -v参数表示显示内容是否有解释
  2. .-- Source mode '^' = server, '=' = peer, '#' = local clock.
  3. / .- Source state '*' = current best, '+' = combined, '-' = not combined,
  4. | / 'x' = may be in error, '~' = too variable, '?' = unusable.
  5. || .- xxxx [ yyyy ] +/- zzzz
  6. || Reachability register (octal) -. | xxxx = adjusted offset,
  7. || Log2(Polling interval) --. | | yyyy = measured offset,
  8. || \ | | zzzz = estimated error.
  9. || | | \
  10. MS Name/IP address Stratum Poll Reach LastRx Last sample
  11. ======================================================================
复制代码
2.4.2. chronyc sources输出分析

(1)M:这表现信号源的模式。^表现服务器,=表现对等方,#表现本地连接的参考时钟。
(2)S:此列指示源的状态


Name/IP address:表现服务器源的名称或IP地址
Stratum:表现源的层级,层级1表现本地连接的参考时钟,第2层表现通过第1层级计算机的时钟实现同步,依此类推
Poll:表现源轮询频率,以秒为单元,值是基数2的对数,比方值6表现每64秒进行一次丈量,chronyd会根据当时的情况自动改变轮询频率
Reach:表现源的可达性的锁存值(八进制数值),该锁存值有8位,并在当接收或丢失一次时进行一次更新,值377表现最后八次传输都收到了有用的回复
LastRx:表现从源收到最近的一次的时间,通常是几秒钟,字母m,h,d或y分别表现分钟,小时,天或年
Last sample:表现本地时钟与前次丈量时源的偏移量,方括号左侧的数字表现原始丈量值,方括号右侧表现偏差值,+/-指示器后面的数字表现丈量中的误差范围。正偏移表现本地时钟位于源时钟之前

2.5. 其它命令

检察时间服务器的状态
  1. [root@server ~]# chronyc sourcestats -v 1
复制代码
检察时间服务器是否在线
  1. [root@server ~]# chronyc activity -v
复制代码
同步系统时钟
  1. [root@server ~]# chronyc -a makestep 1
复制代码

3. 常见时区

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表