Linux服务器之间同步时间(NTP协议)
背景:
现有两台服务器各自运行产品程序,但时间上不同步,导致两台服务器运行的程序通信不同步.
两台服务器是ubuntu18.04的均未通外网.
NTP相关介绍
NTP(Network Time Protocol)是一种用于同步计算机时钟的网络协议。它是一种客户端-服务器协议,允许计算机通过网络连接到NTP服务器,并使用精确的时间源来同步其本地时钟。这些精确的时间源可以是GPS卫星、原子钟或其他可靠的时钟源。NTP通过使用递归算法和树型结构的时间同步层次结构来提供高度可靠的时间同步服务。NTP客户端通过将时间请求发送到NTP服务器进行时间同步,NTP服务器使用其内部时钟源来回复客户端请求,并使用特殊算法来计算传输延迟并纠正时间漂移,以调整客户端时钟。
准备:
因未通外网,在自有通外网虚拟机下下载了ntp的deb安装包(sudo apt install -d ntp).
A服务器(192.168.9.34)为时间服务器server端.
B服务器(192.168.9.61)为时间服务器client端.
步骤:
1、作为server端的A服务器下dpkg安装ntp
dpkg -i ntp***.deb
在A服务器安装出现报错缺少libopts25库:
同样在自有通外网虚拟机下下载了libopts25的deb安装包(sudo apt install -d libopts25),dpkg命令安装依赖后继续安装ntp以下安装成功,之后就需要编辑/etc/ntp.conf配置文件,以指定正确的NTP服务器和其他选项.
编辑修改vim /etc/ntp.conf 除下面列出其他不需要的都注释掉
# 设置本地时钟漂移文件的位置
driftfile /var/lib/ntp/ntp.drift
# 放行局域网用户来源
restrict 192.168.9.0 mask 255.255.255.0 nomodify noquery
# 允许本地用户更详细地查询 NTP 服务器
restrict 127.0.0.1
restrict ::1
# 指定了本地时钟作为一个时间源 ,对本地时钟进行特殊处理
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
执行systemctl restart ntp
重启ntp服务
执行systemctl status ntp
查看ntp服务状态 active(running)
2、作为client端的B服务器下两种方式同步作为server端的A服务器
第一种使用crontab定时任务实现间隙性同步时间
使用以下手动同步时间的命令
ntpdate 192.168.9.34 //ntpdate [A服务器的ip]
编辑crontab文件
vim /etc/crontab
在文件里添加如下行实现30分钟执行一次同步时间的操作
*/30 * * * * ntpdate 192.168.9.34
第二种是在B服务器里配置修改vim /etc/ntp.conf
server 192.168.9.34
# 32到64秒之间的同步时间间隔
minpoll 6
maxpoll 6
同样的执行重启ntp操作systemctl restart ntp
两种方法操作完查看时间就已经实现同步了
3、服务器自启动运行ntp服务
为了在服务器启动时自动运行ntp服务,使用以下命令启用ntp服务的自动启动功能:
sudo systemctl enable ntp
如果需要停止ntp服务的自动启动,可以使用以下命令禁用自动启动功能:
sudo systemctl disable ntp
4、注意防火墙屏蔽ntp端口
ntp服务器默认端口是123,如果防火墙是开启状态,在一些操作可能会出现错误,所以要记住关闭防火墙。
5、同步硬件时钟
ntp服务,默认只会同步系统时间.如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加
SYNC_HWCLOCK=yes
这样,就可以让硬件时间与系统时间一起同步。
允许BIOS与系统时间同步,也可以通过sudo hwclock -w
命令。
附录: /etc/ntp.conf配置文件中常用参数的详细解析
1.driftfile 参数
设置本地时钟漂移文件的位置,用于记录计算机的时钟误差。默认值为 /var/lib/ntp/drift。
driftfile /var/lib/ntp/drift
2.logfile 参数
设置日志文件的位置和名称,用于记录 NTP 服务器的活动和事件。默认情况下,NTP 使用 syslog 记录日志。如果未指定,则不会写入到文件。
logfile /var/log/ntpd.log
3.restrict 参数
限制对 NTP 服务器的访问,以保护时间同步服务的准确性和安全性。以下是 restrict 参数的常见用法:
restrict default nomodify notrap noquery nopeer
# 禁止未经授权的所有客户端对该服务器进行更改、执行远程命令、查询状态或作为对等方。default 就类似 0.0.0.0
restrict source nomodify notrap
# 限制允许以源地址身份进行时间同步请求的客户端,禁止更改或执行远程命令。
4.server 参数
指定可用于时间同步的NTP服务器的IP地址或DNS名。可以使用多个 server 参数来指定多个 NTP 服务器。如果可用的 NTP 服务器在 pool.ntp.org 等时钟池中,则使用 pool 参数。prefer参数
用于指定首选时间源,如果有多个 server 或 pool 参数,可以使用 prefer 来设置首选服务器
server time1.example.com
server time2.example.com
server 0.pool.ntp.org
server 1.pool.ntp.org prefer
5.broadcastclient 和 broadcastdelay 参数
允许 NTP 客户端接收广播时间同步信息。broadcastdelay 参数指定客户端接收广播消息的延迟时间。
broadcastclient
broadcastdelay 0.008
6.fudge参数
用于微调时钟频率和其他参数。例如,可以使用 fudge 参数来调整硬件时钟的偏移量:
# 设置本地时钟源(127.127.1.0)的层级(stratum)为 10。
fudge 127.127.1.0 stratum 10
更多推荐
所有评论(0)