歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux實下ntp服務器的部署實踐

上篇Linux實戰部署系列之ntp服務器----理論篇為大家介紹時間的相關概念和ntp的原理,本篇博文將帶大家一起部署生產環境中實現簡單的負載均衡和高可用的NTP服務器。

簡易架構圖:

環境:

CentOS6.4 x86_64
server-1 192.168.1.111 NTP服務器1
server-2 192.168.1.112 NTP服務器2
client  192.168.1.113 作為客戶端的某台業務服務器
ntp-4.2.4p8-3.el6.centos.x86_64

一、ntp服務端

1、檢查並安裝ntp服務

[root@c64-ntp-1 ~]# rpm -qa|grep ntp   #如果出現下面兩個就說明本機已經有了
ntpdate-4.2.4p8-3.el6.centos.x86_64
ntp-4.2.4p8-3.el6.centos.x86_64

如果沒有,我們執行下面的命令進行安裝

[root@c64-ntp-1~]# yum install ntp -y

2、同步NTP服務器時間

由於NTP的限制,如果系統時間比正確的時間要快的話,NTP是不會幫你做調整的,而且當你的時間設置和正確的時間相差很大的時候,NTP會花上很長一段時間進行同步調整,因此鑒於此,我們需要先做一個同步。

首先我們要先確定好自己的時區,最好根據所在地點從新設置時區,本例以上海為例

[root@c64-ntp-1 ~]#/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime    #這樣我們就將時區設置成上海了
[root@c64-ntp-1 ~]# date
Sat Nov  2 23:17:36 CST 2013     #可以看到我們的時區已經設置過來了

接下來就要向互聯網上的NTP服務器進行時間同步了。這裡你如果沒有NTP服務器的地址,你可以到http://www.pool.ntp.org(NTP官網)去找離自己城市最近的NTP服務器。由於我用的是上海的地址,所以這裡我將離上海最近的3個NTP服務器貼出來。

server 1.cn.pool.ntp.org
server 3.asia.pool.ntp.org
server 0.asia.pool.ntp.org

同步本機時間的命令是

[root@c64-ntp-1 ~]# /usr/sbin/ntpdate 1.cn.pool.ntp.org
2 Nov 23:05:34 ntpdate[11560]: adjust timeserver 218.75.4.130 offset -0.114499 sec
[root@c64-ntp-1 ~]# /usr/sbin/ntpdate 1.cn.pool.ntp.org   #為了減少時延,我們最好執行兩遍
2 Nov 23:05:41 ntpdate[11561]: adjust timeserver 218.75.4.130 offset -0.111105 sec

3、配置NTP服務器

其實,此時我們用/usr/sbin/ntpd start 已經可以向客戶端提供時間更新服務了。但是,這樣是滿足不了企業安全性需求的。下面將為大家講解ntp的主配置文件設定。

1)解決NTP服務器校准時間時的傳送延遲

使用driftfile參數設置: driftfile 文件名

用途:將與上級時間服務器聯系時所花費的時間,記錄在driftfile參數後面指定的文件內

注意:driftfile後面必須接完整的文件路徑,不能是鏈接文件,並且必須要有ntpd守護進程可以寫入的權限。

對應默認配置項:

1 driftfile /var/lib/ntp/drift

2)權限的控制主要靠restrict這個參數

要的語法為:restrict IP mask 掩碼 參數

IP規定了允許或不允許訪問的地址(此處若為default,即為0.0.0.0所有ip),配合掩碼可以對某一網段進行限制。

參數包括:

ignore:關閉所有NTP服務

nomodify:客戶端不能修改服務端的時間,但可以作為客戶端的校正服務器

noquery:不提供時間查詢,即用戶端不能使用ntpq,ntpc等命令來查詢ntp服務器

nopeer:不與同一層的其他服務器進行時間同步

kod:kod技術可以阻止“kiss of death”包(一種DOS攻擊)對服務器的破壞

notrap:不提供trap遠端事件登陸的功能

notrust:客戶端除非通過認證,否則指定的網段為不信任網段 #ntp4.2之後的版本,已經默認沒有這個參數,如果你添加了,會報錯的。

對應默認配置項:

restrict default kod nomodify notrap nopeer noquery  #默認對所有client拒絕所有的操作
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1   #允許本機地址的一切操作
restrict -6 ::1

3)用server這個參數設定上級時間服務器

語法為: server IP地址或域名 [prefer]

IP地址或域名即為該NTP服務器指定的上級NTP服務器。當指定多個NTP服務器時,使用prefer參數的服務器優先級最高,如果都沒有使用prefer參數,那麼服務器的優先級則按從上到下的順序依次由高到低。在指定上層服務器後,至少15min才會與上層NTP服務器進行時間校對。

對應默認配置項:

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

下面我們要對配置文件進行精簡和更改,更改之後的配置文件如下:

