一.计算机设备上的两种时间
1.硬件时间
计算机主板BIOS上依靠主板电池供电维持运行的时间,设备关机后依然在持续计时,计算机系统开机启动时会自动读取这个时间。
2.系统时间
软件系统上的时间,软件启动后会去读取硬件时间,之后会独立于硬件时间运行。
二.配置同步时间服务器
1.安装服务
(1)安装chrony
[root@localhost ~]# yum install -y chrony
(2)开启chronyd服务
[root@localhost ~]# systemctl start chronyd
(3)设置开机自启动
[root@localhost ~]# systemctl enable chronyd
2.配置服务
chrony服务的配置主要是修改配置文件/etc/chrony.conf,在配置文件中修改要求参数
(1)添加时间服务器(参照源头)
[root@localhost ~]# vim /etc/chrony.conf
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
pool ntp1.aliyun.com iburst
pool ntp2.aliyun.com iburst
pool ntp3.aliyun.com iburst
pool ntp4.aliyun.com iburst
pool ntp5.aliyun.com iburst
pool ntp6.aliyun.com iburst
//推荐使用阿里的时间端
//也可以书写ip地址,以此来同步目标的系统时间
(2) allow选项
/etc/chrony.conf中文本“Allow NTP client access from local network.”处可以指定ntp可以从客户端从本地网络访问。格式为allow ip/掩码
(3)从配置文件中保存退出后,重启chronyd服务
[root@localhost ~]# systemctl restart chronyd
(4)通过命令进行查看是否同步,出现^*即表示有可同步的源,符号具体含义参照后文
[root@localhost ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ 110.42.98.138 2 6 377 59 -2084us[-2084us] +/- 39ms
^- ntp8.flashdance.cx 2 6 377 63 +104us[ -60us] +/- 89ms
^- ntp1.flashdance.cx 2 6 377 126 -9104us[-9114us] +/- 96ms
^* time.neu.edu.cn 1 6 377 60 +2861us[+2696us] +/- 29ms
[root@localhost ~]# 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
===============================================================================
^+ 110.42.98.138 2 6 377 65 -2228us[-2084us] +/- 39ms
^- ntp8.flashdance.cx 2 6 377 69 -39us[ -60us] +/- 89ms
^- ntp1.flashdance.cx 2 6 377 2 +1024us[+1172us] +/- 93ms
^* time.neu.edu.cn 1 6 377 1 +3214us[+3362us] +/- 29ms
(5)通过date或者命令timedatectl查询
通过date或者命令timedatectl查询,“NTP synchronized: yes”即表示同步成功。符号具体含义参照后文。
[root@localhost ~]# timedatectl
Local time: 一 2024-09-23 18:08:58 CST
Universal time: 一 2024-09-23 10:08:58 UTC
RTC time: 一 2024-09-23 10:08:58
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@localhost ~]#
三.搭建主从时间服务器
搭建两台虚拟机,一台作为服务器端,一台作为客户端
1.服务器端
先保证能够正确同步时间,后将自己搭建为服务器,并允许第二台虚拟机ip所在网段可以通过此服务器进行时间同步
vim /etc/chrony.conf
allow 192.168.202.0/24
下面是完整的配置文件内容。
[root@localhost ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool 2.rocky.pool.ntp.org iburst
# Use NTP servers from DHCP.
sourcedir /run/chrony-dhcp
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# 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
# Allow NTP client access from local network.
allow 192.168.202.0/24
# Serve time even if not synchronized to a time source.
#local stratum 10
# Require authentication (nts or key option) for all NTP sources.
#authselectmode require
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony
# Insert/delete leap seconds by slewing instead of stepping.
#leapsecmode slew
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
重启chronyd服务。
2.客户端
像上文一样将虚拟机1的ip地址作为server写入配置文件,重启服务即可。
(如下IP仅为演示,实际替换为你实验的服务器端的IP)
vim /etc/chrony.conf
server 192.168.202.41 iburst
下面是完整的配置文件内容。
[root@localhost ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
server 192.168.202.41 iburst
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool 2.rocky.pool.ntp.org iburst
# Use NTP servers from DHCP.
sourcedir /run/chrony-dhcp
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# 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
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# Require authentication (nts or key option) for all NTP sources.
#authselectmode require
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony
# Insert/delete leap seconds by slewing instead of stepping.
#leapsecmode slew
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
重启chronyd服务。
3.注意:关闭防火墙+关闭selinux
配置主从时间同步,服务器端需要关闭防火墙(可参照专栏相关文章) +SElinux。
###关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl start firewalld.service
systemctl is-enabled firewalld.service
systemctl disable firewalld.service
systemctl enable firewalld.service
###关闭SELinux
getenforce
setenforce 0
vim /etc/selinux/config
把
SELINUX=enforcing
修改成
SELINUX=disabled
四.chrony命令参数详解
上述步骤完成后通过命令行查看同步状态以及解析输出信息含义
格式:chronyc+参数
参数 | 参数含义 |
sources (-v) | 查看时间同步生效情况,-v可以生成详细符号解释便于判断 |
sourcestats (-v) | 查看服务状态, -v可以生成详细符号解释便于判断 |
activity | 查看服务器是否在线 |
tracking | 查看服务详细信息 |
-a makestep | 强制同步系统时间 |
五.chrony展示信息中的特殊名词解释
1.sources -v中显示的符号含义
[root@localhost ~]# 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
===============================================================================
^+ 110.42.98.138 2 6 377 65 -2228us[-2084us] +/- 39ms
^- ntp8.flashdance.cx 2 6 377 69 -39us[ -60us] +/- 89ms
^- ntp1.flashdance.cx 2 6 377 2 +1024us[+1172us] +/- 93ms
^* time.neu.edu.cn 1 6 377 1 +3214us[+3362us] +/- 29ms
[root@localhost ~]#
(1)M: 表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。
(2)S:指源的状态:
*表示chronyd当前已经同步到的源。
+表示可接受的信号源,与选定的信号源组合在一起。
-表示被合并算法排除的可接受源
?指已失去连接性或者其数据包未通过所有测试的源。
x表示chronyd认为时虚假行情的时钟,即标记该时间与其他多数时间不一致
~表示时间似乎具有太多可变性
(3)Name/IP address:显示源的名称或IP地址,或参考时钟的参考ID。
(4)Stratum:显示时间来源的层,如其最近收到的样本中所报告。层1表示一台具有本地连接的参考时钟的计算机,与第1层计算机同步的计算机位于第2层,与第2层计算机同步的计算机位于第3层,依此类推。
(5)Poll:显示轮询源的速率,以秒为单位的时间间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd会根据当前情况自动更改轮询速率。
(6)Reach:显示源的可达性寄存器以八进制数字打印。寄存器有8位,并在每个从源接收或丢失的数据包上更新。值377表示从最后八次传输中收到了对所有用户的有效答复。
(7)LastRx:显示多长时间前从来源接收到了最后一个好的样本(在下一列中显示)。未通过某些测试的测量将被忽略。通常以秒为单位。字母m,h,d或y表示分钟,小时,天或年。
(8)Last sample:此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。可以用ns(表示纳秒),us (表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。
2.sourcestats -v中符号的含义
[root@localhost ~]# chronyc sourcestats -v
.- Number of sample points in measurement set.
/ .- Number of residual runs with same sign.
| / .- Length of measurement set (time).
| | / .- Est. clock freq error (ppm).
| | | / .- Est. error in freq.
| | | | / .- Est. offset.
| | | | | | On the -.
| | | | | | samples. \
| | | | | | |
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
110.42.98.138 24 12 30m -0.852 2.852 -3988us 1805us
ntp8.flashdance.cx 20 11 20m -0.966 2.943 -2030us 1379us
ntp1.flashdance.cx 21 10 32m -0.109 2.557 -240us 1961us
time.neu.edu.cn 24 12 29m +0.187 1.155 +2965us 690us
[root@localhost ~]#
(1)NP:测量集中的采样点数。
(2)NR: 具有相同符号的残差运行数。
(3)Span:测量集的长度(时间)。
(4)Frequency:估计时钟频率误差 (ppm)。
(5)Freq Skew:频率错误估计。
(6)Offset:估计偏移量。
(7)Std Dev:标准偏差。
3.timedatectl查询到的符号信息
[root@localhost ~]# timedatectl
Local time: 一 2024-09-23 18:08:58 CST
Universal time: 一 2024-09-23 10:08:58 UTC
RTC time: 一 2024-09-23 10:08:58
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@localhost ~]#
(1)CST:中国、澳大利亚等的标准时间。
(2)UTC:协调世界时间。将地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间。
(3)GMT:格林威治标准时间。指位于英国伦敦格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
(4)DST:夏令时,指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。
(5)RTC:实时时钟,可以提供时钟日历的功能。
关闭防火墙+关闭selinux
###关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl start firewalld.service
systemctl is-enabled firewalld.service
systemctl disable firewalld.service
systemctl enable firewalld.service
###关闭SELinux
getenforce
setenforce 0
vim /etc/selinux/config
把
SELINUX=enforcing
修改成
SELINUX=disabled