如何保证大数据开发的服务器时间同步?chrony服务安装与配置

为什么要用chrony代替ntp?

CentOS8以前,推荐使用的时间同步软件都是ntpd,但是现在,官方更多的会推荐使用chrony。这里要分清一个概念ntpd软件和NTP协议不是一个东西,NTP协议是网络时间同步协议。而chrony和ntpd都是实现NTP协议的软件。我们所谓的的"chrony代替ntp",只是chrony代替了ntpd这个软件。


再强调一遍:chrony是实现NTP协议的其中一个软件。

之所以chrony会代替ntp,Tristone认为主要有如下几个原因:

1、chrony是新的设计,ntpd是老的设计,chrony的设计思想更先进;

2、chrony的配置参数比ntpd稍微简单一些;

3、chrony的运行速度比ntpd要快的多。

Chrony相关知识

Chrony有两个核心组件,chronyd和chronyc

chronyd:是守护进程,它负责:

1、将server上时间获取到本机;

2、调整本机内核中运行的系统时间(完成时间同步);

3、对外提供时间同步服务(作为时间同步服务器server)。

在细节上,如果本机时间与服务器时间差距过大,chronyd还会确定每次增减时间的比率,并对此进行调整补偿。

chronyc:是用户界面,它负责:

1、监控chrony的性能;

2、对chrony进行多样化配置;

测试环境

两台CentOS Linux 8服务器,IP配置如下:

192.168.1.240:服务端(Server),负责给客户端提供时间同步服务

192.168.1.241:客户端(client),从240上获取时间,客户端可以增加到N个都没有问题

安装Chrony

chrony的安装特别简单,以下一个命令搞定

yum -y install chrony

配置Chrony

运行下列命令,修改配置文件

vi /etc/chrony.conf

相关的参数设置如下:

#从时间服务器192.168.1.231上获取时间,如果有别的时间服务器,再添加一行就行,总数没上限。

server 192.168.1.240 iburst

#根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿

#甚至可能的话,会从时钟服务器获得较好的估值

driftfile /var/lib/chrony/drift

#chronyd根据需求减慢或加速时间调整,Tristone发现网上有好多互相抄的内容,让人不知所云

#这里表示时间的误差如果小于5秒,则通过减慢或加快时钟速度来逐渐调整时钟。

#如果时间的误差大于5秒,前3次更新时间时允许步进时间(一步到位调整时间)。

#如果改为:makestep 5 -1,则一直是按照一步到位的方式调整时间(慎用)

makestep 5 3

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

rtcsync

#允许哪个IP访问本服务器的时间服务

allow 192.168.1.0/24

#禁止哪个IP访问本服务器的时间服务

deny 192.168/16

#Get TAI-UTC offset and leap seconds from the system tz database.

#从system tz数据库中获取TAI-UTC偏移量和闰秒。

leapsectz right/UTC

#指定日志文件的目录。

logdir /var/log/chrony

#指定包含NTP验证密钥的文件。

#keyfile /etc/chrony.keys

如果你担心配置有问题,可以将你的"/etc/chrony.conf "内容清空,并将上述内容复制到里面。

每次修改完"/etc/chrony.conf "都需要重启一下chronyd服务

基本操作:

systemctl stop chronyd #停止chronyd服务

systemctl start chronyd #开始chronyd服务

systemctl restart chronyd #重启chronyd服务

systemctl status chronyd #查看chronyd服务状态

systemctl enable chronyd #开机启动chronyd服务

systemctl disable chronyd #禁止开机启动chronyd服务

chronyc sources -v #查看时间同步源,查看时间同步进度

#结果解释: *说明时间同步完成,如果为?说明不成功,检查防火墙再看看chronyd有没有重启。

chronyc sourcestats -v #查看时间同步源状态:

timedatectl set-local-rtc 1 #硬件时间默认为UTC:

timedatectl set-ntp yes #启用NTP时间同步:

chronyc tracking #校准时间服务器:


防火墙允许对外提供服务

firewall-cmd --add-service=ntp --permanent #永久允许对外提供NTP时间服务

firewall-cmd --reload


两台服务器都按照这个配置操作,就完成了服务器的时间同步工作。同理,多台服务器依然可以采用这个配置进行时间同步,也就是一台Chrony可以给N台服务器提供时间校对服务。

举报
评论 0