1.ntpstat
ntpstat 命令查看时间同步状态,这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。
刚启动的时候,一般是:
# ntpstat
unsynchronised
time server re-starting
polling server every 64 s
连接并同步后:
synchronised to NTP server (202.120.2.101) at stratum 4
time correct to within 1192 ms
polling server every 64 s
2.ntpq -p
[root@CNSH231162 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.15.101.3 10.11.170.212 2 u 46 64 3 37.222 150918. 0.094
10.15.101.4 10.11.170.212 2 u 44 64 3 38.275 150918. 0.926
10.36.101.2 10.11.118.211 2 u 43 64 3 1.942 150919. 0.957
说明:
*表示目前使用的ntp server,这里选择的本机;
st:即stratum阶层,值越小表示ntp serve的精准度越高;
when:几秒前曾做过时间同步更新的操作;
Poll表示,每隔多少毫秒与ntp server同步一次;
reach:已经向上层NTP服务器要求更新的次数;
delay:网络传输过程钟延迟的时间;
offset:时间补偿的结果;
jitter:Linux系统时间与BIOS硬件时间的差异时间
注意:NTP服务端重启后,客户机要等5分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。等待的时间可以通过命令 watch ntpq -p来监控。
NTPS时间服务的应用场景
在我们搭建服务器集群的时候,各个主机时间不同步会导致各种未知bug,我了避免这种事情的发生,我们就要保证各个服务器的时间是一致的,而做一台时间服务器就能够轻松地保证集群中各个节点的时间时刻保持一致。
计算机时间
系统时间:是有Linux Kernel控制的时间 ,开机时会读取硬件时间,作为开机那一刻的软件时间运行,然后系统时钟就由软件模拟振荡电路来维持。
硬件时间:依靠主板上的振荡电路来模拟时钟维持时间。
需要注意的是软件时间和硬件时间并不一定总是一致的。虽然,重新启动系统,系统时间会读取硬件时间,实现同步,但是在不重新启动的时候,可以用命令实现软硬件时间同步。
相关命令:
# 查看系统时间
[root@ZND ~]# date
Fri Nov 9 16:55:53 CST 2018
# 设置系统时间
[root@ZND ~]# date 110916552018.00 【月日小时分钟年.秒】
# 查看硬件时间
[root@ZND ~]# hwclock --show
# 设置硬件时间
[root@ZND ~]# hwclock --date 110317022018.00 【月日小时分钟年.秒】
# 将系统时间同步到硬件时钟:
[root@ZND ~]# hwclock --systohc 【 hc代表硬件时间,sys代表系统时间】
#将硬件时钟和系统时钟同步
[root@ZND ~]# hwclock --hctosys
NTP的配置文件
NTP的配置文件:/etc/ntp.conf
restrict
作用:对ntp做权限控制
格式:restrict [ip] [mask] [par]
para:
ignore:忽略所有类型的NTP连接请求
nomodify:限制客户端不能使用命令ntpc和ntpq来修改服务器端的时间
noquery:不提供NTP网络校时服务
notrap:不接受远程登录请求
notrust:不接受没有经过认证的客户端的请求
【如果没有用任何参数,那么表示不做任何限制】
例子:restrict 10.220.5.0 mask 255.255.255.0 nomodify <<<允许10.220.5.0/24 网段主机进行时间同步
server
作用:指定ntp服务器的地址
格式:server [ip or hostname] [perfer]
例子:server 127.127.1.0 <<<将当前主机作为时间服务器
fudge
作用:设置时间服务器的层级
格式:fudge ip [startnum int]
例子:fudge 10.225.5.1 startnum 10
注意:fudge必须和server一块用, 而且是在server的下一行
startnum
0~15
0:表示顶级
10:通常用于给局域网主机提供时间服务
实现客户端的时间同步的两种方法
①基于ntpdate
方案:定时任务(crontab)+ntpdate
优点:实现简单
缺点:会导致客户端时间不连续,对于数据库业务影响是比较大,生产环境尽量不要用
②基于ntpd
方案:ntpdate+ntpd
优点:可以实现顺滑同步,避免时间不连续带来的问题
缺点:时间同步往往不能立刻完成
[root@localhost ~]# cat /etc/ntp.conf
server ntpserver.com.cn prefer
server ntpserver2.com.cn
server ntpserver.dr.com.cn
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
disable monitor
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
[root@localhost ~]#
[root@localhost /]# cat /etc/ntp.conf
server ntp..com.cn
server ntpbk.com.cn
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
[root@localhost /]#