天天看點

LAMP之三:挂載NFS的Discuz論壇

一、 實驗說明

   1、通過DNS伺服器實作負載均衡

   2、為web伺服器挂載NFS網絡檔案系統,保證兩台web伺服器資料的同步

   3、實驗平台環境

       1)兩台Apache伺服器做負載均衡

       2)一台cgi伺服器挂載NFS網絡檔案系統,實作資料同步

       3)一台mysql伺服器

       4)DNS伺服器部署到一台Apache伺服器上

   4、作業系統使用

       共使用3台CentOS6.4,一台Centos6.5

       上文中使用的都是CentOS6.4,今天新加的一台Apache伺服器使用CentOS6.5

   5、IP配置設定

       将在下面的拓撲圖上直覺的标出

   6、LAM之三接本部落格中的另兩篇博文:

      《LAMP之一:apache、mysql、php的安裝及互聯互通》

      《LAMP之二:LAMP的性能測試以及安裝xcache,為php加速》

   7、關于DNS

       DNS伺服器的搭建,本部落格中有兩篇博文做了詳細介紹,這裡不再現贅述

   8、這個實驗嚴重依賴于《LAMP之一:apache、mysql、php的安裝及互聯互通》,LAMP之一中有非常詳細的服務編譯安裝過程,那裡面共準備了3台伺服器,這裡将再準備一台Apache伺服器做負載均衡,是以服務的搭建也不再贅述了,請傳回參考

二、網絡拓撲

   網絡拓撲隻做了實驗架構說明,具體的一些枝枝葉葉沒有規劃

<a href="http://s3.51cto.com/wyfs02/M02/23/1C/wKiom1MyMNPDmiYTAADPDujC574996.png" target="_blank"></a>

三、準備DNS伺服器

   1、為shuishui.com添加資源記錄,建立資源記錄後,别忘了執行DNS伺服器的六大步驟

<a href="http://s3.51cto.com/wyfs02/M01/23/1C/wKiom1MyM6CwEqpDAACJd8oDSHM632.png" target="_blank"></a>

   2、做DNS解釋輪詢

在以上配置中,www.shuishui.com對應了2個IP位址,此時具體選擇哪一條A記錄,是由rrset-order語句決定的。

   這是在 /etc/named.conf 檔案中 options 語句有關rrset-order配置的一個例子:

       rrset-order {

           class IN type A name "www.shuishui.com" order cyclic;

       };

   這個設定會使處于IN類中的A記錄的響應以随機順序傳回,IN 類以"mail.example.com"為字尾。其他的記錄以循環記錄被傳回。

   rrset-order 支援三個參數:fixed, random, cyclic 。

         fixed     将多個A記錄按配置檔案的順序固定給出

         random     随機給出

         cyclic     循環給出

<a href="http://s3.51cto.com/wyfs02/M02/23/1C/wKiom1MyNTCTKx1IAAA1KGJSDVs853.png" target="_blank"></a>

3、DNS解析測試

   1)在linux主機上測試

<a href="http://s3.51cto.com/wyfs02/M01/23/1D/wKioL1MyNr6i0-CvAAByZNB_O0U780.png" target="_blank"></a>

   2)在windows主機上測試

<a href="http://s3.51cto.com/wyfs02/M02/23/22/wKiom1MyjH6inYoOAAAfV141hGk815.png" target="_blank"></a>

四、新增加的Apache伺服器的設定(172.16.251.194)

   1、啟用httpd的相關子產品

    在Apache httpd 2.4以後已經專門有一個子產品針對FastCGI的實作,此子產品為mod_proxy_fcgi.so,它其實是作為mod_proxy.so子產品的擴充,是以,這兩個子產品都要加載

   LoadModule proxy_module modules/mod_proxy.so

   LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

1

<code>vim </code><code>/etc/httpd24/httpd</code><code>.conf</code>

<a href="http://s3.51cto.com/wyfs02/M01/23/1C/wKiom1MyOQjBPX_KAABTiXUZt5E088.png" target="_blank"></a>

