CentOS7时间和日期的同步 (chrony和)

时间:2023-03-08 17:35:17

CentOS 6版本,使用 hwclock

CentOS 7版本,使用timedatectl


1.基本概念

1.1 GMT,UTC,CST,DST时间

  • 世界标准时间

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。

  • 格林威治标准时间

格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

  • CST

中国标准时间(中国标准时间)

CentOS7时间和日期的同步 (chrony和)

  • DST

夏令时(夏令时)指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。

1.2 硬件时间和系统时间

  • 硬件时间

RTC(实时时钟)或CMOS时间,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

  • 系统时间

一般在服务器启动时复制RTC时间,之后独立运行,保存了时间,时区和夏令时设置。


2. timedatectl命令

2.1 使用帮助

CentOS7时间和日期的同步 (chrony和)

2.2命令示例

1、显示系统的当前时间和日期

CentOS7时间和日期的同步 (chrony和)

2.设置日期与时间

CentOS7时间和日期的同步 (chrony和)

CentOS7时间和日期的同步 (chrony和)

CentOS7时间和日期的同步 (chrony和)

3.查看所有可用的时区

CentOS7时间和日期的同步 (chrony和)

CentOS7时间和日期的同步 (chrony和)

 

4、设置时区

CentOS7时间和日期的同步 (chrony和)

5.设置硬件时间

硬件时间默认为UTC

CentOS7时间和日期的同步 (chrony和)

CentOS7时间和日期的同步 (chrony和)

6.启用时间同步 

yes或no; 1或0也可以

CentOS7时间和日期的同步 (chrony和)


3. Chrony服务

Chrony是网络时间协议的(NTP)的另一种实现,由两个程序组成,分别是chronyd和chronyc。

chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。

chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

优势:

  • 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,这对于并非全天24小时运行的台式计算机或系统而言非常有用。
  • 能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用。
  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响。
  • 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性。
  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟。

在CentOS7下为标配的时间同步服务,当然也可以使用以前的NTP同步方式,不过要安装NTP服务。

3.1安装使用

yum install chrony              安装chrony
systemctl start chronyd       启动chrony程序
systemctl enable chronyd    设置开机自启动

3.2配置文件

当Chrony启动时,它会读取/etc/chrony.conf配置文件中的设置。也就是锁,如果需要更改时间同步的服务器,修改此配置文件即可。

CentOS7时间和日期的同步 (chrony和)

stratumweight 0

# stratumweight指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,设置为0,让chronyd在选择源时忽略源的层级。

driftfile /var/lib/chrony/drift

# chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。

rtcsync

# rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。

makestep 10 3

# 通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。
# 该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。

#allow 192.168/16

# 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。

bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys

# 该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级。

commandkey 1

# 指定了/etc/chrony.keys中哪一条密码被使用

generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony

# 此参数指定了产生一个SHA1或MD5加密的密码,存放在/etc/chrony.keys中


4、chrony实例

4.1、在控制节点服务器安装并启用chrony
#yum install chrony                  安装chrony
#systemctl start chronyd          启动chrony程序
#systemctl enable chronyd      设置开机自启动
#systemctl status chronyd       查看启动状态
4.2、修改服务器主配置文件
CentOS7时间和日期的同步 (chrony和)
4.3、重启服务
#systemctl restart chronyd.service 
4.4、在客户端节点配置chrony。并修改配置文件
#yum install chrony
#vi /etc/chrony.conf
CentOS7时间和日期的同步 (chrony和)
4.5、重启客户端chrony
#systemctl restart chronyd.service 

5、常用命令

查看时间同步源:

$ chronyc sources -v

查看时间同步源状态:

$ chronyc sourcestats -v

设置硬件时间

硬件时间默认为UTC:

$ timedatectl set-local-rtc 1

启用NTP时间同步:

$ timedatectl set-ntp yes

校准时间服务器:

$ chronyc tracking

查看时间同步的信息来源
# chronyc sources
# chronyc sources -v


利用NTP实现集群时间同步
1、NTP介绍
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
2、环境说明
VMware中三台虚拟机:都是centOS7.2系统 IP
用途 192.168.182.141
ntpd服务器,用于与外部公共ntpd同步标准时间 192.168.182.142
ntpd客户端,用于与ntpd同步时间 192.168.182.143
ntpd客户端,用于与ntpd同步时间 #ping asia.pool.ntp.org     //https://www.ntppool.org/zh/use.html 
公网上有效的几个ntpd服务器:
ntp.fudan.edu.cn (复旦) 
asia.pool.ntp.org(台警大授时中心-*)
time.windows.com (微软公司授时主机-美国) 
time.nist.gov (美国)
pool.ntp.org

3 服务器端安装步骤

3.1 在服务器端都检测并安装ntpd
#which ntpd
#yum -y install ntpd 3.2 修改服务器端(IP:192.168.184.141)配置文件,
添加网关:192.168.184.2 子网掩码:255.255.255.0

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.184.2 mask 255.255.255.0 nomodify notrap     //添加此行,对本主机提供ntp服务

#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

server asia.pool.ntp.org prefer        //添加服务器,这个是本主机可以去此服务器同步时间的服务器,prefer表示优先
server 127.127.1.0                     //这是本地地址,如果外网无法使用,则使用本地时间
restrist asia.pool.ntp.org nomodify notrap noquery     //允许外网服务器对本地时间做修改

3.3 服务器端开启npt服务

#systemctl enable ntpd    //表示开机自动启动ntp服务

#systemctl start ntpd     //表示ntp服务

3.4 手动同步时间

这个提示表明NTP的端口已经被占用了,该端口默认为123,并且是UPD模式。可以使用nc或者netstat命令查看那个服务占用了此端口

# ntpdate pool.ntp.org     
9 Aug 13:49:33 ntpdate[1452]: the NTP socket is in use, exiting

一般情况下,别的服务是不会占用这个端口的,所以可能的结果是ntpd服务在占用。此时,可以使用ntpdate命令的-u参数解决此问题,即:

# ntpdate -u pool.ntp.org
15 May 11:19:13 ntpdate[28173]: adjust time server 202.118.1.81 offset -0.029390 sec

3.5 查看网络中的NTP服务器,同时显示客户端和每个服务器的关系

# ntpq -pn
CentOS7时间和日期的同步 (chrony和)

3.6 查看时间同步状态

#ntpstat

CentOS7时间和日期的同步 (chrony和)

4、在客户端安装并用NTP服务   IP:192.168.184.142/143

4.1 安装并检查ntp服务(参考3)

4.2 修改配置文件

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.184.141 nomodify notrap noquery           //添加此行,允许NTP服务端对本机时间进行修改

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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
server 192.168.184.141                      //添加需要向所同步的服务器端的IP

4.3 开启ntp服务(如上)

4.4 查看网络中的NTP服务器,同时显示客户端和每个服务器的关系

CentOS7时间和日期的同步 (chrony和)

需要同步过程时间,大概5-10分钟



参考:

1、官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-ntp.html

2、https://www.cnblogs.com/zhi-leaf/p/6282301.html

3、來源:简书         链接:https://www.jianshu.com/p/fb32239ccf2b

4、https://www.cnblogs.com/cloudos/p/NTP.html

5、https://www.cnblogs.com/WangLei1221/p/8282526.html

6、https://www.ntppool.org/zh/use.html