內網外網伺服器時間同步解決方案

技術小胖子發表於2017-11-03
一.時間伺服器(NTP)相關解釋
    網路時間協議NTP(Network Time Protocol)是用於網際網路中時間同步的標準網際網路協議。NTP的用途是把計算機的時間同步到某些時間標準。目前採用的時間標準是世界協調時UTC(Universal Time Coordinated)
二.時間伺服器的重要性
 
      在網際網路上進行時間同步具有重要意義。隨著網際網路的發展和延伸到社會的各個方面,在其他的領域對時間同步也提出了多種要求,例如各種實時的網上交易、通訊網路的時間配置、網路安全性設計、分佈性的網路計算和處理、交通航班航路管理以及資料庫檔案管理和呼叫記錄等多種涉及時間戳的應用,都需要精確、可靠和公認的時間。如果系統內某個伺服器的時間有誤差會造成互動失敗有歧義,嚴重的將導致交易失敗。由此可以看出NTP伺服器的存在是不容置疑的。
三.內外網伺服器時間同步方案
 
    說明了時間同步的重要性後,需要根據實際情況來調整伺服器的時間同步策略:

1.       如果每個伺服器都可以有公網IP地址與外界通訊,那簡單的方式就是:每個伺服器都可以配置與網際網路上的時間伺服器進行同步,達到每個內外網伺服器系統時間的一致性。

2.       但是通常的情況是:在IDC託管的伺服器只有前端WEB伺服器對外通訊,資料庫,檔案等伺服器只是通過私網地址與前端WEB通訊,形成整體的架構。

這個時候就需要整體系統內部有一臺伺服器來擔當中介,具體是:將某臺伺服器配置成時間伺服器(注:此伺服器能直接同步網際網路上的時間伺服器),其他所有伺服器都定時與這臺伺服器在內部進行時間同步,達到每個伺服器的時間一致性。
 
四.方案圖示

  

五.時間伺服器配置     
   

1.       安裝NTP軟體

因為系統所用系統是CentOS就可以使用YUM方便的安裝系統軟體。
#yum  install  ntp

2.       編輯配置檔案

備份一下原始配置檔案:mv /etc/ntp.conf    /etc/ntp.conf-bk

vi  /etc/ntp.conf
新增如下內容

允許192.168.100.0 網段伺服器進行同步,拒絕其他伺服器的同步

restrict 192.168.100.0 mask 255.255.255.0 nomodify
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust
restrict 127.0.0.1
restrict -6 ::1
 
外網時間伺服器定義
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
server pool.ntp.org
 
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift    
      

3.       啟動NTP服務

service  ntpd s tart
 

4.       客戶端配置

新增到計劃任務中,每三十分鐘同步一次
crontab  –e

 30 * * * *   /usr/sbin/ntpdate  192.168.100.5

開機啟動時的時間同步設定
echo  “/usr/sbin/ntpdate  192.168.100.5;/sbin/hwclock -w ”>> /etc/rc.d/rc.local
 

5.       手動在其他伺服器上同步時鐘

root@xen100 vm_backup_script]# /usr/sbin/ntpdate  192.168.100.5

28 Jul 17:30:59 ntpdate[19081]: adjust time server 192.168.100.5 offset -0.019476 sec

[root@xen100 vm_backup_script]# date
Sat Jul 28 17:31:02 CST 2012
#######################################################
今天同事給了一個關於ntpd和ntpdate 的區別說明連線,內容如下:
 
ntpd不僅僅是時間同步伺服器,他還可以做客戶端與標準時間伺服器進行同步時間,而且是平滑同步,並非ntpdate立即同步,在生產環境中應慎用ntpdate。
  由於ntpdate是立即同步,在獲得一個時間之後,ntpdate使用settimeofday(2)設定系統時間,就會產生時鐘的躍變。
  用ntpdate調整時間的方式,會有幾個非常明顯的問題:
  第一,這樣做不安全。ntpdate的設定依賴於ntp伺服器的安全性,攻擊者可以利用一些軟體設計上的缺陷,拿下ntp伺服器並令與其同步的伺服器執行某些消耗性的任務。由於ntpdate採用的方式是跳變,跟隨它的伺服器無法知道是否發生了異常(時間不一樣的時候,唯一的辦法是以伺服器為準)。
  第二,這樣做不精確。一旦ntp伺服器當機,跟隨它的伺服器也就會無法同步時間。與此不同,ntpd不僅能夠校準計算機的時間,而且能夠校準計算機的時鐘。
  第三,這樣做不夠優雅。由於ntpdate是跳變,而不是使時間變快或變慢,依賴時序的程式會出錯。例如,如果ntpdate發現你的時間快了,則可能會經歷兩個相同的時刻,對某些應用而言,這是致命的。
  許多應用程式依賴連續的時鐘,取得的時間是線性的。例如資料庫事務,通常會地依賴這樣的事實:時間不會往回跳躍。
  我們可以想象以下,假如Oracle伺服器的時間是01:00 AM,標準時間是00:30 AM,很明顯Oracle伺服器經過他自己的時間00:40 AM。假若此時直接使用ntpdate將伺服器與標準時間同步,那麼意味著Oracle伺服器將在同一天經過兩個00:40 AM,這對於某些計劃任務來說可能是致命的。
  因而,唯一一個可以令時間發生跳變的點,是計算機剛剛啟動,但還沒有啟動很多服務的那個時候。其餘的時候,理想的做法是使用ntpd來校準時鐘,而不是調整計算機時鐘上的時間
#######################################################
按照上面的說法,那我們就可以改變客戶端的配置取消ntpdate 的計劃任務同步時間
將所有客戶端配置成時間伺服器,只是配置檔案中的 :
外網時間伺服器定義指向與外網同步的時間伺服器即可
server 192.168.100.5
     本文轉自andylhz 51CTO部落格,原文連結:http://blog.51cto.com/andylhz2009/946380,如需轉載請自行聯絡原作者


相關文章