站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

邁向 RHCE 之路 (Day24) - OpenNTPD 系統時間自動校對

網路時間協定 [NTP (Network Time Protocol)] 最初由德拉瓦州大學 (Delaware University) 的大衛米爾斯 (David L. Mills) 所設計,主要目的為透過網路封包交換 (UDP Protocol, Port 123),將二端電腦的時鐘進行同步校對。若讀者想更詳細了解整個 NTP 協定的規範、實作、分析等詳細內容,請參考 [RFC 1305 (NTP version 3)][RFC 5905 (NTP version 4)]

NTP 時間伺服器運作概念採用類似樹狀架構來處理時間的同步化,每一層時間伺服器就稱之為 Stratum,在台灣的主機可以跟 [國家時間與頻率標準實驗室 (Stratum 2)] 進行對時,NTP 時間伺服器運作概念圖可參考 [維基百科 - Network Time Protocol]

企業營運環境的伺服器為數眾多,倘若伺服器之間的時間不同步,可能會造成許多影響。例如伺服器之間的時間誤差超過 5 分鐘時,則將導致 Kerberos 的驗證失敗;或者,當企業購物平台的前端 AP 伺服器與後端資料庫伺服器時間不同步時,則使用者下單記錄可能在資料庫伺服器上顯示為未來時間,或是優惠活動時間明明已經結束,但使用者仍然可以下單購買,造成客服人員的困擾;再者,公司財務報表產生時,若伺服器之間的時間不同步,則會造成財務報表合併時在核對上出現困擾。以上舉例的種種問題,追究其原因,便是由於眾多伺服器之間時間不同步所造成。

在此次設定中,我們為 CentOS 主機安裝 OpenNTPD 客戶端,來進行系統運作時間校對。OpenNTPD 客戶端與一般的 NTP 客戶端時間校對方式有著明顯的不同,一般 NTP 客戶端的時間校對方式為「強迫性一次調整到位」,也就是不管現在系統時間,一律直接跟 NTP 伺服器校對後調整。偏向暴力性的一次到位調整時間的方式,在某些狀況下可能會對主機運作穩定性上產生問題。而此次安裝的 OpenNTPD 客戶端的時間校對方式為:當 OpenNTPD 客戶端與 NTP 時間伺服器有時間誤差時,OpenNTPD 客戶端會將主機每隔幾分鐘進行系統時間「微調」,慢慢調整,直到最後與時間伺服器上的標準時間達成一致。這樣溫和的時間調整方式,對於要求高穩定性的企業營運環境伺服器來說,相對而言是比較適合的。

在安裝 OpenNTPD 客戶端以前,請您先使用 rpm –qa 指令來確認 CentOS 主機是否已經安裝 gcc 及 make 套件(若系統沒有安裝,請使用 YUM 套件管理工具進行 yum –y install gcc make 安裝指令),以便在安裝 OpenNTPD 套件時能順利進行編譯 (Compile) 與安裝 (make)。在設定前,您可以故意先將 CentOS 主機系統時間調慢 5分鐘,待之後啟動 OpenNTPD 服務後,即可發現系統開始跟 NTP 時間伺服器慢慢進行時間校對。

在 CentOS 預設的 YUM 套件管理工具中,並未收錄 OpenNTPD 軟體套件,因此請自行從 OpenBSD 的鏡像站台下載、解壓縮、編譯,並安裝 OpenNTPD 套件。下列操作步驟為先利用 wget 指令下載 OpenNTPD 套件至 /tmp 資料夾下,並將 OpenNTPD 套件檔案解壓縮後執行 ./configure、make、make install 等指令,將 OpenNTPD 套件編譯並進行安裝。

 #yum -y install gcc make         //安裝 gcc 及 make 套件
 #rpm -qa gcc make                //查看 gcc 及 make 套件資訊
  make-3.81-19.el6.i686
  gcc-4.4.4-13.el6.i686
 #cd /tmp                         //切換到 tmp 資料夾
 #wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/openntpd-3.9p1.tar.gz   //下載 OpenNTPD 套件
 #tar zxvf openntpd-3.9p1.tar.gz  //解壓縮
 #cd openntpd-3.9p1               //切換到解壓縮後的目錄
 #./configure                     //環境準備
 #make                            //編譯
 #make install                    //安裝

在上述最後執行套件安裝的動作 make install 時,我們可以看到,系統提示我們必須要為系統建立 _ntp 的使用者帳號及群組,以便屆時使用 _ntp 使用者帳號來啟動 OpenNTP 服務,而非使用 root 管理者帳號,以避免安全性問題。因此安裝完畢後,請使用 useradd 及 groupadd 指令,配合相關參數來新增 _ntp 使用者帳號及群組,接著設定 OpenNTPD 設定檔,指向至企業內部所架設的 NTP 伺服器或網際網路上的 NTP 伺服器 IP 位址。接下來如下所示將 NTP 伺服器指向至國家時間與頻率標準實驗室 (Stratum 2),進行時間校對。最後,設定 OpenNTPD 記錄檔來記錄主機時間校時的狀況,新版 CentOS 6 改用 rsyslog 取代 syslogd,因此修改其設定檔 /etc/rsyslog.conf 並在完成後重新載入系統日誌服務 rsyslog 使其變更生效即可。

 #groupadd _ntp                   //建立 _ntp 群組
 #useradd -g _ntp -s /sbin/nologin -d /var/empty/ntp -c 'OpenNTP Daemon' _ntp   //建立 _ntp 使用者帳號
 #chown root /var/empty/ntp       //資料夾權限設定
 #vi /usr/local/etc/ntpd.conf     //修改 OpenNTPD 設定檔
  #server pool.ntp.org            //預設值
  server clock.stdtime.gov.tw     //修改後 (指向至國家時間與頻率標準實驗室)
 #vi /etc/rsyslog.conf
  deamon.info       /var/log/openntpd
 #service rsyslog reload
  Reloading system logger...                                 [  OK  ]

接著將 OpenNTPD 新增至 CentOS 內建的服務清單內,設定當 CentOS 重新開機時能夠自動啟動 OpenNTPD 服務,自動與國家時間與頻率標準實驗室 NTP 伺服器進行時間校對作業。完成設定後即可啟動 OpenNTPD 服務,並透過剛才建立的記錄檔來觀察目前主機與 NTP 伺服器進行時間校對的情況。

 #cp /tmp/openntpd-3.9p1/contrib/redhat/ntpd  /etc/init.d/openntpd     //複製檔案至系統服務資料夾
 #chmod +x /etc/init.d/openntpd        //將 openntpd 檔案加上可執行權限
 #vi /etc/init.d/openntpd              //修改 openntpd 服務設定檔
   prog="ntpd"
   PATH=/usr/local/sbin:$PATH          //加上此行
 #chkconfig --add openntpd             //新增 OpenNTPD 為系統服務 
 #chkconfig openntpd on                //使 OpenNTPD 於 RunLevel 2 ~ 5 時皆會自動啟動服務
 #chkconfig --list openntpd            //檢查 OpenNTPD 服務自動啟動狀態
   openntpd    0:off   1:off   2:on    3:on    4:on    5:on    6:off
 #service openntpd start               //啟動 OpenNTPD 服務
   Starting ntpd:                 [  OK  ]
 #tail /var/log/openntpd
  Oct 29 17:47:27 Centos6 ntpd[8307]: ntp engine ready
  Oct 29 17:47:47 Centos6 ntpd[8307]: peer 220.130.158.72 now valid
  Oct 29 17:48:43 Centos6 ntpd[8305]: adjusting local clock by 13.694259s //開始校對時間
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com