背 景
當服務器多了,時間準確與否,一致與否是個大問題,雖然這個問題總是被忽略,但是統一一致的時間是很有必要的。下面說一下在局域網內配置Linux時間服務器的方法。
Linux下配置NTP服務器
一、前言:
默認NTP服務端口:
UDP/123
本文配置的NTP工作模式:
使用client/server方式,該方式適用於一臺時間服務器接收上層時間服務器的時間信息,並提供時間信息給下層用戶。
二、安裝配置
NTP時間服務器配置:
yum install ntp ntpdate -y 即可!
修改ntp.conf配置文件
cp /etp/ntp.conf /etc/ntp.conf.bak
2.1 配置信息
配置ntp,將Internet上的時間服務器作爲內部標準時間來源,過程如下
vi /etc/ntp.conf 只修改如下兩行,把#號去掉即可
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
#指定Internet上的時間服務器
restrict 207.46.232.182 mask 255.255.255.255 nomodify notrap noquery
server 207.46.232.182 (可以不寫)
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
keys /etc/ntp/keys
#指定NTP服務器日誌文件
logfile /var/log/ntp
2.2 啟動ntpd服務器
/etc/init.d/ntpd restart 即可
(注意*: ntpd啓動後,客戶機要等幾分鐘再與其進行時間同步,否則會提示“no server suitable for synchronization found”錯誤。)
2.2 ntp服務的啓動、暫停
NTP屬於system V服務,其啓動、暫停相關命令如下:
#啓動 service ntpd start
#停止 service ntpd stop
#重新加載 service ntpd reload
#查看當前啓動狀態 service ntpd status
2.3 ntp服務自動加載
設置ntp服務下一次開機運行狀態可通過命令配置
#在運行級別2、3、4、5上設置爲自動運行
chkconfig ntpd on
#在運行級別2、3、4、5上設置爲不自動運行
chkconfig ntpd off
#在運行級別3、5上設置爲自動運行
chkconfig ntpd --level 35 on
#在運行級別3、5上設置爲不自動運行
chkconfig ntpd --level 35 off
三、修改/etc/ntp/stpe-tickers文件,內容如下(當ntpd服務啓動時,會自動與該文件中記錄的上層NTP服務進行時間校對)
207.46.232.182
127.127.1.0
修改/etc/sysconfig/ntpd文件,內容如下:
#允許BIOS與系統時間同步,也可以通過hwclock -w 命令
SYNC_HWCLOCK=yes
四、管理命令
ntpq –p #查看本機和上層服務器的時間同步結果
ntptrace #可以用來追蹤某臺時間服務器的時間對應關係
ntpdate IP #客戶端要和NTP server進行時鐘同步。
/var/log/ntp/ntp.log #查看ntp日誌
[root@localhost ~]# ntpq -p (NTP服務器端操作)
remote refid st t when poll reach delay offset jitter
==============================================================================
dns1.synet.edu. 202.118.1.46 2 u 27 64 3 43.978 1510.45 32.059
gus.buptnet.edu 29.252.179.249 3 u 29 64 3 26.162 1510.95 30.389
LOCAL(0) .LOCL. 8 l 28 64 3 0.000 0.000 0.000
remote: 它指的就是本地機器所連接的遠程NTP服務器
refid: 它指的是給遠程服務器(e.g. 193.60.199.75)提供時間同步的服務器
st: 遠程服務器的層級別(stratum),由於NTP是層型結構,有頂端的服務器,多層的Relay Server再到客戶端,所以服務器從高到低級別可以設定爲1-16,爲了減緩負荷和網絡堵塞,原則上應該避免直接連接到級別爲1的服務器的。
when: 我個人理解爲一個計時器用來告訴我們還有多久本地機器就需要和遠程服務器進行一次時間同步
poll: 本地機和遠程服務器多少時間進行一次同步(單位爲秒),在一開始運行NTP的時候這個poll值會比較小,那樣和服務器同步的頻率也就增加了,可以儘快調整到正確的時間範圍.之後poll值會逐漸增大,同步的頻率也就會相應減小。
reach: 這是一個八進制值,用來測試能否和服務器連接.每成功連接一次它的值就會增加
delay: 從本地機發送同步要求到服務器的round trip time
offset: 這是個最關鍵的值, 它告訴了我們本地機和服務器之間的時間差別,offset越接近於0,我們就和服務器的時間越接近
jitter: 這是一個用來做統計的值. 它統計了在特定個連續的連接數裏offset的分佈情況. 簡單地說這個數值的絕對值越小我們和服務器的時間就越精確
備註:(當你再次執行 ntpq -p時將會看到下面的符號)
* 它告訴我們遠端的服務器已經被確認爲我們的主NTP Server,我們系統的時間將由這臺機器所提供
+ 它將作爲輔助的NTP Server和帶有*號的服務器一起爲我們提供同步服務. 當*號服務器不可用時它就可以接管
- 遠程服務器被clustering algorithm認爲是不合格的NTP Server
x 遠程服務器不可用
五、NTP客戶端的設置
1)LINUX做爲客戶端自動同步時間
ntpdate IP #客戶端要和NTP server進行時鐘同步。(IP是NTP服務端)
如果想定時進行時間校準,可以使用crond服務來定時執行。
編輯crontab -e
加入下面一行:
*/3 * * * * root /usr/sbin/ntpdate 192.168.1.66 &&/sbin/hwclock -w
2) 然後重啓crond服務
service crond restart
這樣,每3分鐘 Linux 系統就會自動的進行網絡時間校準。
crontab文件配置簡要說明
1) 命令格式的前一部分是對時間的設定,後面一部分是要執行的命令。時間的設定我們有一定的約定,前面五個*號代表五個數字,數字的取值範圍和含義如下:
分鐘 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
2) 除了數字還有幾個個特殊的符號就是“*”、“/”和“-”、“,”,“*”代表所有的取值範圍內的數字,“/”代表每的意思,“*/5”表示每5個單位,“-”代表從某個數字到某個數字,“,”分開幾個離散的數字。以下舉幾個例子說明問題:
每天早上6點:
0 6 * * * command
每兩個小時:
0 */2 * * * command
晚上11點到早上8點之間每兩個小時,早上八點:
0 23-7/2,8 * * * command
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點:
0 11 4 * 1-3 command
1月1日早上4點:
0 4 1 1 * command
3) 設置開機自動啓動服務
運行setup或其它服務設置工具,將crond服務勾選上
chkconfig --level 2345 crond on 定義在這幾個系統運行級別上啓用crond (系統安裝完默認就是這個設置)。
解決NTP遇到問題的URL:http://rocolex.blog.163.com/blog/static/6844641020109654245378/