chrony服务器(1)
简介
NTP
- NTP(Network Time Protocol,网络时间协议)是一种用于同步计算机系统时间的协议
- 是TCP/IP协议族中的一个应用层协议,主要用于在分布式时间服务器和客户端之间进行时钟同步,提供高精准度的时间校正
- 通过分层的时间服务器架构,确保网络中所有设备的时间保持一致
- NTP基于UDP协议进行传输,使用的UDP端口号为123
- 是互联网上最广泛使用的时间同步协议,其精度在局域网(LAN)内可达1毫秒内,在广域网(WAN)上可达几十毫秒内
Chrony介绍
- 基于 NTP 协议的高精度时间同步工具,广泛应用于服务器和分布式系统中
-
Chrony 的核心组件分为 chronyd和chronyc
-
chronyd:后台运行的守护进程,负责调整内核中运行的系统时钟和时钟服务器同步,确定计算机增减时间的比率,并对此进行补偿
-
chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在 chronyd 实例控制的计算机上工作,也可在一台不同的远程计算机上工作
-
重要性:
- 由于IT系统中,准确的计时非常重要,有很多种原因需要准确计时:
- 在网络传输中,数据包括和日志需要准确的时间戳
- 各种应用程序中,如订单信息,交易信息等 都需要准确的时间戳
Linux的两个时钟:
-
硬件时钟RTC (Real Time Clock):即BIOS时钟,也就是我们主板中用电池供电的时钟,是将时间写入到BIOS中,系统断电后时间不会丢失,可以在开机时通过主板程序中进行设置
# 查看硬件时间
[root@server ~]# hwclock
2023-05-30 09:48:32.535594+08:00
-
系统时钟 (System Clock) :顾名思义也就是Linux系统内核时钟、软件时钟,是由Linux内核来提供的,系统时钟是基于内存,如果系统断电时间就会丢失
# 查看系统时间
[root@server ~]# date
2023年 05月 30日 星期二 09:50:50 CST
[root@server ~]# date -s 10:00 # 修改为错误的时间
2023年 05月 30日 星期二 10:00:00 CST
[root@server ~]# date
2023年 05月 30日 星期二 10:00:01 CST
[root@server ~]# hwclock -s # 向硬件时间同步
[root@server ~]# date
2023年 05月 30日 星期二 09:51:50 CST
设置日期时间
timedatectl命令设置
# [root@server ~]# timedatectl # 显示当前的日期和时间
Local time: 三 2023-11-15 13:00:26 CST # 本地时间
Universal time: 三 2023-11-15 05:00:26 UTC # 世界时间
RTC time: 三 2023-11-15 06:16:16 # 硬件时间
Time zone: Asia/Shanghai (CST, +0800) # 时区
System clock synchronized: yes # 时间是否已同步
NTP service: active # 时间同步服务已启动
RTC in local TZ: no # no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设
置为本地时间
[root@server ~]# systemctl status chronyd # 查看时间同步服务状态(由于默认使用chrony服务同步时间,不再使用ntp服务)
[root@server ~]# timedatectl set-ntp no # 关闭时间同步,以方便修改日期时间
[root@server ~]# systemctl status chronyd
[root@server ~]# timedatectl set-time "2023-12-12" # 设置新日期
[root@server ~]# timedatectl set-time "12:12:12"
[root@server ~]# timedatectl
Local time: 二 2023-12-12 12:12:22 CST
Universal time: 二 2023-12-12 04:12:22 UTC
RTC time: 二 2023-12-12 04:12:23
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
[root@server ~]# timedatectl list-timezones | grep Asia # 查看可用时区
[root@server ~]# timedatectl set-timezone Asia/Shanghai # 设置时区
date命令设置
[root@server ~]# date # 显示
[root@server ~]# date +"%Y-%m-%d %H:%M:%S" # 格式显示
# 设置日期时间
[root@server ~]# date -s 2023-11-15
2023年 11月 15日 星期三 00:00:00 CST
[root@server ~]# date -s 14:33:33
2023年 11月 15日 星期三 14:33:33 CST
[root@server ~]# date
2023年 11月 15日 星期三 14:33:34 CST
注意:以便以后实验正常执行,可以恢复快照执行