linux服务器应用NTP配置时间同步
linux服務器應用NTP配置時間同步
? 為什么建議使用ntpd而不是ntpdate?
原因很簡單,ntpd是步進式的逐漸調整時間,而ntpdate是斷點更新,比如現在服務器時間是9.18分,而標準時間是9.28分,ntpd會在一段時間內逐漸的把時間校準到與標準時間相同,而ntpdate會立刻把時間調整到9.28分,如果你往數據庫內寫入內容或在其他對時間有嚴格要求的生產環境下,產生的后果會是很嚴重的。(注:當本地時間與標準時間相差30分鐘以上時ntpd會停止工作)
NTP通信協議原理
首先主機啟動NTP。
客戶端會向NTP服務器發送調整時間的message。
然后NTP server會送出當前的標準時間給client
client接受來自server的時間后,會根據這個信息來調整自己的時間。這樣就實現了網絡對時。
NTP這個deamon采用了UDP 123端口。當我們要利用Tim server來進行實踐的同步更新時,就需要使用NTP軟件提供的ntpdate來連接端口123
相關的命令和配置文件
? /etc/ntp.conf: linux各版本雖然目錄不同,但文件名相同。可以用which ntp.conf 或者locate ntp.conf來查找。這是NTP唯一的一個設置文件。
? /usr/share/zoneinfo/: 這個里面規定了這個主要時區的時間設置文件。
? /etc/sysconfig/clock:這個文件是linux的主要時區設置文件,每次開機后linux會自動讀取這個文件來設置系統所默認的顯示時間,可以看看它里面到底設置了什么:
? cat /etc/sysconfig/clock
? # The ZONE parameter is only evaluated by system-config-date.
? # The timezone of the system is defined by the contents of /etc/localtime.
? ZONE="Asia/Shanghai"
? UTC=true
? ARC=false
? /etc/localtime: 本地端時間配置文件。
? /bin/date: 這個是時間的修改命令,除了輸出時間,還可以修改時間。
? /sbin/hwclock: 因為linux系統上面BIOS時間與linux系統時間是分開的,所以使用date這個指令調整了時間之后,還需要使用hwclock才能將修改過的時間寫入BIOS中。
? /usr/sbin/ntpd: 這是NTP的daemon文件,需要啟動它才能提供NTP服務,這個命令會讀取/etc/ntp.conf里面的設置。
? /usr/sbin/ntpdate: 這是client用來連接NTP Server的主要執行文件,如果您不想啟用NTP,只想啟用NTP Client功能的話,可以只應用此命令。
? /usr/sbin/ntptrace: 可以用來追蹤某臺時間服務器的時間對應關系。
安裝與配置
? 設置時區:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
? 安裝ntpd服務:yum -y install ntp
? 配置ntpd /etc/ntp.conf:
restrict default kod nomodify notrap nopeer noquery
# restrict -6 default kod nomodify notrap nopeer noquery
# 針對ipv6設置
# 允許本地所有操作
restrict 127.0.0.1
#restrict -6 ::1
# 允許的局域網絡段或單獨ip
restrict 10.0.0.0 mask 255.0.0.0 nomodify motrap
restrict 192.168.0.0 mask 255.255.255.0 nomodify motrap
restrict 192.168.1.123 mask 255.255.255.255 nomodify motrap
# 使用上層的internet ntp服務器
restrict cn.pool.ntp.org
restrict 1.cn.poo.ntp.org
restrict 0.asia.pool.ntp.org
restrict 3.asia.pool.ntp.org
server cn.pool.ntp.org prefer
server 1.cn.poo.ntp.org
server 0.asia.pool.ntp.org
server 3.asia.pool.ntp.org
# 如果無法與上層ntp server通信以本地時間為標準時間
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
# 計算本ntp server 與上層ntpserver的頻率誤差
driftfile /var/lib/ntp/drift
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
#日志文件
logfile /var/log/ntp.log
? 修改/etc/sysconfig/ntpd:
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes #make no into yes; BIOS的時間也會跟著修改
# Additional options for ntpdate
NTPDATE_OPTIONS=""
驗證與狀態檢查
? 運行ntp
service ntpd start/stop/restart
# 查看ntp的端口,應該看到123端口
netstat -unlnp
# 查看ntp服務器有無和上層連通
ntpstat
synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s
# 注意:此命令出現上述synchronised結果比較慢,我的用了大概5分
鐘。
? 查看ntp服務器與上層間的聯系:ntptrace
ntptrace -n 127.0.0.1
127.0.0.1: stratum 3, offset -0.001095, synch distance 0.532610
116.193.83.174: timed out, nothing received
? 查看ntp服務器與上層ntp服務器的狀態:ntpq
ntpq -p
# 其中:
# remote - 本機和上層ntp的ip或主機名,“+”表示優先,“*”表示次優先
# refid - 參考上一層ntp主機地址
# st - stratum階層
# when - 多少秒前曾經同步過時間
# poll - 下次更新在多少秒后
# reach - 已經向上層ntp服務器要求更新的次數
# delay - 網絡延遲
# offset - 時間補償
# jitter - 系統時間與bios時間差
如果所有遠程服務器的jitter值是4000并且delay和reach的值是0,那么說明時間同步是有問題的。
可能的原因是防火墻阻斷了與server之間的通訊,即123端口是否正常開放;
此外每次重啟NTP服務器之后大約要3-5分鐘客戶端才能與server建立正常的通訊連接,否則你在客戶端執行“ntpdate 服務器ip”的時候將返回:
27 Jun 10:20:17 ntpdate[21920]: no server suitable for synchronization found
啟動NTPD
我采用了一個比較直接的辦法來手動啟動ntpd,而不是把ntpd加入服務,寫一個簡單的腳本:
vi ntpstart.sh
ntpdate cn.pool.ntp.org
ntpdate cn.pool.ntp.org
service ntpd start
然后加入/etc/rc.local:
/shpath/ntpstart.sh
這是因為測試時發現一旦服務器啟動后的時間總是與標準時間差別很大,每次啟動后ntpd要花很多時間才能把時間校準,所以我是先在系統啟動后ntpdate更新兩次,然后再啟動ntpd服務。
客戶端配置
(具體配置參閱'Linux集群時間同步服務器設置.doc'文檔,ntpdate測試可用)
? 方法1.使用ntpdate與上面配置的時間服務器定時同步,配置簡單網上不推薦。
? 方法2.安裝ntpd,指定時間server為上面配置的服務器地址,網上推薦。
ntpd在實際同步時間時是一點點的校準過來時間的,最終把時間慢慢的校正對。而ntpdate不會考慮其他程序是否會陣痛,直接調整時間。一個是校準時間,一個是調整時間。
解決ntp的錯誤
解決ntp的錯誤 no server suitable for synchronization found
當用ntpdate -d 來查詢時會發現導致 no server suitable for synchronization found 的錯誤的信息有以下2個:
錯誤1.Server dropped: Strata too high
在ntp客戶端運行ntpdate serverIP,出現no server suitable for synchronization found的錯誤。
在ntp客戶端用ntpdate –d serverIP查看,發現有Server dropped: strata too high的錯誤,并且顯示stratum 16。而正常情況下stratum這個值得范圍是0~15。
這是因為NTP server還沒有和其自身或者它的server同步上。
以下的定義是讓NTP Server和其自身保持同步,如果在/ntp.conf中定義的server都不可用時,將使用local時間作為ntp服務提供給ntp客戶端。
server 127.127.1.0
fudge 127.127.1.0 stratum 8
在ntp server上重新啟動ntp服務后,ntp server自身或者與其server的同步的需要一個時間段,這個過程可能是5分鐘,在這個時間之內在客戶端運行ntpdate命令時會產生no server suitable for synchronization found的錯誤。
那么如何知道何時ntp server完成了和自身同步的過程呢? 在ntp server上使用命令:
watch ntpq -p
出現畫面:
Every 2.0s: ntpq -p Thu Jul 10 02:28:32 2008
remote refid st t when poll reach delay offset jitter
===========================================================================
192.168.30.22 LOCAL(0) 8 u 22 64 1 2.113 179133. 0.001
LOCAL(0) LOCAL(0) 10 l 21 64 1 0.000 0.000 0.001
注意LOCAL的這個就是與自身同步的ntp server。
注意reach這個值,在啟動ntp server服務后,這個值就從0開始不斷增加,當增加到17的時候,從0到17是5次的變更,每一次是poll的值的秒數,是64秒*5=320秒的時間。
如果之后從ntp客戶端同步ntp server還失敗的話,用ntpdate –d來查詢詳細錯誤信息,再做判斷。
錯誤2.Server dropped: no data
從客戶端執行netdate –d時有錯誤信息如下:
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
192.168.30.22: Server dropped: no data
server 192.168.30.22, port 123
.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出現這個問題的原因可能有兩個:
1.檢查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定義中使用了notrust的話,會導致以上錯誤。使用以下命令檢查ntp的版本:ntpq -c version。下面是來自ntp官方網站的說明:
The behavior of notrust changed between versions 4.1 and 4.2.
In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".
In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd
解決:把notrust去掉。
2.檢查ntp server的防火墻。可能是server的防火墻屏蔽了upd 123端口。 可以用命令service iptables stop來關掉iptables服務后再嘗試從ntp客戶端的同步,如果成功,證明是防火墻的問題,需要更改iptables的設置。
文章內容來源于日常積累和網絡資源,轉載請注明出處,向每一個分享技術資源的開發者致謝。
總結
以上是生活随笔為你收集整理的linux服务器应用NTP配置时间同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode markdown插件_如何
- 下一篇: 名人与风水(名人与风水故事全集)