0%

使用ntp或chrony部署时间同步服务

软件系统尤其是分布式系统需要保持多个节点的主机时间一致。内网环境中可以从授时服务器同步时间,因为不是所有机器都有公网访问权限,因此在内网中搭建了NTP服务器,由NTP服务器向互联网授时服务器同步时间,其他内网服务器向内网NTP服务器同步时间。

通过配置ntp或chrony可以进行服务器时间同步,两者支持作为服务端提供授时服务,或作为客户端从授时服务器同步时间;两者可以单独使用,也可以搭配使用,但是同一主机不要同时启用以避免冲突。比如:

  • NTP服务器A使用ntp服务从互联网授时服务器同步时间,其他内网服务器使用ntp服务从A同步时间
  • NTP服务器A使用chrony服务从互联网授时服务器同步时间,其他内网服务器使用ntp服务从A同步时间
  • NTP服务器A使用ntp服务从互联网授时服务器同步时间,其他内网服务器使用chrony服务从A同步时间
  • NTP服务器A使用chrony服务从互联网授时服务器同步时间,其他内网服务器使用chrony服务从A同步时间

客户端也可以通过crontab+ntpdate的方式从授时服务器同步时间,但是这一方式会引起时间跳变,可能引起意想不到的bug;而ntp/chrony同步时间是步进式的,将逐步调整时间以达到一致

相比于ntp服务,chrony精度更高、同步更快,在centos 7中默认安装了chrony并默认启用

在此内网授时服务器和客户端均使用chrony服务,部署时间同步服务,使用的服务器如下:

  • 内网NTP服务器,192.168.231.129,从互联网授时服务同步时间
  • 内网服务器,192.168.231.130,从内网NTP服务器同步时间

NTP服务器部署

在192.168.231.129操作

修改/etc/chrony.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 修改同步时间的授时服务器server地址,替换为国内阿里云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 ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp7.aliyun.com minpoll 4 maxpoll 10 iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16
# 只允许内网192.168.231.1/24下服务器的客户端同步时间
# 不设置任何allow时默认不允许从当前节点同步,chrony服务只作为客户端从server同步时间
allow 192.168.231.1/24

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

启动chrony服务

1
2
systemctl restart chronyd
systemctl enable chronyd

如此,192.168.231.129节点将从阿里云NTP服务器同步时间,并可作为NTP服务器,允许192.168.231.1/24的主机从自身同步时间

时间同步配置

在192.168.231.130操作

修改/etc/chrony.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 修改同步时间的授时服务器server地址,替换为内网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 192.168.231.129 minpoll 4 maxpoll 10 iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16
# 不设置任何allow时默认不允许从当前节点同步,chrony服务只作为客户端从server同步时间

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

启动chrony服务

1
2
systemctl restart chronyd
systemctl enable chronyd

可使用以下命令查看时间同步配置是否生效

1
2
3
4
chronyc sources -v      #查看 ntp_servers
chronyc sourcestats -v #查看 ntp_servers 状态
chronyc activity -v #查看 ntp_servers 是否在线
chronyc tracking -v #查看 ntp 详细信息