有关时间同步配置的几个说明

大家都知道在linux环境下,时间同步的方式主要有ntpdate和chrony两种方式,时间同步源可以使用互联网也可以使用内部的源。

在某些情况下,如果节点不能访问外网,就需要使用内部的时间同步服务器或者搭建一个时间同步服务器,用来保障集群内节点时间的时间同步。有关如何搭建时间服务器的方法不在此进行复述,大家可以自行查找相关资料。这里仅对搭建内部时间服务器和时间同步操作遇到的问题或者经验进行分享(以CentOS7.7环境操作为例)。

时间服务器的数量
在没有办法保证节点时间完全一致的情况下,建议使用1个节点作为时间服务器,而不要使用集群的方式。
集群内时间同步的重要目前是保证集群内节点的时间一致,而不是特别强调跟互联网时间一致,否则的话,直接跟互联网进行时间同步好了,没有必要再自定搭建时间服务器。
因为机器硬件的差异,不同的节点经过长时间运行的情况下,有可能出现它们之间的时间会出现偏差。这样就导致其它节点刚刚向其中一个时间服务器同步时间之后,再周期性向另一个时间服务器同步时间之后,时间来回发生变化的情况。 因此建议只使用一个节点作为时间服务器,集群所有其余节点均向此节点进行时间同步。如果该时间同步服务器故障之后,再考虑重新搭建时间服务器的问题。

chrony方式配置
chrony是目前比较推荐的一种时间同步方式。在日常的使用中,如果更换/etc/chrony.conf配置文件中的服务器地址的话:
在客户端上重启chronyd服务的话,客户端能够很快进行时间同步并且NTP synchronized参数也会是yes状态。
在 客户端不重启chronyd服务的话,需要花费较长的时间(测试中相差5分钟,时间同步花费的时间差不多也是5分钟左右)完成时间同步,并且正常情况下NTP synchronized参数也会是yes状态。

使用chrony方式进行时间同步,如果失败的话可以从以下方面进行检查:
1.防火墙的配置 防火墙是否处于关闭状态或者对应的时间同步服务所需要的端口处于开放状态。
2.机器是否配置ntpdate定时同步 笔者在使用中出现节点上使用timedatectl命令查看NTP synchronized的值从yes变为no(重启chronyd服务变为yes过一段时间之后又变为no),并且使用chronyc sources -v命令查看对应的服务器状态为^* 10.0.X.Y 或者 ^? 10.0.X.Y 来回变化的状态。查看对应的服务状态报错:

chronyd: No suitable source for synchronisation

开始是以为配置了DNS,导致该节点可以访问外网所以状态不对。之所以这样判断是因为在系统日志中出现:

dbus[1064]: [system] Activating via systemd: service name='org.freedesktop.timedate1' unit='dbus-org.freedesktop.timedate1.service' 
systemd: Starting Time & Date Service... 
dbus[1064]: [system] Successfully activated service 'org.freedesktop.timedate1' 
systemd: Started Time & Date Service.

但是经过最终的排查,跟是否可以访问外网没有关闭,根源在于使用定时任务通过ntpdate方式进行了同步。将ntpdate的定时同步任务删除就恢复正常了。

ntpdate方式配置
ntpdate主要是通过定时任务的方式进行同步。这里强调一下,使用这种方式的时候,一定不要执行timedatectl set-ntp yes命令。
因为CentOS7.X版本自带、默认同步方式为chrony,因此如果执行timedatectl set-ntp yes命令,自动会把chronyd服务启动,使用chrony方式进行时间同步。
笔者测试将chronyd服务停止之后,执行timedatectl set-ntp yes命令之后,chronyd的服务状态变为running了。

使用timedatectl命令确认时间同步状态

命令timedatectl或者timedatectl status的输出示例:
      Local time: 二 2022-10-11 17:40:50 CST
  Universal time: 二 2022-10-11 09:40:50 UTC
        RTC time: 二 2022-10-11 09:40:50
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

NTP enable的值yes时,表示开启自动同步时间,此时,是不能手动修改时间的。
NTP synchronized的值yes时表示时间同步的(chrony方式)。

chrony方式下期望的结果(笔者测试中搭建了两个chrony的服务器,NTP enable的取值一个为yes一个为no都可以正常工作,个人倾向于应该为yes)

节点类型 NTP enable取值 NTP synchronized取值
服务端 yes/no no
客户端 yes yes

ntpdate方式下期望的结果

节点类型 NTP enable取值 NTP synchronized取值
服务端 no yes
客户端 no no

猜你喜欢

转载自blog.csdn.net/haiqinma/article/details/127267858
今日推荐