[RHCE学习笔记]RedHat通过时间服务器完成时间同步服务chrony
目录
前言
我们的电子设备如何保证显示准确的时间而不出错的呢?
其实在我们的电子设备当中有一个RTC时钟模块,实质是一个掉电后还继续运行的定时器,在设备开机联网后,RTC会通过系统内部固化的程序向指定的时间源服务器发起访问进行时钟同步
软件和软件之间沟通用网络协议NTP,时间服务器的端口号默认是123。
(默认的,ssh端口号是22;telnet端口号是23;web端口号是80,加密后是443;dns端口号是53)

软件安装
进行时间同步需要用到的软件是Chrony。Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器 (NTP)同步,因此让你的计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服 务。
Chrony由两个程序组成,分别是chronyd和chronyc。
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机 增减 时间的比率,并对此进行补偿。
chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机 上工 作,也可以在一台不同的远程计算机上工作。
在服务端和客户端安装软件(一般默认都已经安装在系统内)
mount /dev/sr0 /mnt #将光盘挂载到本地仓库的路径下
yum install chrony.x86_64
rpm -ql chrony | grep /etc #列出软件安装生成的相关配置文件
chronyd这个服务默认情况下是开启的状态,不需要进行起服务的操作
同步公共时间服务器
服务端配置
进入chronyd服务的配置文件,添加允许访问服务端的客户端网段,本文中客户端IP是192.168.128.80
vim /etc/chrony.conf
在配置文件中找到 # Allow NTP client access from local network。在下面添加允许访问的客户端网段"192.168.128.0/24",保存退出,关闭防火墙并重启服务。
systemctl stop firewalld.service
systemctl restart chronyd.service
客户端配置
进入chronyd服务的配置文件,添加需要向目标服务端进行时间同步的服务端IP,本文中服务端IP是192.168.128.90
vim /etc/chrony.conf
在配置文件中找到 # Please consider joining the pool。在下面添加同步时间服务器的IP: server 192.168.128.90 iburst,保存退出,重启服务,不需要关闭防火墙。
systemctl restart chronyd.service
chronyc sources #查看是否和时间服务器同步成功
显示如下:
[root@redhat-9 ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
=====================================================================
^* 192.168.128.90 3 6 7 1 +60ns[ -4630d] +/- 32ms
补充:如何知道客户端有没有成功同步到时间同步服务器
* 表示chronyd当前同步到的源,即同步成功
+ 表示可接受的信号源,与选定的信号源组合在一起
? 指示已失去连接性或其数据包未通过所有测试的源。即同步失败
实验验证
[root@redhat-9 ~] date -s "20120512 05:20" #修改系统当前时间
Sat May 12 05:20:00 AM CST 2012
[root@redhat-9 ~] date #查看系统当前时间
Sat May 12 05:20:03 AM CST 2012
[root@redhat-9 ~] systemctl restart chronyd.service #重启服务
[root@redhat-9 ~] chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===========================================================================
^* 192.168.128.90 3 6 7 1 +60ns[ -4630d] +/- 32ms
[root@redhat-9 ~] date
Mon Jan 13 05:20:31 PM CST 2025 #时间发生改变
局域网内同步时间服务器
服务端配置
进入chronyd服务的配置文件,找到 # Serve time even if not synchronized to a time source. 在下面添加"local stratum 10";同时要将该服务器作为母钟同步给其他客户端就需要将前文中# Please consider joining the pool 的"server 192.168.128.90 iburst”注释掉,或者编辑 /etc/resolv.conf 将里面的dns注释掉(两者选其一即可),配置完成后重启服务,关闭防火墙。
vim /etc/chrony.conf #按照上面的文字配置文件
systemctl restart chronyd.service
chronyc sources #查看同步状态
显示如下:
[root@server-side ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
=========================================================================
客户端配置
无需额外配置只需要重启服务
systemctl restart chronyd.service
chronyc sources #查看同步状态
实验验证
设置服务端母钟时间
[root@server-side ~]# date -s "20120817 5:12"
Fri Aug 17 05:12:00 AM CST 2012
[root@server-side ~]# date
Fri Aug 17 05:12:02 AM CST 2012
重启服务后回到客户端查看当前系统时间
[root@redhat-9 ~]# date
Mon Jan 13 06:10:50 PM CST 2025
重启服务后查看时间服务器同步状态
[root@redhat-9 ~]# systemctl restart chronyd.service
[root@redhat-9 ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
====================================================================
^? 192.168.128.90 10 6 1 2 +4533d[ +4533d] +/- 267us
[root@redhat-9 ~]# chronyc sources #这里需要等待几秒才能同步成功
MS Name/IP address Stratum Poll Reach LastRx Last sample
====================================================================
^* 192.168.128.90 10 6 17 36 +4015ns[-2031ns] +/- 194us
再次查看当前系统时间,此时显示的时间和服务端母钟的时间保持一致。
[root@redhat-9 ~]# date
Fri Aug 17 05:29:37 AM CST 2012
更多推荐
所有评论(0)