2、配置Apache伺服器支援使用fcgi

   這裡就不做虛拟主機了,直接就用中心主機做了,并且更改一下它的DocumentRoot

<a href="http://s3.51cto.com/wyfs02/M00/23/1C/wKiom1MyOs_BsRtPAABHDxAVDGE796.png" target="_blank"></a>

ProxyPassMatch:把以.php結尾的檔案請求發送到php-fpm程序,php-fpm至少需要知道運作的目錄和URI,是以這裡直接在fcgi://172.16.150.150:9000後指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。

   3、編輯apache配置檔案httpd

<code># vim /etc/httpd24/httpd.conf</code>

1)添加如下二行

          AddType application/x-httpd-php  .php

          AddType application/x-httpd-php-source  .phps

    2)定位至DirectoryIndex index.html

          修改為:

          DirectoryIndex  index.php  index.html

   再補充下:Apache httpd 2.4以前的版本中,要麼把PHP作為Apache的子產品運作,要麼添加一個第三方子產品支援PHP-FPM實作。

<a href="http://s3.51cto.com/wyfs02/M01/23/1D/wKioL1MyPRvizYExAAApcvtdBsE067.png" target="_blank"></a>

五、NFS網絡檔案系統的配置

   1、服務端的配置(php,cgi伺服器)

   1)NFS簡介

NFS 是Network File System的縮寫,即網絡檔案系統。一種使用于分散式檔案系統的協定,由Sun公司開發,于1984年向外公布。功能是通過網絡讓不同的機器、不同的作業系統能夠彼此分享個别的資料,讓應用程式在用戶端通過網絡通路位于伺服器磁盤中的資料,是在類Unix系統間實作磁盤檔案共享的一種方法。

  NFS 的基本原則是“容許不同的用戶端及服務端通過一組RPC分享相同的檔案系統”,它是獨立于作業系統,容許不同硬體及作業系統的系統共同進行檔案的分享。

  NFS在檔案傳送或資訊傳送過程中依賴于RPC協定。RPC,遠端過程調用 (Remote Procedure Call) 是能使用戶端執行其他系統中程式的一種機制。NFS本身是沒有提供資訊傳輸的協定和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協定。而這些傳輸協定用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程式。或者說NFS也是一個RPC SERVER。是以隻要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實作PROGRAM PORT的對應。可以這麼了解RPC和NFS的關系:NFS是一個檔案系統,而RPC是負責負責資訊的傳輸。

   2)安裝

   NFS的安裝很簡單,隻需要安裝nfs-utils就可以了,因為NFS本身是核心子產品,可以使用lsmod檢視NFS是否已經存在這個子產品,如果實在沒有,那就yum一個吧!

      三個關鍵程序

       (1)mountd:挂載守護程序,負責用戶端來源認證的程序,伺服器通過端通常映射為本地檔案系統,就像使用本地檔案系統一樣友善

       (2)nfsd:檔案讀寫

       (3)idmapd:id映射程序

   3)配置伺服器端

   NFS伺服器的配置比較簡單,隻需要在相應的配置檔案中進行設定,然後啟動NFS伺服器即可。

   使用service nfs start 啟動nfs服務

   使用exportfs -a 導出所有檔案系統

<code>vim </code><code>/etc/exports</code>

<a href="http://s3.51cto.com/wyfs02/M00/23/1D/wKiom1MyQtajrXU6AAAiOUHWM1g003.png" target="_blank"></a>

檔案系統導出屬性

       ①、rw,可讀可寫

       ②、async,異步

       ③、sync,同步

       ④、root_squash,壓縮root使用者,基于imapd,将root通過網絡通路時轉換為nfsnobody使用者

       ⑤、no_root_squash,不壓縮root使用者

       ⑥、all_squash,壓縮所有使用者    

       ⑦、anonuid,anongid,指定匿名使用者映射為的UID和GID

   2、用戶端配置(兩台Apache伺服器)

   1)直接挂載

      客戶機中安裝伺服器一樣,安裝nfs-utils,隻是不需要配置/etc/exports檔案,然後進行挂載就可以了(事先建立好檔案夾哦)

