一、时间时区概念
UTC(Universal Time Coordinated)
世界协调时间;经严谨计算得到的时间,精确到秒,误差在0.9s以内, 是比GMT更为精确的世界时间。
GMT(Greenwich Mean Time)
格林威治标准时间 ; 英国伦敦格林威治定为0°经线开始的地方,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区,GMT时间比北京时间慢8小时。
CST:
CST同时可以代表如下 4 个不同的时区
Central Standard Time (USA) UT-6:00 美国标准时间
Central Standard Time (Australia) UT+9:30 澳大利亚标准时间
China Standard Time UT+8:00 中国标准时间
Cuba Standard Time UT-4:00 古巴标准时间
DST(Daylight Saving Time)
夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时;
二、ntp seerver搭建
1. 时区设置
[root@localhost ~]# timedatectl
[root@localhost ~]# timedatectl list-timezones
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
2. ntp server搭建
查看是否安装
[root@localhost ~]# rpm -q ntp
安装
[root@localhost ~]# yum install ntp -y
手动同步时间
[root@localhost ~]# ntpdate -u cn.pool.ntp.org
3. 修改ntp配置
[root@localhost ~]# vim /etc/ntp.conf
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
# 新增:日志目录
logfile /var/log/ntpd.log
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1
# 新增:授权172.16.128.0 网段上的所有机器可以从这台机器上查询和同步时间
restrict 172.16.128.0 mask 255.255.255.0 nomodify notrap
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 修改:时间服务器列表
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst
# 新增:当外部时间不可用时,使用本地时间
server 172.16.128.171 iburst
fudge 127.0.0.1 stratum 10
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# 新增:允许上层时间服务器主动修改本机时间
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 1.cn.pool.ntp.org nomodify notrap noquery
restrict 2.cn.pool.ntp.org nomodify notrap noquery
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor
4. 启动服务
[root@localhost ~]# systemctl enable ntpd
[root@localhost ~]# systemctl start ntpd
5. 查看同步状态
[root@localhost ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*114.118.7.161 123.139.33.3 2 u 36 64 77 23.196 6.770 1.028
+120.25.115.20 10.137.53.7 2 u 24 64 77 20.913 6.897 1.506
-139.199.215.251 100.122.36.196 2 u 22 64 77 21.854 8.122 1.458
-119.28.183.184 100.122.36.196 2 u 19 64 77 33.594 4.266 2.011
+ntp6.flashdance 194.58.202.148 2 u 91 64 72 268.044 6.483 1.516
+119.28.206.193 100.122.36.4 2 u 20 64 77 32.332 7.080 1.344
[root@localhost ~]# ntpstat
synchronised to NTP server (114.118.7.161) at stratum 3
time correct to within 996 ms
polling server every 64 s
ntpq -p详解
- remote:响应这个请求的 NTP 服务器的名称。
- refid:NTP 服务器使用的上一级 NTP 服务器。
- st:remote 远程服务器的级别。服务器从高到低级别设定为1 - 16,为了减缓负荷和网络堵塞,原则上建议避免直接连接到级别为1的服务器。
- t :u: unicast(单播), b: broadcast(广播), l: local(本地时钟)
- when:上一次成功请求之后到现在的秒数。
- poll:本地机和远程服务器多少时间进行一次同步(单位为秒)。初始运行 NTP 时,poll 值会比较小,和服务器同步的频率增加,建议尽快调整到正确的时间范围。调整之后,poll 值会逐渐增大,同步的频率也将会相应减小。
- reach:八进制值,用来测试能否和服务器连接。每成功连接一次,reach 的值将会增加。
- delay:从本地机发送同步要求到 NTP 服务器的 round trip time。
- offset:主机通过 NTP 时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。offset 越接近于0,主机和 NTP 服务器的时间越接近。
- jitter:用来做统计的值。统计在特定连续的连接数里 offset 的分布情况。即 jitter 数值的绝对值越小,主机的时间就越精确。
remote状态标识详解
- 空:表示没有远程通信的主机
- x:已不再使用
- -:已不再使用
- #:良好的远程节点或服务器但是未被使用
- +:良好的且优先使用的远程节点或服务器
- *****:当前作为优先主同步对象的远程节点或服务器
- o:PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,PPS),可能通过PPS 时钟驱动或者通过内核接口
三、客户端同步——ntpd方式
1. centos7
[root@centos7 ~]# vim /etc/ntp.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntpserver iburst
[root@centos7 ~]# vim /etc/hosts
172.27.9.131 ntpserver
[root@centos7 ~]# systemctl enable ntpd
[root@centos7 ~]# systemctl start ntpd
[root@centos7 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntpserver 114.118.7.161 3 u 1 64 3 0.221 12.641 0.495
[root@centos7 ~]# ntpstat
synchronised to NTP server (172.27.9.131) at stratum 4
time correct to within 1049 ms
polling server every 64 s
2. ubuntu1604
root@ubuntu1604:~# view /etc/hosts
172.27.9.131 ntpserver
root@ubuntu1604:~# apt install -y ntp
root@ubuntu1604:~# view /etc/ntp.conf
server ntpserver iburst
root@ubuntu1604:~# systemctl enable ntp
ntp.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install enable ntp
root@ubuntu1604:~# systemctl start ntp
root@ubuntu1604:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntpserver 114.118.7.161 3 u 51 64 377 0.254 -4.194 1.090
四、客户端同步——ntpdate服务方式
[root@centos ~]# sed -i.bak '/centos.pool.ntp.org/s/^/#/' /etc/ntp.conf
[root@centos ~]# sed -i.bak '/driftfile/i server ntpserver iburst' /etc/ntp.conf
[root@centos ~]# sed -i.bak '$a 172.27.9.131 ntpserver' /etc/hosts
[root@centos ~]# systemctl enable ntpdate
[root@centos ~]# systemctl start ntpdate
五、客户端同步——ntpdate命令方式
[root@centos7 ~]# systemctl stop ntpd
[root@centos7 ~]# ntpdate ntpserver
7 Nov 16:33:02 ntpdate[2618]: adjust time server 172.27.9.131 offset -0.002048 sec
[root@centos7 ~]# crontab -l
0 1 * * * /usr/sbin/ntpdate ntpserver