为何要设置NTP时间同步?
NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。
使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用,例如节点的健康状态监控、心跳包时间问题等等。
我们需要一台服务器提供NTP时间同步服务,其他几台服务器向这台服务器请求时间同步即可。
如何设置NTP时间同步?
本文拟定是在一个局域网内(比如一个Hadoop集群)设定一台NTP服务器作为整个网络的标准时间参考,使用网络(集群)内的所有机器保持时间一致!
实验用5台服务器名称: node1, node2, node3, node4, node5
环境:Centos7
前言:请务必要按照教程顺序来执行,逐字逐句看清楚!
修改选定的服务器的本地时间
$ date -s '2019-08-12 12:48:30' +'%F %T'
注:2019-08-12 12:48:30为将要设定的时间
将修改后的时间写入硬件时钟,确保重启有效
$ hwclock -w
安装并开启ntp服务
a.检查是否安装了ntp相关包。如果没有安装ntp相关包,使用rpm或yum安装,安装也非常简单方便。
$ rpm -qa | grep ntp (如果有安装包则跳过步骤b)
b.安装ntp
$ yum install -y ntp 或者 $ apt-get install ntp
c. 查看ntpd是否已经配置为开机启动
$ systemctl is-enabled ntpd
d. 如果没有则设置开机启动并重启
$ systemctl enable ntpd
$ service ntpd restart
手动同步服务器系统时间
a. 关闭ntpd服务
$ service ntpd stop
b. 各客户机手动同步服务机的时间
$ ntpdate -u 192.168.112.101(服务机IP)
操作
- NTP时间同步提供的服务机(node1)
a. 编辑ntp配置文件
$ vim /etc/ntp.conf
b.设置允许某个网段的IP向本机请求同步时间
restrict 192.168.112.0 mask 255.255.255.0 nomodify notrap
c.注释掉默认的时间同步地址,添加时间同步地址为本机
server 127.127.1.0
d. 设置本地时钟源的层次
fudge 127.127.1.0 stratum 10
服务机(node1)的配置:
- 请求NTP时间同步的客户机(node2、node3、node4、node5)
a. 编辑NTP配置文件
$ vim /etc/ntp.conf
b.注释掉默认的时间同步地址,添加时间同步地址为node1的地址
server 192.168.112.101
客户机(node2、node3、node4、node5)的配置:
- 启动NTP服务(node1、node2、node3、node4、node5)
a. 启动命令
$ service ntpd start
b. 查看同步状态
$ ntpstat
c. 如果出现以下提示即同步成功
$ synchronised to NTP server (192.168.112.101)
d. 查看当前同步设置
$ ntpq -p
注意事项
- 网段与IP请参考自身情况设置
- 启动NTP服务后,如果要查看同步状态,需要等待约为5-10分钟,才能看到synchronised已同步字段
- 如果仍未显示synchronised,请尝试重启NTP服务
$ service ntpd restart
- 当server与client之间的时间误差过大时(可能是1000秒),处于对修改时间可能对系统和应用带来不可预知的问题,NTP将停止时间同步!所以如果发现NTP启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,此时需要先手动进行时间同步!