NTP内网时间同步方案chronyc

需求
内网(断网、无互联网)的几台服务器老是时间提前,一开始延时几秒后面慢慢变的几分钟,影响数据。
找管理员也是效果不理想,管理员那边是通过交换机的时间,然后母鸡通过vmtools强制推送到客户端上,交换机的时间也是人为设定的,也出现时间提前的情况。
内网内无NTP服务器
架构
- 光闸(网闸)摆渡互联网时间接口(垃圾光闸不支持TCP、UDP转发)
- 内网通脚本定时同步并搭建NTP服务,供其他服务器使用
互联网
- NTP Service
- 协议:
- UDP
- 端口:
- 123
- 软件
- chrony
- NTP公共服务器
- ntp.tencent.com
- ntp.aliyun.com
NTP - docker
1 | docker run -e TZ=Asia/Shanghai -d --restart=always \ |
自建chrony NTP Service
在安装 Chrony 之前,需要在服务器中设置正确的时区。可以使用以下命令进行设置:
1 | timedatectl set-timezone Asia/Kolkata |
现在,使用以下命令验证您当前的时区:
1 | timedatectl |
应该得到以下输出:
1 | [root@localhost home]# timedatectl |
安装 Chrony 服务器
默认情况下,从 Centos 7.x 开始的最小发行版中都已经预装并开启了 Chrony,如果你的系统没有安装,可以用下面命令进行安装
1 | yum -y install chrony |
安装 Chrony 后,启动 Chrony 服务并使其在系统重启时启动:
1 | # 开启服务 |
配置 Chrony 服务器
Chronys 的主要配置文件位于 /etc/chrony.conf。需要对其进行编辑并更改时间服务器。
1 | vi /etc/chrony.conf |
注释掉默认池并添加离您的位置最近的 NTP 服务器列表。
主要修改
server
allow
local stratum 10
1 | # Use public servers from the pool.ntp.org project. |
开启服务
1 | # 完成后保存并关闭文件,然后使用以下命令设置 NTP 同步: |
配置防火墙
需要允许 NTP 服务通过防火墙。可以使用以下命令允许它:
1 | firewall-cmd --permanent --add-port=123/udp |
接下来,重新加载防火墙服务以应用更改:
1 | firewall-cmd --reload |
Windows配置命令
1 | # 自建 |
时间API
搭建在互联网的Chrony那台服务器上,因为有装openresty就直接用了
1 | # 北京时间 |
内网脚本
1 |
|
配置一下cron,每隔几分钟自动执行一次
1 | */5 * * * * /bin/bash /home/updatesystemtime.sh |
最后
如此可以达到内网时间同步情况,但还是依赖于互联网(光闸摆渡)条件,如果完全离线的话需要定期手动调整时间,不然时间误差会在1分钟左右。