企業(yè)分布式部署NTP校時應(yīng)用方案
原創(chuàng)【51CTO 專稿】我單位網(wǎng)絡(luò)屬于中等規(guī)模網(wǎng)絡(luò),隨著信息系統(tǒng)的不斷升級和新系統(tǒng)的投入應(yīng)用,一段時間以來各應(yīng)用系統(tǒng)之間的時間不統(tǒng)一問題嚴重的影響到了我單位上端應(yīng)用系統(tǒng)的正常應(yīng)用。尤其是那些對系統(tǒng)時間要求嚴格的應(yīng)用,更是因為計算機彼此的時間問題,導(dǎo)致應(yīng)用系統(tǒng)頻繁報錯或者出現(xiàn)莫名其妙的數(shù)據(jù)庫連接失敗等嚴重故障。加上網(wǎng)絡(luò)中各路由器及其它應(yīng)用系統(tǒng)的前端設(shè)備時間不統(tǒng)一,給現(xiàn)場生產(chǎn)系統(tǒng)操作及維護人員帶來很多不必要的麻煩。更嚴重的時候因為前端應(yīng)用面向的是客戶,遭致客戶投訴也就再所難免。為此,我們結(jié)合生產(chǎn)環(huán)境需求采用了分布式方式部署了一套NTP校時應(yīng)用方案,較好的解決了各分散應(yīng)用系統(tǒng)存在的系統(tǒng)時差帶來的問題,現(xiàn)將整體方案及部署細節(jié)進行總結(jié),希望給廣大系統(tǒng)維護人員以幫助和啟發(fā)。
需求分析
我們的前期網(wǎng)絡(luò)中各應(yīng)用系統(tǒng)部署時間不同,但隨著需求的更新發(fā)展,應(yīng)用系統(tǒng)間又需要進行數(shù)據(jù)庫或者其他數(shù)據(jù)流的相互共享及操作,并且部分應(yīng)用系統(tǒng)又需要分別以不同的方式向客戶提供同一源數(shù)據(jù)。有些數(shù)據(jù)還需要向客戶顯示當時的真實記錄時間。缺少統(tǒng)一時間導(dǎo)致同一源數(shù)據(jù)在不同系統(tǒng)中時間記錄各異,非常容易導(dǎo)致源數(shù)據(jù)混亂,并出現(xiàn)數(shù)據(jù)庫訪問故障(這些問題其實已經(jīng)存在,并給客戶造成了混亂)。而我們的中型規(guī)模網(wǎng)絡(luò)(網(wǎng)絡(luò)子網(wǎng)數(shù)在100左右)如果采取集中授時的方式,所有節(jié)點通過單一授時服務(wù)器進行時鐘同步服務(wù),必然給整個網(wǎng)絡(luò)帶來流量增加及授時服務(wù)器負載過大的風險。為此我們只允許網(wǎng)絡(luò)中子網(wǎng)路由器的時鐘同步可以與NTP授時服務(wù)核心層中的服務(wù)器進行。
子網(wǎng)路由器下端用戶的時鐘同步則直接由本地子網(wǎng)路由器負責。這種分布式部署可以最大限度的減少整個網(wǎng)絡(luò)的數(shù)據(jù)流量,同時也更大限度的減輕了NTP授時核心服務(wù)器的負載壓力。從安全角度看,目前市場出售的通過GPS進行取時的硬件設(shè)備盡管可以通過網(wǎng)絡(luò)接口直接進行時鐘同步服務(wù),但其未能通過防火墻設(shè)備和企業(yè)私有網(wǎng)絡(luò)進行很好的隔離,存在一定的通過GPS設(shè)備使信息外瀉的安全風險。而如果我們采用分布式分層結(jié)構(gòu)的NTP授時部署方案,則可以非常好的規(guī)避以上存在的問題。在NTP授時服務(wù)的核心層設(shè)計中為了滿足NTP授時服務(wù)的7X24小時的有效要求。我們采用了雙NTP授時服務(wù)器交叉部署的方式來滿足以上應(yīng)用的要求。拓撲圖如下:
實施細節(jié)
一、 NTP授時服務(wù)核心層規(guī)劃及應(yīng)用服務(wù)器參數(shù)配置
在該核心層中我們分別使用兩臺GPS取時設(shè)備與兩臺安裝Linux操作系統(tǒng)的授時服務(wù)器通過以太網(wǎng)方式相連,并且分別將兩個相連設(shè)備IP地址設(shè)置在只包含兩個有效IP地址的子網(wǎng)內(nèi),列如:GPS時鐘源1的IP地址可以設(shè)置為:192.168.*.1,地址掩碼:255.255.255.252。那么授時服務(wù)器NtpServer1的IP地址應(yīng)為:192.168.*.2, 地址掩碼:255.255.255.252。這樣以上兩臺設(shè)備進行通訊看起來非常類似于點到點的數(shù)據(jù)交互。同時我們可以在Linux操作系統(tǒng)中使用iptables防火墻設(shè)置規(guī)則只允許時鐘同步數(shù)據(jù)進行通訊,這樣可以非常好的將GPS取時設(shè)備與企業(yè)私有網(wǎng)絡(luò)進行較高安全級別的隔離,有效的規(guī)避GPS設(shè)備外瀉信息的安全風險。
NTP授時服務(wù)器組建安裝及參數(shù)配置以如下:
1、組建安裝,因為我們使用的是REDHAT公司的RHEL5.5,因此組建安裝可是使用如下命令進行,命令模式如下:
- [root@localhost~]# yum install ntpd
執(zhí)行該命令后,系統(tǒng)會自動安裝NTP時鐘同步相關(guān)的依賴包及默認配置參數(shù)等文件。
2、參數(shù)配置,使用vi /etc/ntp.conf對該文件進行修改,命令模式如下:
- [root@localhost~]# vi /etc/ntp.conf
之后在該文件中添加如下內(nèi)容:
- server 192.168.*.1
- restrict 192.168.*.1 mask 255.255.255.255 nomodify notrap noquery
其中server 192.168.*.1的作用就是指定上端授時服務(wù)器地址,因為我們已經(jīng)將該服務(wù)器連接的GPS取時設(shè)備地址修改為以上地址,因此管理員需要根據(jù)自己的實際情況進行修改。后一行參數(shù)的目的是讓授時服務(wù)器根據(jù)上端GPS取時設(shè)備的時間來對自己的系統(tǒng)時間進行同步。之后管理員需要找到配置文件中如下兩行:
- #server 127.127.1.0 # local clock
- #fudge 127.127.1.0 stratum 10
并將之前的"#"號注釋去掉,以啟用該兩行參數(shù),其中行fudge 127.127.1.0 stratum 10的內(nèi)容可以定義該服務(wù)器在NTP時鐘校對中錯處的層次,該參數(shù)在windows系統(tǒng)時鐘同步報"時間例子被拒絕,因為:對等機器的層次(stratum)比主機層次少。"錯誤時可以將stratum 10中的數(shù)值改大,應(yīng)該就可以消除該錯誤。修改完成后可是使用如下命令模式啟用時鐘同步服務(wù),命令模式如下:
- [root@localhost~]# /etc/init.d/ntpd restart
等待2-5分鐘后使用如下命令模式查看時鐘同步服務(wù)狀態(tài),命令模式如下:
- [root@localhost~]# ntpq -p
系統(tǒng)返回包含如下輸出信息時說明時鐘同步服務(wù)已經(jīng)正常啟動,返回信息如下:
- *192.168.*.1 .GPS. 1 u 6 64 177 1.917 -1000.1 0.292
- LOCAL(0) .LOCL. 10 l 11 64 177 0.000 0.000 0.001
之后使用如下命令模式將時鐘同步服務(wù)修改為開機啟用模式,命令模式如下:
- [root@localhost~]# chkconfig ntpd on
以上配置我們以NtpServer1配置為例,NtpServer2的配置管理員只須根據(jù)實際情況將上端授時服務(wù)器地址修改為NtpServer2所連接的GPS取時設(shè)備地址即可。通過網(wǎng)絡(luò)拓撲圖我們可以看到,兩臺授時服務(wù)器實際上還分別接入了不同的子網(wǎng),那么我們還需要在各自的網(wǎng)絡(luò)接口上為其配置相應(yīng)的IP地址。以便未來下端路由器可以通過該授時服務(wù)器進行時鐘同步。在Linux下的IP地址配置不在詳述,讀者可以查閱相關(guān)資料來根據(jù)自己的網(wǎng)絡(luò)地址規(guī)劃進行自行設(shè)置。為了舉例說明我們假設(shè)NtpServer1在A網(wǎng)絡(luò)中的地址為10.109.1.3,在B網(wǎng)絡(luò)中的地址為196.0.0.3;而NtpServer2在A網(wǎng)絡(luò)中的地址為10.109.1.4,在B網(wǎng)絡(luò)中的地址為196.0.0.4。到此我們的授時方案中的核心層基本部署完成。
二、 NTP授時服務(wù)分布層的規(guī)劃及參數(shù)配置
在NTP授時分布層我們主要是利用了相應(yīng)網(wǎng)絡(luò)中子網(wǎng)路由器的時鐘同步功能,配置相應(yīng)NTP應(yīng)用服務(wù)參數(shù),讓路由器對上向NTP授時服務(wù)核心層配置的NtpServer服務(wù)器請求時鐘同步,同時這些路由器也將負責本地節(jié)點的時鐘同步請求服務(wù)。這樣可以避免局部網(wǎng)絡(luò)故障導(dǎo)致的全局性問題,并且減少了網(wǎng)絡(luò)的全局數(shù)據(jù)流量。有效了規(guī)避了集中部署可能帶來的數(shù)據(jù)流量壓力。我們主要應(yīng)用的路由器產(chǎn)品是CISCO系列路由設(shè)備以及H3C系列路由產(chǎn)品。盡管它們都提供了NTP時鐘同步服務(wù)的支持功能,但配置參數(shù)略有不同。
NTP授時服務(wù)分布層的參數(shù)配置如下:
1、CISCO系列產(chǎn)品配置方法包括以下命令,首先登錄到路由器中使用如下命令進入全局模式,命令模式如下:
- Route#conf t
之后如果CISCO路由器型號低于2811C則在提示符下依次輸入以下兩條命令,命令模式如下:
- Route(config)#ntp server 10.109.1.3
- Route(config)#ntp server 10.109.1.4
對型號高于2811C的路由器則在命令提示符下輸入依次輸入以下三條命令,命令模式如下:
- Route(config)#ntp update-calendar
- Route(config)#ntp server 10.109.1.3 version 3 burst iburst
- Route(config)#ntp server 10.109.1.4 version 3 burst iburst
其中以上兩個IP地址就是為NtpServer分配的相關(guān)網(wǎng)絡(luò)對應(yīng)的子網(wǎng)IP地址。管理員可根據(jù)自己的實際情況進行設(shè)置。配置好后可退出全局模式,等待一段時間之后輸入如下命令,命令模式如下:
- Route#show ntp associations
如果系統(tǒng)返回信息包含以下內(nèi)容:
- *~10.109.1.3 83.84.69.80 16 33 64 374 6.743 -19.450 3.292
- * sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured
則說明NTP時鐘同步已經(jīng)正常運行。
2、H3C系列產(chǎn)品配置方法包括以下命令,首先登錄到路由器中使用如下命令進入全局模式,命令模式如下:
- <Route>system-view
之后在提示符下依次輸入以下兩條命令,命令模式如下:
- [Route]ntp-service unicast-server 196.0.0.3
- [Route]ntp-service unicast-server 196.0.0.4
等待一段時間之后輸入如下命令,命令模式如下:
- [Route]dis ntp-service sessions
如果系統(tǒng)返回信息包含以下內(nèi)容:
- [12345]196.0.0.3 10.109.30.210 2 255 64 43 -2.1 4.0 0.9
- note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured
則說明NTP時鐘同步已經(jīng)正常運行。
需要特別說明的是,在路由器上進行NTP時鐘同步設(shè)置前,管理員需要首先將路由器時間修改為當前時間,如果路由器時間與NtpServer服務(wù)器時間相差太大,那么NTP同步將會失敗。
三、客戶端用戶主機配置
客戶端的NTP服務(wù)需要在用戶終端機器上進行,目前應(yīng)用服務(wù)器及日常桌面系統(tǒng)包括Linux及WINDOWS操作系統(tǒng),下面就分別就兩個操作系統(tǒng)下的NTP服務(wù)器設(shè)置進行講述。
1、windows下的NTP時鐘同步設(shè)置
在windows下設(shè)置NTP時鐘同步,用戶可以直接選擇控制面板中管理工具下的服務(wù)并點擊進入,并找到Windows Time維護在網(wǎng)絡(luò)上的所有客戶端和服務(wù)器的時間和日期同步,將啟動類別選擇為"自動",并點擊啟動按扭。如圖:
之后可以雙擊任務(wù)欄中的系統(tǒng)時間,并在其界面上選擇internet時間,在服務(wù)器輸入攔內(nèi)輸入本地已經(jīng)配置過NTP時間同步的路由器地址,如圖:
有時在Windows下進行時鐘同步,系統(tǒng)會報"在獲取最近一次同步狀態(tài)時出錯。RPC服務(wù)器不可用"錯誤。這時用戶可以直接使用命令regsvr32對W32time服務(wù)進行重新注冊。命令模式如下:
- C:\>regsvr32 /u w32time
- C:\ >regsvr32 w32time
在windows系統(tǒng)中,系統(tǒng)的默認時鐘同步間隔時間為7天,如果系統(tǒng)對實時性要求較高,那么管理員可以通過修改注冊表來縮短校時間隔已提高系統(tǒng)內(nèi)各計算機節(jié)點的時間準確度,展開注冊表中HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->W32Time->TimeProviders->NtpClient分支,并雙擊SpecialPollInterval鍵值,將對話框中的"基數(shù)欄"選擇到"十進制"上,輸入框中顯示的數(shù)字正是自動對時的間隔(以秒為單位),比如默認的604800就是由7(天)×24(時)×60(分)×60(秒)計算來的。設(shè)定時間同步周期為一天,即24小時(86400秒),填入對話框,選十進制就填86400,選十六進制就填15180,點擊確定保存關(guān)閉對話框。管理員可以根據(jù)自己的需求進行計算后修改。
2、linux下的NTP時鐘同步設(shè)置
目前多數(shù)Linux下默認采用GNOME桌面,點擊時間設(shè)置中的網(wǎng)絡(luò)時間時需要安裝NTPD服務(wù)器才能讓這個網(wǎng)絡(luò)時間按鈕成為開啟狀態(tài),之后就可以直接想WINDOWS那樣直接輸入本地已經(jīng)配置過NTP時間同步的路由器地址就可以進行時鐘同步服務(wù)了。而目前代表未來技術(shù)發(fā)展方向的更新的Linux發(fā)行版如Fedora20中的網(wǎng)絡(luò)時間同步軟件默認安裝的是Chronyd時鐘同步服務(wù),其實你在GNOME下開不開那個網(wǎng)絡(luò)時間的按鈕。網(wǎng)絡(luò)時間同步都在進行中。Chronyd的配置文件位于/etc/chrony.conf 。在該文件中相應(yīng)段內(nèi)添加本地已經(jīng)配置過NTP時間同步的路由器地址,重起服務(wù)后系統(tǒng)將自動進行時鐘同步服務(wù)。Chronyd的管理命令如下:
- chronyc sources
- chronyc sourcestats
- chronyc sources
- chronyc tracking
后記
在一個網(wǎng)絡(luò)中,計算機節(jié)點的系統(tǒng)時間同步問題已經(jīng)逐步的成為了網(wǎng)絡(luò)規(guī)劃及設(shè)計實施的基礎(chǔ)性功能問題之一,尤其是大中型網(wǎng)絡(luò)更是如此。一個良好的網(wǎng)絡(luò)校時方案的部署將很好的為用戶及應(yīng)用系統(tǒng)提供時間層面的統(tǒng)一。我們在NTP授時服務(wù)核心層規(guī)劃中采用了GPS授時設(shè)備及核心層NtpServer雙機的模式,這樣可以最大限度的保證核心層的強壯性,同時在整個應(yīng)用部署中又利用原有路由設(shè)備將其規(guī)劃為針對用戶節(jié)點視角的分布式結(jié)構(gòu),這樣又可以有效的減小整個網(wǎng)絡(luò)的數(shù)據(jù)流量,同時也更大限度的減輕了NTP授時核心服務(wù)器的負載壓力。該方案已經(jīng)可以非常好的滿足粒度不小于分鐘級的時鐘同步需求。而要滿足分鐘級以下的時鐘同步需求,我們則需要采用REDHAT公司制定的精密時間協(xié)議PTP因為它可確保對跨網(wǎng)絡(luò)分布式時鐘精確到亞微秒的同步。
【作者信息】
作者:解寶琦 荊斌
單位:陜西安康市安康車務(wù)段信息技術(shù)科
郵編:725000