-
方案1:直接同步+crontab定时
命令:ntpdate ip/你要同步的服务器域名/网上提供的标准时间同步URL
示例:ntpdate 192.168.0.1
方案1用ntpdate命令结合crontab定时来同步方案来解决。
-
方案2:平滑同步/ntpd同步
使用ntpd服务,要好于ntpdate加crontab的组合。因为,ntpdate同步时间会造成时间的突变和跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且ntpd服务可以在修正时间的同时,修正CPU Tick。因此理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。
ntpd 有一个自我保护的机制:如果本机与上源时间相差太大,ntpd 不会运行时间同步操作。
示例:以192.168.0.1为ntp server端,其它机器同步192.169.0.1的时钟。
查看所有机器是否安装ntp服务:yum list installed | grep ntp,未安装请自行安装。
yum -y install ntp : 安装ntp服务端,ntp和ntpdate包都会安装
rpm -ivh ntpdate-4.2.6p5-29.el7.x86_64.rpm : ntp客户端,只安装ntpdate包192.168.0.1(服务端)机器设置配置文件是:/etc/ntp.conf,内容如下:
# 系统时间与BIOS事件的偏差记录 driftfile /var/lib/ntp/drift pidfile /var/run/ntpd.pid logfile /var/log/ntp.log # 控制相关权限 ,语法 :restrict IP地址 mask 子网掩码 参数 # 其中IP地址也可以是default ,default 就是指所有的IP restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 #允许单个IP地址访问本ntp服务器 # server指定本ntp服务器的上层ntp服务器。同步时间为:从上到下,写的越靠上,优先级越高。(此服务器同步不了时间,寻找下一个ntp服务器)。格式:server [IP or hostname] [prefer] # 如果服务器都无法同步时间,就和本地系统时间同步。127.127.1.0在这里是一个IP地址,不是网段。 server 127.127.1.0 prefer #server 0.rhel.pool.ntp.org iburst #server 1.rhel.pool.ntp.org iburst # 当没有时间同步来源的时候以自身的硬件时钟为准,这里的stratum是代表层级,默认是10 fudge 127.127.1.0 stratum 10
其它机器(客户端)配置文件如下:
driftfile /var/lib/ntp/drift pidfile /var/run/ntpd.pid logfile /var/log/ntp.log # Access Control Support restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery # restrict 192.168.0.0 mask 255.255.255.0 #允许192.168.0.0 网段中的服务器访问本ntp服务器进行时间同步 restrict 127.0.0.1 # local clock server 127.127.1.0 fudge 127.127.1.0 stratum 10 #server ntp.jdcloudcs.com iburst minpoll 4 maxpoll 10 server 192.168.0.1 iburst minpoll 4 maxpoll 10 #fudge ntp.jdcloudcs.com stratum 2 fudge 192.168.0.1 stratum 2
总结一下,restrict用来设置访问权限,server用来设置上层时间服务器,driftfile用来设置保存漂移时间的文件。
restrict 参数有以下几个
:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod : 访问违规时发送 KOD 包。
restrict -6 表示IPV6地址的权限设置。server 设定上层NTP服务器
perfer:表示优先级最高
iburst :当一个运程NTP服务器不可用时,客户端向它发送一系列的并发包进行检测,如果在短时间内呼叫 NTP 服务器几次,没有出现可辨识的应答,那么本地时间将不会变化。
burst :当一个运程NTP服务器可用时,也会发送一系列的并发包进行检测。 根据NTP 服务器的通用规则,一般不允许使用。(如果你在高层服务器持续发送包,甚至是它们在正常应答时,你可能会因为使用 “burst” 选项而被拉黑)
minpoll 和 maxpoll :NTP消息的最小和最大轮询间隔(以秒为单位)。例如:minpoll 4 maxpoll 6 表示对提供时间服务同步的服务器进行轮询的最小间隔是4,最大间隔是6,这里的最小和最大都是默认值,4代表的并不是4秒而是2秒的4次方,6代表也不是6秒而是2秒的6次方。设置完成后,每台机器需重启ntpd服务:
systemctl restart ntpd
-
参考命令:
systemctl restart/status/start/stop ntpd : ntpd服务重启/查看/启动/停止
ntpstat : 查看时间同步状态(NTP服务器是否与上层联机状态、时间校正、每隔多少秒会更新时间)
ntpdate -d ip/时间服务器域名:调试方法查看错误信息,不修改时间
ntpq -p :查看时间同步状况
注意:重启后隔一段时间才会同步过来,具体通过ntpstat命令查看