- 简介
- 原理
- 配置ntp服务器
- 进行同步
一、简介
在计算时间的时候,最准确的计算应该是使用『原子震荡周期』所计算的物理时钟了( Atomic Clock, 也被称为原子钟 ),这也被定义为标准时间(International Atomic Time)。而我们常常看见的 UTC 也就是Coordinated Universal Time (协和标准时间)就是利用这种 Atomic Clock 为基准所定义出来的正确时间。这个 UTC 标准时间是以 GMT 这个时区为主的喔!所以本地时间与 UTC 时间的时差就是本地时间与 GMT 时间的时差。
计算机主机上面的 BIOS 内部就含有一个原子钟,由于原子钟主要是利用计算芯片 (crystal) 的原子震荡周期去计时的,每种芯片都有自己的独特的震荡周期。而计算机主要又是以 BIOS 内部的时间为主要的时间依据,而偏偏这个时间可能因为 BIOS 内部芯片本身的问题,而导致 BIOS 时间与标准时间 (UTC) 有差异存在,所以,为了避免主机时间因为长期运作下所导致的时间偏差,这时候就需要网络校时(Network Time Protocol)NTP的功能来进行时间同步了。
二、原理
1. 主机当然需要启动 daemon
2. Client 会向 NTP Server 发送出调校时间的 message
3. NTP Server 会送出目前的标准时间给 Client
4. Client 接收了来自 Server 的时间后,会据以调整自己的时间。
但是存在client端与server端同步的时间差、延迟问题,在 daemon 的部分,以 server/client 及 master/slave 的架构来提供使用者进行网络校时的动作来保证校准时间更为准确。
三、安装配置
#yum install -y ntp ntpdate
编辑配置文件/etc/ntp.conf
ignore:关闭所有ntp联机服务
nomodify:表示client端不能更改server端的时间参数,不过client端仍然可以通过server端同步时间
notrap:拒绝特殊的ntpdq捕获消息
noquery:拒绝btodq/ntpdc查询
server:添加上层主机的设定或者说添加为互联网上的ntp服务器的设定
以上图配置文件当中的注释也很清楚。
(此图只是为另一个例子)
3.添加防火墙规则及启动NTP服务
#iptables –A INPUT –p udp –i eth0 –s 10.0.7.0/24 –dport 123 –j ACCEPT
#systemctl start ntpd
四、同步
#ntpdate NTP服务端IP
若出现同步成功的提示,但时间没有同步过来,可能为时区问题,修改时区可用简单的方法:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
若出现“no server suitable for synchronization found”,检查ntp服务器端配置正确以及防火墙设置正确等;若还是不行,则试着同步网络上的ntp服务器,比如ntpdate time.nist.gov(前提客户端要能通网络)
#date
显示系统时间
#hwclock
显示系统硬件时间
#hwclock -w
将系统时间写入到系统硬件当中
定时执行时间同步任务,所以我们利用crontab -e 来添加定时任务
* 1/ * * * root /usr/sbin/ntpdate 10.0.7.149;hwclock -w
以上。