LAMP架構下的負載均衡

由於目前現有網絡的各個核心部分隨着業務量的提高,訪問量和數據流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的服務器設備根本無法承擔。在此情況下,我們就必須對服務器做負載均衡設置。本文正是基於LAMP下的對discuz論壇負載均衡的實現。在此所有軟件均是rpm包安裝的。

實驗環境

首先關閉SELinux。本文網絡拓撲如下:

在192.168.0.72主機上提供了上述服務,並安裝Discuz論壇。192.168.0.22主機上則通過72主機上共享的數據同樣能夠管理Discuz。由於72主機負載較大所以在22主機上配置DNS服務。具體的配置過程如下。

實驗步驟

1、首先配置192.168.0.72主機

LAMP的安裝在此不再贅述,下面直接介紹如何安裝Discuz。

安裝Discuz

  1. #mkdir -pv /web/vhosts/discuz    
  2. #unzip Discuz_7.2-FULL_SC_GBK.zip -d /web/vhosts/discuz 
  3. #ls /web/vhosts/discuz  
  4. readme  upload  utilities //Discuz的網頁文件存放在upload目錄  
  5.  
  6. 編輯httpd配置文件創建虛擬主機    
  7. 啓用NameVirtualHost *:80 
  8.  vim  /etc/httpd/conf/httpd.conf   
  9. <VirtualHost *:80>    
  10. ServerName discuz.mgedu.com         
  11. DocumentRoot /web/vhosts/discuz    
  12.  ErrorLog /web/vhosts/log/error_log    
  13. CustomLog /web/vhosts/log/access_log  combined     
  14. <Directory  "/web/vhosts/discuz" >      
  15. Options  none       
  16. AllowOverride none     
  17. </Directory>   
  18. </VirtualHost> 
  19. #service httpd restart  


此時直接訪問http://192.168.0.72/upload會出現Discuz的提示頁面。如下圖:


根據提示編輯/etc/php.ini文件,設置short_open_tag=On。刷新頁面,此時便會跳轉到下一個安裝頁面。如下圖:

提示爲目錄或文件的權限設置不正確。這是因爲Discuz的這些文件不能被Apache用戶讀寫,所以只需讓Apache對這些目錄和文件有相應的權限即可。在此使用setfacl命令。如:
setfacl -m u:apache:rw ./config.inc.php  
setfacl -m u:apache:rwx ./attachments   //這是個目錄所有一定要有執行權限
其他目錄執行相同的操作。刷新頁面,一切正常。

根據安裝提示,完成安裝後便會顯示如下界面。如圖:

 Discuz已安裝成功。

2、配置192.168.0.22主機

(1)配置DNS

  1. #rpm -e bind   
  2. #yum -y install bind97 bind97-libs bind97-utils  
  3. #vim /etc/named.conf        //編輯DNS的配置文件  
  4. options{  
  5.  directory  "/var/named";  
  6. };  
  7. zone "magedu.com" IN {  
  8.    type master;  
  9.   file "magedu.com.zone";  
  10. };  
  11. zone "168.192.in-addr.arpa" IN {  
  12.   type master;  
  13.   file "168.192.zone";  
  14. }; 

其實配置文件中還有兩個本地域和一個根域,在此不再做詳解。下面開始編寫所需域文件。

  1. #cd /var/named  
  2. #vim magedu.com.zone  
  3. $TTL 600  
  4. $ORIGIN magedu.com.  
  5. @   IN    SOA    ns.magedu.com. admin.magedu.com.(  
  6.                      2012061401  
  7.                      30M  
  8.                      10M  
  9.                      3D  
  10.                      1D)  
  11.         IN    NS   ns  
  12. ns      IN    A   192.168.0.22  
  13. discuz  IN    A   192.168.0.22  
  14. discuz  IN    A   192.168.0.72 

