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
下一篇 2015-04-26

相關推薦

  • linux中用戶、組和權限認識

    linux中用戶、組和權限認識 Linux 用戶和組的主要配置文件:/etc/passwd :用戶及其屬性信息( 名稱、UID 、主組ID 等)                  …

    Linux干貨 2017-02-23
  • pam_mysql認證ftp虛擬用戶賬號

    pam_mysql認證ftp虛擬用戶賬號: 虛擬用戶:        用戶賬號存儲于何處?        文件、MySQL、Redis、…       &nb…

    2017-06-13
  • 終端類型

        終端是什么?終端不僅僅是顯示器,還包括與之配套的鍵盤。在linux中表現為一個字符設備。Linux與用戶交互時,直接向終端設備發送數據,數據就會被發送到屏幕上,用戶通過鍵盤寫的數據,就是向這個字符設備寫數據,數據會同步顯示到顯示器上,回車后數據才會被linux執行命令。 終端類型 1串行口終端  &n…

    Linux干貨 2016-10-17
  • mysql—MHA原理與實現

    MHA 一:簡述MHA 1.1關于MHA MHA(Master HA)是一款開源的MySQL的高可用程序,它為MySQL主從復制架構提供了automating master failover 功能。MHA在監控到master節點故障時,會提升其中擁有最新數據的slave節點成為新的master節點,在此期間,MHA會通過與其它從節點獲取額外信息來避免一致性方…

    2016-11-27
  • 內核編譯安裝 (用NTFS模塊)

    內核編譯安裝 (用NTFS模塊) 1 rz 下載的 的內核最新文件 在這 https://www.kernel.org/ 2 tar xvf linux-4.12.10.tar.xz 解壓文件 內核文件一般都放在 /usr/src/ 3 cd linux-4.12.10/ 4 [root@god linux-4.12.10]#cp /boot/config-…

    2017-09-04
  • 優云Automation:實現IT服務彈性伸縮的利器

    隨著互聯網業務快速持續增長,IT資源使用量按需變化成為常態,這就要求信息部門能快速響應資源使用的變化要求,對運維提出不小挑戰。比如電商、在線教育等企業經常推出一些秒殺、搶紅包活動,在特定時間段對資源的利用處于高峰期,之后基本處于空閑。 幾年前,我們從申請采購到應用部署上線都只能人工操作,需要提前幾個月開始規劃。如今通過云平臺能很好實現資源按需動態管理,運維人…

    系統運維 2017-03-15

評論列表(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來進行高可用.

欧美性久久久久