linux 下 使用chrony配置多个节点时间同步服务器

发布于 2021-06-07  4.55k 次阅读


Chrony有两个核心组件,分别是:
1.chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。
2.chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作

环境:
192.168.232.131 主Chrony服务器1(可以访问外网)
192.168.232.132 备Chrony服务器2(可以访问外网)
192.168.232.111 客户端服务器(无法访问外网)

centos 6以上版本默认安装了chrony服务
使用rpm -qa|grep chrony 查看是否安装chrony 服务

如果未安装,执行安装即可:
yum install chrony -y

2.启动并加入开机自启动
systemctl enable chronyd

服务端配置(232.131和232.132):
vi /etc/chrony.conf

3.配置文件chrony.conf配置文件说明:

# 使用pool.ntp.org项目中的公共服务器。以server开,理论上添加多少时间服务器都可以。
# 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

# 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。 
driftfile /var/lib/chrony/drift 

# chronyd根据需求减慢或加速时间调整, 
# 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。 
# 该指令强制chronyd调整时期,大于某个阀值时步进调整系统时钟。 
# 只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。 
makestep 1.0 3 

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

# Enable hardware timestamping on all interfaces that support it. 
# 通过使用hwtimestamp指令启用硬件时间戳 
#hwtimestamp * 

#minsources 2 
# 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器 
#allow 192.168.0.0/16 

#本机不同步任何主机的时间,本机作为时间源
#local stratum 10

# 指定包含NTP验证密钥的文件。 
#keyfile /etc/chrony.keys 

# 指定日志文件的目录。
logdir /var/log/chrony

ip范围说明以及网段说明

  • 192.168.0.0/16范围在 192.168.0.0 和 192.168.255.255 之间,有 65,534 个可能的主机。
  • 192.168.0.0/18范围在 192.168.0.0 和 192.168.63.255 之间,有 16,382 个可能的主机。
  • 192.168.0.0/24范围在 192.168.0.0 和 192.168.0.255 之间,有 254 个可能的主机。

4.查看当前系统时区:

timedatectl
      Local time: Fri 2018-2-29 13:31:04 CST
  Universal time: Fri 2018-2-29 05:31:04 UTC
        RTC time: Fri 2018-2-29 08:17:20
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

如果你当前的时区不正确,请按照以下操作设置。

查看所有可用的时区:
timedatectl list-timezones

修改时区为Asia/Shanghai
timedatectl set-timezone 'Asia/Shanghai'

设置完时区后,强制同步下系统时钟:
$ chronyc -a makestep

5.1方法一:
修改Chrony服务器 (232.131和232.132)配置文件chrony.conf
将配置文件allow 192.168.0.0/16 注释取消其他不变

将客户端(232.111)配置文件 对应得时间服务器配置注释掉
#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.232.131 iburst
server 192.168.232.132 iburst 来同步时间

修改完配置文件 重启服务systemctl restart chronyd


这种方法优点是可以,232.131和232.132 这个两台服务器 时间能够保证准确,同步给其他服务时候,可以保证时间得准确性。

5.2方法二:
修改Chrony服务器 (232.131和232.132)配置文件chrony.conf
allow 192.168.0.0/16 注释取消
将原有得四个默认得时间同步服务器配置修改为:
server 192.168.232.131 iburst
server 192.168.232.132 iburst

此操作仅在232.231节点执行,取消注释 local stratum 10.
修改完配置文件 重启服务systemctl restart chronyd
以下是232.231得配置截图

这种方案得缺点是 当232.131 时间不正确得时候,由于232.231是主时间同步服务器,会将错误得时间同步给232.132服务器,导致所有得客户端时间时间都会同步错误得时间。