时间同步服务器
1. 时间同步服务
- 时间同步:多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP(Network Time Protocol )协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一。
- 时间同步实现:ntp,chrony。
- ntp:将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms,项目官网:http://www.ntp.org
- chrony : 实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬件时间戳或硬件参考时钟,可实现亚微秒的精度。
2. 时间同步服务的使用
2.1 系统时间及时区的管理
timedatectl set-time "2024-02-13 10:41:55" ##设定系统时间
timedatectl list-timezones ##显示系统的所有时区
timedatectl set-timezone "Asia/Shanghai" ##设定系统时区
timedatectl set-local-rtc 0|1 ##设定系统时间计算方式 ##0表示使用utc时间计算方式
练习扩充
时间控制(做之前一定要把rtc关了)
再克隆一份主机,修改ip
ssh -l root 172.25.254.200 (100的连接200)
timedatectl(查看系统时间)
系统时间=rtc时间(即硬件时间)和timezone时间总和 ----utc计算方式
改系统时间
watch -n 1 timedatectl (另一台100的监控)
200的改,先关同步的, systemctl stop chronyd.service
再改时间timedatactl set-time "2024-11-25 20:40:00"
改时区
timedatectl list-timezones 查看时区
timedatectl set-timezone "Asia/Baku"
启用rtc时间
timedatectl set-local-rtc 1 (监控的那方出现警告,系统时间是rtc时间)
用utc方式时间
timedatectl set-local-rtc 0
-
公告ntp地址
- Unix/linux类: ntp.aliyun.com,ntp1-7.aliyun.com
- windows类: time.pool.aliyun.com
- 国家授时中心服务器:ntp.ntsc.ac.cn
-
使用公共的ntp到本机
-
在RHEL 9 中使用的同步时间软件为hrony
-
chrony由两个程序组成,分别是chronyd和chronyc。
-
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
-
chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作
-
chrony作为client使用方法如下:
]# dnf install chrony –y ]# vim /etc/chrony.conf server ntp.ntsc.ac.cn iburst #server 指定时钟服务器地址 #iburst 当服务器可达时,发送一个八个数据包 #包间隔通常为2秒,可加快初始同步速度
-
-
显示同步信息
-
在RHEL9中我们可以使用chronyc 来查看时间同步情况
chronyc 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 =============================================================================== ^* 172.25.254.200 10 6 7 0 +303us[ +348us] +/- 538us M:时间源模式 ^表示服务器,=表示对等方,#表示本地连接的参考时钟 S:指源的状态 表示chronyd当前已经同步到的源。 + 表示可接受的信号源,与选定的信号源组合在一起。 表示被合并算法排除的可接受源 ? 指已失去连接性或者其数据包未通过所有测试的源。 x 表示chronyd认为时虚假行情的时钟,即标记该时间与其他多数时间不一致 ~ 表示时间似乎具有太多可变性 Name/IP address:显示源的名称或IP地址 Stratum:显示时间来源的层 Poll:显示轮询源的速率 Reach:显示源的可达性寄存器以八进制数字打印 LastRx:显示多长时间前从来源接收到了最后一个好的样本 Last sample:此列显示上次测量时本地时钟与源之间的偏移
-
练习扩充
ping ntp1.aliyun.com(ping通,表明这个可以用)
vim /etc/chrony.conf
指定时间原
pool ntp1.aliyun.com iburst(把时间立即向阿里云同步)
systemctl restart chronyd.service(重启)
chronyc sources -v(查看是否同步)(也可查看公共时间偏差)
2.2 时间同步服务器的搭建
在RHEL9中ntp的服务端同样默认使用chrony
chrony使用端口为udp 323,chrony兼容ntp所以在设定chrony为服务端是也会开启udp的123端口
-
chrony 的优势:
-
更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,对于并非全天24小时运行的虚拟计算机而言非常有用
-
能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用
-
在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性;
-
无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟
-
-
chrony的参数说明
- server #可用于时钟服务器, - iburst #选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包 #包间隔通常为2秒,可加快初始同步速度 - driftfile #根据实际时间计算出计算机增减时间的比率 - #将它记录到一个文件会在重启后为系统时钟作出补偿 - rtcsync #启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC) - allow / deny #指定一台主机、子网,或者网络以允许或拒绝访问本服务器 - bindcmdaddress #允许chronyd监听哪个接口来接收由chronyc执行的命令 - local stratum 10 #即使server指令中时间服务器不可用 - #也允许将本地时间作为标准时间授时给其它客户端
-
修改配置文件
[root@localhost ~]# vim /etc/chrony.conf allow 0.0.0.0/0 local stratum 10
练习扩充
用200的搭建一个时间原,客户和用户端用的同一个配置,200的相当于时间同步服务器的时间源主机
vim /etc/chrony.conf 这个文件里改这两个
pool 172.25.254.100 iburst
allow 0.0.0.0/0 允许所有人通过
local stratum 10 指定第几层
systemctl restart chronyd.service 重启这个服务
netstat -antlupe | grep chrony 查看开启的端口(323 接受时间的端口,123发送时间端口)
100的主机上
vim /etc/chrony.conf
pool 172.25.254.200 iburst 指定时间原
然后重启
systemctl status firewalld 一定要关闭服务器火墙
chronyc sources -v 查看