由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,我们就必须对服务器做负载均衡设置。本文正是基于LAMP下的对discuz论坛负载均衡的实现。在此所有软件均是rpm包安装的。

实验环境

首先关闭SELinux。本文网络拓扑如下:
LAMP架构下的负载均衡_Apache
在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的提示页面。如下图:
LAMP架构下的负载均衡_discuz_02

根据提示编辑/etc/php.ini文件,设置short_open_tag=On。刷新页面,此时便会跳转到下一个安装页面。如下图:LAMP架构下的负载均衡_Apache_03

提示为目录或文件的权限设置不正确。这是因为Discuz的这些文件不能被Apache用户读写,所以只需让Apache对这些目录和文件有相应的权限即可。在此使用setfacl命令。如:
setfacl -m u:apache:rw ./config.inc.php  
setfacl -m u:apache:rwx ./p_w_uploads   //这是个目录所有一定要有执行权限
其他目录执行相同的操作。刷新页面,一切正常。

根据安装提示,完成安装后便会显示如下界面。如图:
LAMP架构下的负载均衡_discuz_04

 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

检查配置文件和域。如图:LAMP架构下的负载均衡_Apache_05

 测试解析结果,查看DNS是否实现了轮询。
LAMP架构下的负载均衡_负载均衡_06

LAMP架构下的负载均衡_Apache_07

(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,此时会出现如下界面:
LAMP架构下的负载均衡_负载均衡_08

 此时说明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.22LAMP架构下的负载均衡_discuz_09

测试成功。

(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
LAMP架构下的负载均衡_discuz_10

此时两台主机都可以访问论坛。之后输入域名访问论坛,查看各自定义的日志文件就会发现两台主机都有访问论坛记录。此时配置已完成。