LAMP平臺基于NFS實現web服務器負載均衡

前言

隨著訪問量的逐漸增大,一臺web服務器可能已經無法滿足需求,這就需要增加web服務器的數量了,于是問題就來了:如何保證兩臺服務器數據同步呢?本文將講解如何基于NFS實現web服務器的負載均衡及數據同步。

NFS服務介紹

NFS(Network File System)網絡文件系統,允許一個系統通過網絡共享目錄和文件,通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。NFS本身沒有提供數據傳輸的功能,必須借助于遠程過程調用(RPC)協議來實現數據的傳輸。

配置文件

NFS在CentOS6上的配置文件及服務提供程序

程序包:nfs-utils
腳本:/etc/rc.d/init.d/nfs        
      /etc/rc.d/init.d/nfslock    
      /etc/rc.d/init.d/rpcgssd
      /etc/rc.d/init.d/rpcidmapd
      /etc/rc.d/init.d/rpcsvcgssd
配置文件:/etc/exports  
          /etc/sysconfig/nfs     #提供額外功能

配置文件詳解

/etc/exports文件格式及選項

文件系統 	客戶端(選項) 客戶端(選項)

客戶端:IP、FQDN或DOMAIN、NETWORK
選項:
secure:缺省選項,它使用了1024以下的TCP/IP端口實現NFS的連接。指定insecure可以禁用這個選項
rw:這個選項允許 NFS 客戶機進行讀/寫訪問。缺省選項是只讀(ro)。
async:可改進性能,但是如果沒有完全關閉NFS守護進程就重新啟動了NFS服務器,也可能會造成數
據丟失,缺省為為sync
no_wdelay:關閉寫延時,如果設置了async,那么NFS就會忽略這個選項
nohide:如果將一個目錄掛載到另外一個目錄之上,那么原來的目錄通常就被隱藏起來或看起來像
空的一樣,要禁用這種行為,需啟用 hide 選項
no_subtree_check:關閉子樹檢查,子樹檢查會執行一些不想忽略的安全性檢查,缺省選項是啟用
子樹檢查
no_auth_nlm:可作為insecure_locks指定,它告訴 NFS 守護進程不要對加鎖請求進行認證。如果
關心安全性問題,就要避免使用這個選項,缺省選項是 auth_nlm 或 secure_locks
mp (mountpoint=path): 通過顯式地聲明這個選項,NFS 要求掛載所導出的目錄
fsid=num:通常都在 NFS 故障恢復的情況中使用。如果希望實現 NFS 的故障恢復,請參考 NFS 文檔。
用戶映射的選項:
root_squash:不允許root用戶訪問掛載上來的 NFS 卷
no_root_squash:允許 root 用戶訪問掛載上來的 NFS 卷
all_squash:限制所有的 UID 和 GID,只使用匿名用戶,缺省設置是 no_all_squash
anonuid 和 anongid:將匿名 UID 和 GID 修改成特定用戶和組帳號

相關命令

查看NFS服務器端共享的文件系統:
showmount -e NFSSERVER_IP
掛載NFS文件系統:
mount -t nfs SERVER:/path/to/sharedfs  /path/to/mount_point
exportfs:維護exports文件導出的文件系統表的專用工具
export -ar: 重新導出所有的文件系統
export -au: 關閉導出的所有文件系統
export -u FS: 關閉指定的導出的文件系統
開機自動掛載nfs
vim /etc/fstab
SERVER:/PATH/TO/EXPORTED_FS /mount_point 	nfs 	defaults,_netdev 	0 0

NFS實現web服務器負載均衡

工作原理

nfs實現web服務器負載均衡原理.jpg

配置過程

案例要求:

DNS服務器:172.168.10.10(CentOS6.6)

web服務器1:172.16.10.100(CentOS6.6 ) 

web服務器2:172.16.10.212(CentOS6.6 ) 

php服務器:172.16.10.110(CentOS6.6) 

NFS服務器:172.16.10.110(CentOS6.6)

數據庫服務器:172.16.10.211(CentOS6.6) MariaDB

要求兩臺web服務器上提供同一個站點(blog.scholar.com  wordpress站點),站點目錄位于NFS服務器為/web/blog,兩臺web服務器數據需保持統一

請確保各服務器,服務軟件已安裝,我這里已經安裝好了(其實是借用以前的),編譯安裝的神馬的詳見博客

DNS服務器配置

修改正反向區域文件

正向解析

2.jpg

反向解析

2.jpg

檢查語法,啟動服務

3.jpg

NFS服務器配置

創建共享目錄,并設置權限

4.jpg

編輯配置文件,設置共享目錄及客戶端

[root@scholar ~]# vim /etc/exports 

/web/blog       172.16.10.100(rw,sync) 172.16.10.212(rw,async)

站點文件準備

[root@scholar ~]# unzip wordpress-3.2.1-zh_CN.zip
[root@scholar ~]# cd wordpress
[root@scholar wordpress]# mv * /web/blog
[root@scholar wordpress]# cd /web/blog
[root@scholar blog]# cp wp-config-sample.php wp-config.php 
[root@scholar blog]# vim wp-config.php 
 
