NTP的全称是Network Time Protocol(网络时间协议),用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC(Coordinated Universal Time),其精度在局域网内可达0.1ms,在Internet上精度可以达到1-50ms。
时间保持同步对于现代的很多服务来说尤为重要,比如说电商的秒杀,以及火车票的抢购等场合,如果由于服务器时间不同步,导致不同的用户不能在同一时间操作,容易造成不公平……
我们就来消除这种不公平的现象。
0 系统环境
0.1 服务器
我这里是一台安装有CentOS 7的Linux服务器。采用其他Linux/Unix系统的配置方法与此只是指令的差异,原理一样。
系统 | 说明 |
---|---|
CentOS 7 Linux | 采用Minimal方式安装 |
0.2 网络环境
主机名 | IP地址 | 说明 |
---|---|---|
master | 192.168.137.100 | 安装有ntp时间服务的主机 |
1 服务器端配置
1.1安装ntp服务
执行以下指令安装:
sudo yum install ntp
1.2 配置时间服务器
再进行简单的配置,把同步服务器修改为Aliyun的(国家授时中心的经常连不上):
# 设置上级时间同步服务器为Aliyun的ntp服务器
server ntp.aliyun.com
# 允许局域网其他服务器访问,只允许查询
restrict 192.168.137.0 mask 255.255.255.0 nomodify notrap
# 其他时间服务器不可用时,以本地时间作为时间服务
server 127.0.0.1
fudge 127.0.0.1 stratum 10
1.3 预同步
先跟阿里云时间服务器进行同步:
sudo ntpdate -u ntp.aliyun.com
写入系统时钟:
sudo hwclock --systohc
1.4 再启用时间同步服务
systemctl enable ntpd
systemctl start ntpd
1.5 打开防火墙端口
我们现在部署的是一个ntp服务器,所以要打开相应的端口,允许其他客户端访问:
# 开放ntp服务端口
firewall-cmd --add-port=123/udp --permanent
# reload防火墙规则
firewall-cmd --reload
1.6 查询同步信息
至此,一个可以自动
ntpq -p
2 客户端同步
2.1 最简单同步方法
安装好的Linux已经有同步指令ntpdate,所以我们直接执行以下指令即可:
ntpdate 192.168.137.100
2.2 自动同步法
或者我们可以参考master服务器上的配置方法,安装ntpdate服务,设置时间服务器为master(192.168.137.100)即可。
2.2.1安装ntp服务
执行以下指令安装:
sudo yum install ntpdate
2.2.2 配置时间同步
配置方法与服务器端的类似,都是修改/etc/ntp.conf文件,只不过不需要授权,只是把时间服务器修改为master服务器的IP地址即可:
server 192.168.137.100
2.2.3 再启用时间同步服务
systemctl enable ntpdate
systemctl start ntpdate