編輯反向域。

  1. #vim 168.192.zone  
  2. $TTL 600  
  3. @   IN    SOA    ns.magedu.com.   admin.magedu.com.(  
  4.                      2012061401  
  5.                      30M  
  6.                      10M  
  7.                      3D  
  8.                      1D)  
  9.      IN    NS   ns.magedu.com.  
  10. ns.magedu.com   IN    A   192.168.0.22  
  11. 22.0   IN    PTR discuz.magedu.com.  
  12. 72.0   IN    PTR discuz.magedu.com.  


文件編輯完成後,執行如下命令:
#chown :named magedu.com.zone
#chmod +x magedu.com.zone
#chown :named 168.192.zone
#chmod +x 168.192.zone

檢查配置文件和域。如圖:

 測試解析結果,查看DNS是否實現了輪詢。


(2)安裝Apache

  1. #yum -y install httpd    
  2. #service httpd start 

(3)安裝Mysql

  1. yum -y install mysql mysql-server  
  2. service mysqld start 

安裝完成後,使命mysql命令對數據進行初始化。然後對root用戶設置密碼。

  1. use mysql      //使用mysql數據庫   
  2. set password for root@'localhost'=password('redhat')  
  3.              //爲root用戶設置密碼爲redhat    

(4)安裝php

  1. yum -y install php53 php53-mbstring php53-mysql  
  2. service httpd restart //重啓web服務 


安裝php後,要整合Apache和Php。

  1. #vim /etc/httpd/conf/httpd.conf   //編輯web的配置文件  
  2. DirectoryIndex index.php index.html index.html.var   
  3. //讓web識別php文件  
  4.  
  5. 在/var/www/html目錄下添加index.php 
  6. <?php
  7. phpinfo();
  8. ?>

訪問http://192.168.0.72,此時會出現如下界面:

 此時說明Apache和Php已整合成功。

三、整合兩臺主機

1、在192.168.0.72主機上
(1)啓動nfs服務
(2)共享網頁文件 

  1. #vim /etc/exports  
  2. /web/vhosts/discuz/upload 192.168.0.22(rw,no_root_squash) 

(3)設置數據庫。允許特定主機訪問數據庫。

  1. mysql>grant all on discuz.* to discuz@'%.%.%.%' identified by 'discuz';  
  2. mysql>flush privileges;


2、在192.168.0.22主機上
(1)測試連接數據庫

  1. #vim  /var/www/html/index.php  
  2. <?php 
  3. $link=mysql_connec('192.168.0.72','discuz','discuz');     
  4. if ($link)  
  5.  echo "Success...";  
  6. else  
  7.  echo "Failure";  
  8. mysql_close();  
  9. ?> 

訪問http://192.168.0.22

測試成功。

(2)配置虛擬主機

  1. #vim /etc/httpd/conf/httpd.conf  
  2. 啓用NameServer *:80  
  3. <VirtualHost *:80> 
  4.   ServerName  discuz.magedu.com  
  5.   DocumentRoot  /web/vhosts/  
  6.   ErrorLog   /web/vhosts/log/error_log  
  7.   CustomLog  /web/vhosts/log/access_log combined  
  8.  <Directory "/web/vhosts"> 
  9.   Options none  
  10.   AllowOverride none  
  11.  </Directory> 
  12. </VirtualHost> 

(3)掛載網頁文件

  1. #mkdir -p /web/vhosts  
  2. #mount -t nfs 192.168.0.72:/web/vhosts/discuz/upload  /web/vhosts  
  3. #ls /web/vhosts  //此時網頁文件已在此目錄下 

(4)修改config.inc.php文件,指定數據庫。

  1. #cd /web/vhosts  
  2. #vim config.inc.php  
  3. $dbhost = '192.168.0.72' 
  4. define('UC_DBHOST', '192.168.0.72');  
  5. define('UC_IP', '192.168.0.72');  
  6. #vim /etc/php.ini  
  7. short_open_tag=On 

(5)訪問http://192.168.0.22

此時兩臺主機都可以訪問論壇。之後輸入域名訪問論壇,查看各自定義的日誌文件就會發現兩臺主機都有訪問論壇記錄。此時配置已完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章