Linux下,默認狀況下,系統時間(date)和硬件時間(hwclock)並不會自動同步。在Linux運行過程當中,系統時間和硬件時間以異步的方式運行,互不干擾。硬件時間的運行,是靠BIOS電池來維持,而系統時間,是用CPU Tick來維持的。在系統開機的時候,會自動從BIOS中取得硬件時間,設置爲系統時間。 算法
ntpdate 通常強制性的將系統時間設置爲ntp服務器時間。若是CPU Tick有問題,只是治標不治本。因此,通常配合cron命令,來進行按期同步設置,天天或者沒必定時間段執行同步校訂異步
使用ntpd服務,要好於ntpdate加cron的組合。由於,ntpdate同步時間會形成時間的突變和跳躍,對一些依賴時間的程序和服務會形成影響。好比sleep,timer等。並且ntpd服務能夠在修正時間的同時,修正CPU Tick。所以理想的作法爲,在開機的時候,使用ntpdate強制同步時間,在其餘時候使用ntpd服務來同步時間。post
ntpd 有一個自我保護的機制:若是本機與上源時間相差太大,ntpd 不會運行時間同步操做,因此新設置的時間服務器必定要先 ntpdate 從上源取得時間初值, 而後啓動 ntpd服務。ntpd服務運行後,先是每64秒與上源NTP服務器同步一次,根據每次同步時測得的偏差值經複雜計算逐步調整本身的時間,隨着偏差減少,逐步增長同步的間隔。每次跳動,都會重複這個調整的過程。加密
NTP時間同步方案設計.net
方案詳細解釋:設計
(1)管理節點1做爲主NTP服務器,跟互聯網NTP服務器進行時間同步;管理節點2做爲備用NTP服務器,也跟互聯網NTP服務器進行時間同步。兩個管理節點作Heartbeat,設置一個漂移IP地址192.168.0.103,並對ntpd服務進行雙機高可用;
(2)集羣計算節點和IO節點,跟管理節點的虛擬IP地址192.168.0.103經過ntpd服務作時間同步;
(3)全部節點,在ntp時間同步的同時,設置硬件時間跟系統時間一致;
(4)全部計算節點和IO節點開機時,經過ntpdate跟192.168.0.103進行時間同步,而後再開啓ntpd服務。
Network Time Protocol(NTP)是用來使計算機時間同步化的一種協議,它可使計算機對其服務器或時鐘源作同步化,它能夠提供高精準度的時間校訂,且可用加密確認的方式來防止惡毒的協議攻擊。
NTP提供準確時間,首先要有準確的時間來源,這一時間就是是國際標準時間UTC。 NTP得到UTC的時間來源能夠是原子鐘、天文臺、衛星,也能夠從Internet上獲取。這樣就有了準確而可靠的時間源。時間按NTP服務器的等級傳播。按照離外部UTC源的遠近將全部服務器納入不一樣的Stratum層。Stratum-1在頂層,有外部UTC接入,而Stratum-2則從Stratum-1獲取時間,Stratum-3從Stratum-2獲取時間,以此類推,但Stratum層的總數限制在15之內。全部這些服務器在邏輯上造成階梯式的架構相互鏈接,而Stratum-1的時間服務器是整個系統的基礎。
計算機主機通常同多個時間服務器鏈接, 利用統計學的算法過濾來自不一樣服務器的時間,以選擇最佳的路徑和來源來校訂主機時間。即便主機在長時間沒法與某一時間服務器相聯繫的狀況下,NTP服務依然有效運轉。爲防止對時間服務器的惡意破壞,NTP使用了識別(Authentication)機制,檢查來對時的信息是不是真正來自所宣稱的服務器並檢查資料的返回路徑,以提供對抗干擾的保護機制。