/** WordPress 數據庫的名稱 */
define('DB_NAME', 'wpdb');
 
/** MySQL 數據庫用戶名 */
define('DB_USER', 'wpuser');
 
/** MySQL 數據庫密碼 */
define('DB_PASSWORD', 'wppass');
 
/** MySQL 主機 */
define('DB_HOST', '172.16.10.211');

啟動服務,查看監聽端口

5.jpg

數據庫服務器配置

為wordpress程序提供數據庫

6.jpg

web服務器配置

啟用相關模塊

[root@scholar ~]# vim /etc/httpd24/httpd.conf
 
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

啟用虛擬主機

#DocumentRoot "/usr/local/apache/htdocs"   #關閉中心主機
 
Include /etc/httpd24/extra/httpd-vhosts.conf #啟用虛擬主機

使之支持php

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
 
AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps

配置虛擬主機

[root@scholar ~]# vim /etc/httpd24/extra/httpd-vhosts.conf 
 
<VirtualHost *:80>
    DocumentRoot "/web/blog"
    ServerName blog.scholar.com
    ProxyRequests Off            #關閉正向代理
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.10.110:9000/web/blog/$1 #代理至php服務器
<Directory "/web/blog">
        Options none
        AllowOverride none
        Require all granted
</Directory>
</VirtualHost>

掛載共享目錄

7.jpg

#可設置開機自動掛載
[root@scholar ~]# vim /etc/fstab 

172.16.10.110:/web/blog  /web/blog               nfs     defaults,_netdev 0 0

檢查語法,啟動服務

8.jpg

測試站點是否訪問正常

9.jpg

可以訪問的,接下來我們看一下,數據是否可以同步

指定某一臺服務器IP訪問

10.jpg

我們在這臺服務器登陸,發表一篇博文

11.jpg

現在我們通過另外一臺服務器看一下,是否可以看到剛剛發表的博文

12.jpg

OK,可以看到,數據同步的目的也實現了

The end

“世界那么大,我想去看看…”希望有朝一日我也可以如此灑脫…好了,基于NFS實現web服務器的負載均衡就說到這里了,遇到什么問題可留言,我要去感悟人生去了。以上僅為個人學習整理,如有錯漏,大神勿噴~~

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

(0)
書生書生
上一篇 2015-04-22 19:53
下一篇 2015-04-26 23:26

相關推薦

  • 學習伊始宣言

    學習后的狀態 以人事相宜為追求,優化職業資質 以勝任愉快為目標,保持職業體能 以創造績效為主導,開發職業意識 以適應市場為基點,修養職業道德 學習宣言 如果不踏出第一步就永遠也不可能到達目的地,讓我們從此刻出發

    Linux干貨 2016-11-28
  • 搭建yum倉庫

    搭建yum倉庫 背景: 在學習完如何搭建yum倉庫后,覺得搭建yum倉庫很有意義,將自己學習中的感悟和理解記錄下來,以備日后復習。 介紹: yum:全稱是Yellow dog Updater, Modified。它是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可…

    2017-08-05
  • Linux基礎知識之IO重定向

    該博文以CentOS6.8_x86_64系統為基礎,Xshell 5遠程連接CentOS系統,以root身份登錄系統。  什么是I/O重定向?       所謂I/O重定向簡單來說就是一個過程,這個過程捕捉一個文件,或者命令,程序,腳本,甚至腳本中的代碼塊(codeblock)的輸出,然后把捕捉到的輸出,作為輸入發送給…

    Linux干貨 2016-07-26
  • 第一周課程練習

    馬哥教育網絡班22期+第一周課程練習 1、描述計算機的組成及其功能   CPU(運算器和控制器),存儲器(內存和外存),輸入/輸出設備。     (1)運算器:對數據進行加工處理(包括算術運算與邏輯運算);     (2)控制器:負責從存儲器取出一條指令,并指出下一條指…

    Linux干貨 2016-08-15
  • 程序包編譯安裝

    一、幾個概念     1、開放源碼         程序代碼,人類可能讀懂的程序語言,但是計算機不能識別和執行;     2、編譯程序      &n…

    Linux干貨 2015-05-11
  • 馬哥linux0726課程內容

    課堂內容筆記   使用幾個符號可以使用原始命令 \,’’,絕對路徑運行 這三種方法都可以使用到原始命令,不使用別名   別名-內部命令-緩存-外部命令 使用命令的優先級   man幫助具體用法 makewhatis老版本安裝whatis mandb新版本安裝whatis man的具體路徑在/usr/share/man whati…

    Linux干貨 2016-08-04

評論列表(6條)

  • stanley
    stanley 2015-04-22 21:31

    以前有linux工作經歷?初學者知道wp的不多

    • 書生
      書生 2015-04-23 11:20

      @stanley木有啊 以前開過php課 見過wp 不過沒玩過

    • stanley
      stanley 2015-04-23 13:49

      @書生cool

  • venus
    venus 2015-04-27 15:30

    don’t forget session status.

    • 書生
      書生 2015-04-27 18:34

      @venuswhat?

    • aaa103439
      aaa103439 2015-04-27 22:22

      @書生session可以用redis來保持,redis可用keepalived來進行高可用.

欧美性久久久久