目錄:
(一)NTP服務器的概念
(二)NTP服務器的設置算法
(一)NTP服務器的概念
(1.1)NTP(Network Time Protocol)服務器是用來是計算機時間同步化的一種協議,它可使計算機對其服務器或時鐘源(如石英鐘,GPS等等)作同步化,它能夠提供高精準度的時間校訂(LAN上與標準時間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議attack。時間按NTP服務器的等級傳播,按照離外部UTC源的遠近把全部服務器納入不一樣的Stratum(層)中。
(1.2)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)機制,檢查來對時的信息是不是真正來自所宣稱的服務器並檢查資料的返回路徑,以提供對抗干擾的保護機制。
(1.3)例如在咱們系統中有一臺NTP服務器,而後會有多臺待同步時間的成員服務器。在每臺主機的主板上都會有一個晶體震盪芯片始終在跳動着,因爲每一個晶體震盪芯片的震動頻率不徹底一致,因此各個主機也很難保持時間的同步。此時咱們就須要由NTP服務器來保證各個主機時間的一致性,例如如今NTP服務器標準時間是7:00:00點整,而此時在A主機上的時間是6:59:00分,C主機是7:01:00分,那麼此時A主機便會加快本身晶體震盪芯片的跳動頻率儘快遇上NTP服務器的步伐,而C主機便會減慢本身晶體震盪芯片的跳動頻率降速也儘快和NTP服務器的時間保持一致。vim
(二)NTP服務器的設置
(2.1)在咱們系統中有多種同步時間的服務,其中RHEL 7系統中默認的時間同步服務是chrony,不過這個服務並很差用,咱們使用的是NTP服務。咱們先將vms002主機的chrony服務刪除掉,而後安裝NTP軟件包。
# yum list chr*---查詢chrony服務
# yum remove chrony.x86_64 -y---將chrony服務卸載掉
# systemctl stop ntpd---中止ntpd服務
# yum remove ntp -y---將以前的NTP服務卸載掉
# rm -rf /etc/ntp.conf.rpmsave---將ntp服務剩餘的文件刪除掉
# yum install ntp -y---安裝NTP服務的軟件包
(2.2)接着咱們編輯ntp服務的配置文件,其中vms002主機的/var/lib/ntp/drift文件表示的是晶體震盪芯片的配置文件,而restrict表示「限制」,default表示「默認」,nomodify表示「不容許修改」,notrap表示「不容許陷阱操做」,nopeer表示不容許創建對等的鏈接,noquery表示不容許查詢。而後咱們指定192.168.26.0網段的主機能夠向vms002主機發送NTP查詢,並指定本機NTP服務器的時間參考標準爲本機主板上晶體震盪芯片的IP地址127.127.1.0
# vim /etc/ntp.conf---編輯ntp服務的配置文件
(2.3)而後咱們將vms002主機的ntp服務重啓一下,並設置開機自動啓動,由於ntp服務監聽的端口是123,此時咱們經過netstat命令查詢發現ntp服務也已經處於監聽的狀態了。
# systemctl restart ntpd---將ntp服務重啓一下
# systemctl enable ntpd---設置開機自動啓動
# netstat -tunlp | grep ':123'---查看ntp服務是否有監聽
(2.4)接着咱們在vms002主機上設置將當前的時間調整爲慢了1個小時左右的狀態,而後咱們在vms002主機上使用ntpdate命令以此來設置按照vms001主機的時間進行同步,此時咱們發現vms002主機的時間已經更新爲正確的狀態了。
# date -s "2019-11-12 20:00:00"---設置當前系統的時間
# ntpdate 192.168.26.101---設置時間和vms001主機的時間的進行同步時間同步
(2.5)因爲以上的方式咱們是經過ntpdate手動的方式進行時間同步的,隨着時間的推移可能會常常產生時間不一樣步的狀況。因此咱們須要在系統中設置一個守護進程daemon,讓它本身自動和服務器保持時間同步。此時咱們即可以在vms002主機上安裝ntp客戶端軟件(圖2-6),接着打開ntp客戶端軟件後,咱們輸入時間同步的服務器的地址192.168.26.101,並勾選加速初始同步(圖2-7),其中若是勾選了使用本地時鐘源就是表示以本機晶體震盪芯片的IP地址127.127.1.0爲時間同步。若是咱們但願在客戶端使用命令行的方式進行配置,則能夠在/etc/chrony.conf配置文件中進行設置(圖2-7-1)。
# yum install system-config-date -y---在vms002主機安裝ntp客戶端軟件
# system-config-date &---打開圖形化界面
# vim /etc/chrony.conf---客戶端中ntp服務的配置文件
(2.6)若是咱們但願查看系統是否真的已經保持了時間同步,咱們可使用chronyc命令,當咱們看到此處表示的爲「*」的時候,就表示當前系統的時間已經同步了。
# chronyc sources -v---查詢當前系統是否已經保持時間同步
(2.7)
(2.7.1)咱們除了使用date命令能夠來設置系統時間,咱們還可使用timedatectl命令來設置咱們的系統時間。咱們可使用status來查看當前系統的狀態,可使用list-timezones來查看當前系統全部的時區信息,使用set-timezone參數來設定當前系統的時區。
# timedatectl---默認和timedatectl status意義一致
# timedatectl status---查看當前系統時間的狀態
# timedatectl list-timezones---查看當前系統全部時區的信息
# timedatectl set-timezone Africa/Dakar---修改當前的時區爲Africa/Dakar
# timedatectl set-timezone Asia/Shanghai---修改當前的時區爲亞洲上海
(2.7.2)若是咱們想對時間進行設置,則可使用set-time命令進行時間的設置。
# timedatectl set-time "2012-12-21 10:00:00"---使用set-time設置當前系統時間
(2.7.3)若是咱們系統是RHEL 6的系統,沒有timedatectl命令,那麼咱們應該怎樣修改時區的信息呢?咱們能夠將/usr/share/zoneinfo/Asia/目錄中的模板文件拷貝到當前系統的/etc/localtime時區的目錄中,此時咱們/etc/localtime實際上是一個連接文件(圖2-13)。
# ls /usr/share/zoneinfo/Asia/
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime---將上海的時區拷貝到/etc/localtime的目錄
# ls -l /etc/localtime服務器
—————— 本文至此結束,感謝閱讀 ——————架構