前言
NTP时间同步是一种时间同步网络技术。
有多种时间同步技术,每一种技术都各有特点,不同技术的时间同步精度也存在较大的差异。
一、Chrony
1、简述
chrony是网络时间协议(NTP)的另一种实现,与网络时间协议后台程序(ntpd)不同,它可以更快地且更准确地同步系统时钟,ntpd仍然包含其中以供需要运行NTP服务的客户使用。
两个主要程序:chronyd和chronyc
chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿
chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可在一台不同的远程计算机上工作
服务unit文件: /usr/lib/systemd/system/chronyd.service
监听端口: 323/udp,123/udp
配置文件: /etc/chrony.conf
2、时间时区概念理解
UTC:协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC
GMT:是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式。以地球自转为基础的时间计量系统。地球自转的角度可用地方子午线相对于地球上的基本参考点的运动来度量。
CST:中国标准时间 (China Standard Time)
DST:夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用(中国不使用)。
二、时间服务器
1、软件包
[root@chronyd_host ~]# yum -y install chrony // 安装时间同步服务软件包
[root@chronyd_host ~]# rpm -qc chrony // 查看软件包下有哪些配置文件
/etc/chrony.conf
/etc/chrony.keys
/etc/logrotate.d/chrony
/etc/sysconfig/chronyd
2、修改配置文件
主配置文件: /etc/chrony.conf
# 修改配置文件
[root@chronyd_host ~]# vim /etc/chrony.conf
allow 192.168.1.100/24 // 允许那个IP或网络访问NTP
allow 0.0.0.0/0 // 允许所有的客户端使用
deny 192.168.2.10 // 拒绝那个IP或网络访问NTP
local stratum 10 // 设置NTP服务器的层数量
3、时间服务管理与基础命令
[root@chronyd_host ~]# systemctl restart chronyd // 重启服务,让配置生效
[root@chronyd_host ~]# systemctl enable chronyd // 设置开机自启动
[root@chronyd_host ~]# timedatectl status // 查看时间同步状态
[root@chronyd_host ~]# timedatectl set-ntp true // 开启网络时间同步
三、客户端
1、修改配置文件
主配置文件: /etc/chrony.conf
# 修改配置文件
[root@localhost ~]# vim /etc/chrony.conf
server chronyd_host iburst
allow 0.0.0.0/0 // 允许所有的客户端使用
2、启动服务
[root@localhost ~]# systemctl start chronyd // 重启服务,让配置生效
[root@localhost~]# systemctl enable chronyd // 设置开机自启动
[root@localhost ~]# chronyc sources -v // 查看时间是否同步
Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, ' ' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
=====================================================================
^192.168.2.100
: 代表当前状态为同步正常
? :代表不可达
3、常用命令
[root@localhost ~]# timedatectl // 显示系统当前日期和时间
// 设置日期和时间
[root@localhost ~]# timedatectl set-time "YYYY-MM-DD HH:MM:SS"
[root@localhost ~]# timedatectl set-time "YYYY-MM-DD"
[root@localhost ~]# timedatectl set-time "HH:MM:SS"
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai // 设置时区