<a href="http://s3.51cto.com/wyfs02/M02/23/1F/wKioL1MyR4LAXzoGAABLQ1T5rsw376.png" target="_blank"></a>

2)設定開機自己挂載

<a href="http://s3.51cto.com/wyfs02/M00/23/74/wKiom1M2sSags6LpAABAG_A4uZo658.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/23/1F/wKioL1MySYLQyA8VAACyL05dGU4311.png" target="_blank"></a>

3)測試Apache伺服器是否工作正常

       在nfs伺服器的/www/shuishui.com/目錄中放入index.php測試頁

       (1)Apache伺服器172.16.251.93工作正常

<a href="http://s3.51cto.com/wyfs02/M01/23/1F/wKioL1MyS3nB5oysAAB7-hwxA7w514.png" target="_blank"></a>

 (2)Apache伺服器172.16.251.194工作正常

<a href="http://s3.51cto.com/wyfs02/M00/23/1E/wKiom1MyS-vjV58eAAB-sMbWY7E258.png" target="_blank"></a>

 至此,NFS網絡檔案系統配置完成,最後一步則是安裝論壇,并測試其是否能夠達到資料同步

六、測試Discuz論壇的資料同步

   1、安裝論壇

   首先在php伺服器上下載下傳Discuz_X2.5_SC_GBK.zip,解壓會得到一個upload目錄,因為在安裝Discuz的過程中涉及到權限的問題,是以這裡為了檔案就把權限設定成了777。

<a href="http://s3.51cto.com/wyfs02/M00/23/1E/wKiom1MyTlWilMNxAAA037qWw_A687.png" target="_blank"></a>

1)在Apache伺服器172.16.251.93上去安裝Discuz論壇,當然在另一台上去安裝也可以

<a href="http://s3.51cto.com/wyfs02/M01/23/1E/wKiom1MyTt7gWa5rAAC96BafGTc849.png" target="_blank"></a>

   2)論壇安裝第二步

<a href="http://s3.51cto.com/wyfs02/M00/23/1F/wKioL1MyTxLSWcEeAACS7Xzl2Ao640.png" target="_blank"></a>

3)論壇安裝第三步

<a href="http://s3.51cto.com/wyfs02/M01/23/1F/wKioL1MyTzORH_7TAABnLt0swYs524.png" target="_blank"></a>

論壇安裝第三步要求關聯資料庫,是以我們應該提前去mysql伺服器172.16.251.104上授權一個使用者,這裡授權的使用者名和密碼都叫admin,資料庫名叫ultrax,管理者賬号和密碼也都設定為admin,為了友善,通通都用admin

   下圖是在mysql伺服器,172.16.251.104上為admin使用者進行授權

接下來的第4步就是安裝過程,論壇就安裝成功了,

2、測試兩台Apache伺服器使用NFS網絡檔案系統能夠實作資料實時同步

   1)、在172.16.251.194上先發個貼子

<a href="http://s3.51cto.com/wyfs02/M00/23/1F/wKioL1MyUayhKA3sAAEjoECrI6w123.png" target="_blank"></a>

 2)、檢視别一台Apache伺服器172.16.251.93上是否有這個文章

<a href="http://s3.51cto.com/wyfs02/M01/23/1E/wKiom1MyUi6ATDW0AAD6Xzq9aMg534.png" target="_blank"></a>

恩!确實,第二台伺服器上也有這個文章,這就證明了兩台Apache伺服器是在共用NFS網絡檔案系統,實驗目的已然達到

   3)、用域名通路看看是否有此貼

<a href="http://s3.51cto.com/wyfs02/M00/23/1E/wKiom1MyUtvT9E6qAAD18lzgD1Y402.png" target="_blank"></a>

   不錯,使用域名也可以正常通路,這兩台Apache伺服器是基于DNS輪詢做負載均衡的,這裡就不再測試其效果了

LAMP之三:挂載NFS的Discuz論壇

本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1384418,如需轉載請自行聯系原作者