多台服务器时钟同步

背景介绍

当所有应用在都集中在同一台服务器上,我们可能感受不到时钟同步的重要性。然而,一旦进行分布式部署时,始终未同步就会带来许多莫名其妙的问题,比如认证服务器时钟滞后应用服务器,进行OAuth 2认证时即使拿到认证码也是无效的;认证服务器时钟大幅超前又会出现session过期的问题;还有时钟不同步代理的业务逻辑问题等。

NTP

NTP全称Network Time Protoco,网络时间协议。

安装

1
yum install -y ntp

配置

1
vim /etc/ntp.conf

配置文件ntp.conf中包含了默认的配置,我们只需根据自己的环境做适当的修改,如启用同步限制:

1
restrict default nomodify notrap nopeer noquery

服务端

对于服务端需要设置server同步标准时间,若服务位于内网无法访问外部网络,只能使用本地时间,添加如下配置:

1
server 127.127.1.0 iburst local clock

注意: 若未添加本地时间且不可访问外部时间,客户端会报no server suitable for synchronization found错误。
启动ntp服务:

1
service ntpd start

客户端

发送如下命令进行同步:

1
ntpdate [ntp server ip]

成功响应会出现如下响应:

1
16 Sep 21:37:00 ntpdate[28240]: adjust time server [ntp server ip] offset 0.009964 sec

同步失败响应:

1
16 Sep 21:36:47 ntpdate[28239]: no server suitable for synchronization found

同步失败排查:

  • 服务端ntpd服务是否启动
  • 服务端防火墙是否拦截123端口
  • 服务启动后客户端需要等待一段时间后再进行同步
  • 检查服务端配置文件ntp.conf

参考资料

  1. 网络时间协议
0%