RHCE系列之ntp服務器—-實踐篇

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1319520

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

簡易架構圖:

1.png

環境:

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 time server 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 time server 218.75.4.130 offset -0.111105 sec

3、配置NTP服務器

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

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

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

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

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

對應默認配置項:

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/ntpd start

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

為了保證實際生產環境中業務的可持續運作,一臺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 time server 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 time server 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/ntpdate 192.168.1.111&&hwclock -w >/dev/null 2>&1
*/10 * * * * /usr/sbin/ntpdate 192.168.1.112&&hwclock -w >/dev/null 2>&1

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


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

轉自:http://nolinux.blog.51cto.com/4824967/1319520

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2015

(0)
s19930811s19930811
上一篇 2016-08-15 12:12
下一篇 2016-08-15 12:12

相關推薦

  • 一.Liunx博客-2016年7月19日文件系統類型、分區類型

    格式說明: 操作 概念 命令 說明及舉例 一.文件系統類型、分區類型 轉換磁盤文件系統命令 convert e: /fs:ntfs su – root 切換到root用戶 linux根 /windows根 \ cd \ home:用戶root:usr:tmp:臨時文件dev:硬件設備 IDE /dev/hda…

    Linux干貨 2016-08-23
  • 編譯安裝httpd-2.2.27.tat.gz及配置常見參數

    一、編譯安裝的整體步驟  1、在官網下載源碼,并解壓 2、切換到其目錄中  3、執行./configure 4、編譯   二、編譯中及安裝后配置常見的參數及其說明 編譯中配置 1)指定安裝路徑 –prefix=/usr/local/Pacakage_name  指定安裝路徑 –sysc…

    Linux干貨 2016-08-24
  • linux發展史

    Linux 發展史 說明 此前對linux認識模糊一知半解,近期通過學習將自己對于linux的發展總結一下方便大家日后的學習。那Linux是目前一款非常火熱的開源操作系統,可是linux是什么時候出現的,又是因為什么樣的原因被開發出來的呢。以下將對linux的發展歷程進行詳細的講解。    目錄 一、Linux發展背景 二、UINIX的誕…

    Linux干貨 2016-10-14
  • free命令的介紹及參數的詳細分析

           通過對free命令的深入學習,我覺得有必要整理一個文檔,供自己和小伙伴們今后的復習使用。   free 命令的詳細剖析      參數有:-b/k/m/g    分別以bytes/kilobytes/megabyte…

    2017-07-17
  • 第八周:網絡基礎知識和shell腳本練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別; 網橋:是連接兩個局域網的基于MAC地址數據存儲轉發設備,工作于數據鏈路層 集線器:所有端口處于同一個廣播域和沖突域中,帶寬共享,工作于物理層 二層交換機:多端口網橋,一個端口一個沖突域,默認所有端口位于同一個廣播域中,可以劃分vlan,隔離廣播域,帶寬獨享 三層交換機:具有路由功…

    Linux干貨 2016-11-21
  • 筆記–8.8 shell腳本編程

    shell編程注意事項  1,指令的執行是從上而下,從左而右的分析與執行  2,指令的下達時:指令,選項與參數之間的多個空白都會被忽略掉  3,空白行會被忽略掉,并且tab鍵所推開的空白同樣視為空格鍵  4. 如果一行的內容太多,則可以使用『 \[Enter] 』來延伸至下一行  5,『 # 』可做為批注,任…

    Linux干貨 2016-08-12
欧美性久久久久