[root@c64-server-1 ~]# cat /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery notrust #默認對所有client拒絕所有的操作
restrict 127.0.0.1   #允許本機地址的一切操作
restrict 192.168.1.0 mask 255.255.255.0 nomodify  #允許局域網內所有client連接到這台服務器同步時間.但是拒絕讓他們修改服務器上的時間
server 1.cn.pool.ntp.org  perfer   #指定該上級NTP服務器為最優先
server 3.asia.pool.ntp.org         #這個上級NTP服務器是在官網找到離上海最近的NTP服務器
server 0.asia.pool.ntp.org         #這裡我們也可以用上海交大之類提供的公益性NTP服務器
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

配置完成之後,我們就可以啟動服務

  [root@c64-ntp-1 ~]# /etc/init.d/ntpd start

Starting ntpd:                                             [  OK  ]

啟動完成後,我們通過查看端口和進程來看服務是否真的起來了

[root@c64-ntp-1 ~]# netstat -lntup|grep ntp
udp        0      0 192.168.1.113:123           0.0.0.0:*                               11992/ntpd  
udp        0      0 127.0.0.1:123               0.0.0.0:*                               11992/ntpd  
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               11992/ntpd  
udp        0      0 fe80::20c:29ff:fe06:9c22:123 :::*                                    11992/ntpd  
udp        0      0 ::1:123                     :::*                                    11992/ntpd  
udp        0      0 :::123                      :::*                                    11992/ntpd  
[root@c64-ntp-1 ~]# ps -ef |grep ntp|grep -v grep
ntp      11992     1  0 02:17 ?        00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g

加入開機啟動項

[root@c64-ntp-1 ~]# echo '#ntp server boot configuration by sunsky in 20131020' >>/etc/rc.local
[root@c64-ntp-1 ~]# echo '/etc/init.d/ntpd start start' >>/etc/rc.local
[root@c64-ntp-1 ~]# tail -2 /etc/rc.local  #檢查配置結果
#ntp server boot configuration by sunsky in 20131020
/etc/init.d/ntpdstart

四、負載均衡和高可用配置

為了保證實際生產環境中業務的可持續運作,一台NTP服務器有時間是不能滿足需求了,因此這裡我們需要做負載均衡和高可用,即平時分擔兩台NTP服務器的查詢負載,即時一台NTP服務器掛掉,另外一台服務器還能照常提供時間同步服務。

由於上面我們已經配置出一台NTP服務器了,所以說這裡我們只需要按照上面的部署方法,再部署一台即可。

五、客戶端配置

1、測試時間同步

現在我們在客戶端進行時間同步的測試,同時要注意將系統時間和硬件時間進行同步,同步命令可以用hwclock systohc 或者hwclock –w。

[root@c64-client /]# /usr/sbin/ntpdate 192.168.1.111&&hwclock -w
3 Nov 03:50:34 ntpdate[19587]: adjust timeserver 192.168.1.111 offset -0.046270 sec
[root@c64-client /]# /usr/sbin/ntpdate 192.168.1.112&&hwclock -w
3 Nov 03:50:48 ntpdate[19589]: adjust timeserver 192.168.1.112 offset -0.039505 sec

2、添加定時任務

因為我們不可能一直手動去同步時間,因此我們需要將同步時間命令添加到定時任務中去。由於我們啟用了2台時間服務器,所以在客戶端進行更新時間的定時任務設置時,我們就采用2台服務器每5分鐘輪流更新的方式。

[root@c64-client ~]# echo '*/5 * * * * /usr/sbin/ntpdate 192.168.1.111&&hwclock -w >/dev/null 2>&1'>>/var/spool/cron/root
[root@c64-client ~]# echo '*/10 * * * * /usr/sbin/ntpdate 192.168.1.112&&hwclock -w >/dev/null 2>&1'>>/var/spool/cron/root

添加之後,別忘了用下面的命令查看結果哦。

[root@c64-client /]# crontab -l
*/5* * * * /usr/sbin/ntpdate192.168.1.111&&hwclock -w >/dev/null2>&1
*/10* * * * /usr/sbin/ntpdate192.168.1.112&&hwclock -w >/dev/null2>&1

確認無誤之後,我們的部署就OK了!

到這裡為止,我們的負載均衡和高可用的NTP服務器已經部署完成了。其中還有很多後期維護和故障的擺錯,我將放到下一篇博文來講解。因此,在本篇只要大家能按照這個部署下來,就已經很不錯了。NTP服務器部署的過程很簡單,它復雜就復雜在世面上可供大家參考的資料少,有些參數的效果也不是太好。一旦出錯,就讓人很郁悶頭疼了。所以,關於NTP的一些細節概念一定要把握好。

本文出自 “sunsky” 博客,請務必保留此出處http://sunsky.blog.51cto.com/4824967/1319520

Copyright © Linux教程網 All Rights Reserved