目標環境,5台linux centos 6.3。 一台作為NTPD服務與外部公共NTP服務同步時間,同一時候作為內網的NTPDserver,其它機器與這台服務做時間同步。
serverIP | 角色 | 說明 | 同步方式 |
192.168.1.135 | NTPD服務 | 1、負責與外部公共NTPD服務同步標准時間 2、作為內外網絡的NTPD服務 |
NTPD服務平滑同步 |
192.168.1.xxx | 內外NTPclient | 內網設備與192.168.1.135同步時間 | NTPD服務平滑同步 |
…… | 內外NTPclient | 內網設備與192.168.1.135同步時間 | NTPD服務平滑同步 |
1、NTP時間同步方式選擇
NTP同步方式在linux下一般兩種:使用ntpdate命令直接同步和使用NTPD服務平滑同步。
有什么差別呢,簡單說下,免得時間長了。概念又模糊。
現有一台設備,系統時間是 13:00 , 真實的當前時間(在空中,或許衛星上,這里如果是在准備同步的上級目標NTPserver)是: 12:30 。如果我們使用ntpdate同步(ntpdate -u 目標NTPserverIP),操作系統的時間馬上更新為12:30,假如,我們的系統有一個定時應用。是在每天12:40執行。那么實際今天這個的任務已經執行過了(當前時間是13:00嘛),如今被ntpdate改動為12:30,那么意味作10分鍾后。又會執行一次任務。這就糟糕了,這個任務僅僅能執行一次的嘛。!
我想你(事實上是我)已經懂了ntpdate時間同步的隱患。當然這個樣例有些極端,但的確是有風險的,生產環境我不打算這么干。還是穩妥點好。
所以解決該問題的辦法就是時間平滑更改,不會讓一個時間點在一天內經歷兩次。這就是NTPD服務方式平滑同步時間,它每次同步時間的偏移量不會太陡,是慢慢來的(問:怎么來。沒有細究,僅僅曉得一次一點的同步,全然同步好須要較長時間,所以一般開啟NTPD服務同步前先用ntpdate先手動同步一次)。
2、安裝配置
CentOS 6.3系統已經自帶了NTPD服務,一般默認是依照了的,假設沒有安裝,先檢查下,然后配置好yum倉庫,yum方式安裝下就OK。詳細例如以下:
# rpm -q ntp
ntp-4.2.4p8-2.el6.x86_64 // 這表示已安裝了,假設沒有安裝,這是空白。
假設沒有安裝。我們依照下
# yum install ntp
......
按上面的安裝方式在內網每台server上都安裝好NTP軟件包。
完畢后,都須要配置NTP服務為自啟動
# chkconfig ntpd on
# chkconfig --list ntpd
ntpd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
在配置前,先使用ntpdate手動同步下時間,免得本機與外部時間server時間差距太大,讓ntpd不能正常同步。
# ntpdate -u 202.112.10.36
22 Dec 16:52:38 ntpdate[6400]: adjust time server 202.112.10.36 offset 0.012135 sec
配置內網NTP-Server(192.168.1.135)
以下主要是配置內網的NPTDserver(192.168.1.135), NTPD服務配置核心就在/etc/ntp.conf文件。配置好了就OK。
網上特別是老外的文章都非常easy,我上當了,媽喲。基礎環境不一樣,我們得中國特色才行。先上配置文件再說,紅色部分是我的改動,其它的是默認。
# 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
# Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default kod nomodify notrap nopeer noquery restrict -6 default kod 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 -6 ::1
# 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 : http://www.pool.ntp.org/zone/cn server 210.72.145.44 perfer # 中國國家受時中心 server 202.112.10.36 # 1.cn.pool.ntp.org server 59.124.196.83 # 0.asia.pool.ntp.org
#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
# allow update time by the upper server # 同意上層時間server主動改動本機時間 restrict 210.72.145.44 nomodify notrap noquery restrict 202.112.10.36 nomodify notrap noquery restrict 59.124.196.83 nomodify notrap noquery
# Undisciplined Local Clock. This is a fake driver intended for backup # and when no outside source of synchronized time is available. # 外部時間server不可用時,以本地時間作為時間服務 server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
# 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 |
配置參數和命令簡單說明請參考:http://linux.vbird.org/linux_server/0440ntp.php#server_ntp.conf
配置文件改動完畢,保存退出。啟動服務。
# service ntpd start
......
啟動后,一般須要5-10分鍾左右的時候才干與外部時間server開始同步時間。
能夠通過命令查詢NTPD服務情況。
查看服務連接和監聽
# netstat -tlunp | grep ntp
udp 0 0 192.168.1.135:123 0.0.0.0:* 23103/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 23103/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 23103/ntpd
udp 0 0 fe80::6cae:8bff:fe3d:f65:123 :::* 23103/ntpd
udp 0 0 fe80::6eae:8bff:fe3d:f65:123 :::* 23103/ntpd
udp 0 0 ::1:123 :::* 23103/ntpd
udp 0 0 :::123 :::* 23103/ntpd
看紅色加粗的地方。表示連接和監聽已正確,採用UDP方式
ntpq -p 查看網絡中的NTPserver,同一時候顯示client和每一個server的關系
# ntpq -p
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*202.112.10.36 202.112.10.60 2 u 277 128 314 201.553 9.193 17.068
+59.124.196.83 129.6.15.28 2 u 88 128 377 71.153 -25.111 14.004
LOCAL(0) .LOCL. 10 l 15 64 377 0.000 0.000 0.000
位置 | 標志 | 含義 |
符號 | * | 響應的NTPserver和最精確的server |
+ | 響應這個查詢請求的NTPserver | |
blank(空格) | 沒有響應的NTPserver | |
標題 | remote | 響應這個請求的NTPserver的名稱 |
refid | NTPserver使用的更高一級server的名稱 | |
st | 正在響應請求的NTPserver的級別 | |
when | 上一次成功請求之后到如今的秒數 | |
poll | 本地和遠程server多少時間進行一次同步。單位秒,在一開始執行NTP的時候這個poll值會比較小,server同步的頻率大,能夠盡快調整到正確的時間范圍。之后poll值會逐漸增大,同步的頻率也就會對應減小 | |
reach | 用來測試是否能和server連接,是一個八進制值,每成功連接一次它的值就會添加 | |
delay | 從本地機發送同步要求到ntpserver的往返時間 | |
offset | 主機通過NTP時鍾同步與所同步時間源的時間偏移量,單位為毫秒,offset越接近於0,主機和ntpserver的時間越接近 | |
jitter | 統計了在特定個連續的連接數里offset的分布情況。簡單地說這個數值的絕對值越小,主機的時間就越精確 |
ntpstat 命令查看時間同步狀態,這個一般須要5-10分鍾后才干成功連接和同步。
所以。server啟動后須要稍等下。
剛啟動的時候,通常是:
# ntpstat
unsynchronised
time server re-starting
polling server every 64 s
連接並同步后:
synchronised to NTP server (202.112.10.36) at stratum 3
time correct to within 275 ms
polling server every 256 s
OK,內網的NTPD服務已經配置完畢。假設全部正常后。開始配置內網的其它設備與這台server作為時間同步服務。
配置內網NTP-Clients
內網其它設備作為NTP的client配置,相對就比較簡單。並且全部設備的配置都同樣。
首先須要安裝NTPD服務。然后配置為自啟動(與NTP-Server全然一樣)。然后找當中一台配置/etc/ntp.conf文件,配置完畢驗證通過后,復制到其它client機器,直接使用就可以。
# yum install ntp
...
# chkconfig ntp on
# vim /etc/ntp.conf
driftfile /var/lib/ntp/drift restrict 127.0.0.1 restrict -6 ::1
# 配置時間server為本地的時間server server 192.168.1.135
restrict 192.168.1.135 nomodify notrap noquery
server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys |
為了簡單。這里僅僅列出了配置項,凝視所有清理了。
OK,保存退出,請求server前。請先使用ntpdate手動同步下時間
# ntpdate -u 192.168.0.135
22 Dec 17:09:57 ntpdate[6439]: adjust time server 192.168.1.135 offset 0.004882 sec
這里有可能出現同步失敗,普通情況下原因都是本地的NTPDserver還沒有正常啟動起來,一般須要幾分鍾時間后才干開始同步。
錯誤推斷請參考后面的錯誤處理。
# service ntpd start
....
啟動后,查看同步情況
# ntpq -p
# ntpstat
.....
由於是內網,一般ntpstat非常快就能夠同步上。幾分鍾須要等下.
OK,本機client配置完畢后,使用SCP拷貝/etc/ntp.conf到其它須要同步的client機器,啟動NTPD服務就可以。
其它client機器上操作配置例如以下:
# ntpdate -u 192.168.0.135
22 Dec 17:09:57 ntpdate[6439]: adjust time server 192.168.1.135 offset 0.004882 sec
# scp 192.168.1.xxx:/etc/ntp.conf /etc/ntp.conf
# service ntpd start
3、錯誤問題處理
用於收集安裝,配置和應用中出現的問題
錯誤1:ntpdate -u ip -> no server suitable for synchronization found
推斷:在ntpclient用ntpdate –d serverIP查看,發現有“Server dropped: strata too high”的錯誤,而且顯示“stratum 16”。
而正常情況下stratum這個值得范圍是“0~15”。
原因:NTP server還沒有和其自身或者它的server同步上。在ntp server上又一次啟動ntp服務后,ntp server自身或者與其server的同步的須要一個時間段,這個過程可能是5分鍾,在這個時間之內在client執行ntpdate命令時會產生no server suitable for synchronization found的錯誤。
處理:等待幾分鍾后,重試一般解決。
也能夠使用命令 ntpq -p查看情況