背景介绍
当所有应用在都集中在同一台服务器上,我们可能感受不到时钟同步的重要性。然而,一旦进行分布式部署时,始终未同步就会带来许多莫名其妙的问题,比如认证服务器时钟滞后应用服务器,进行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