操作系统:redhat5.8

两台web实现负载均衡,通过NFS把网页文件共享出来,把mysql独立出来
实验环境准备:三台服务器
server1:172.16.0.22(Web+PHP+DNS)---->/www
server2:172.16.0.23(Mysql)--->/data
server3:172.16.0.24(Web+PHP+NFS)--->/www/users/test.com

实验拓扑图如下:
 


最终实现的效果:
1、当用户访问Web服务器的时候,可以通过DNS轮询功能,将请求分别转到两台Web服务器,从而降低负载
2、如果其中一台Web服务器损坏,另一台Web可以继续工作
3、所有的客户端提交动态的数据,都会被写入到独立的数据库中,从而也降低了负载
 
 
一、server1:172.16.0.22(Web+PHP+DNS)
 
 
  
  1. 一、安装DNS 
  2. yum -y install bind97 bin97-libs bind97-utils 
  3. 编辑/etc/named.conf主配置文件 
  4. options { 
  5.         directory  "/var/named"; 
  6.  
  7. }; 
  8. zone "." IN { 
  9.         type hint; 
  10.         file "named.ca"; 
  11. }; 
  12.  
  13. zone "test.com" IN { 
  14.         type master; 
  15.         file "test.com.zone"; 
  16. }; 
  17.  
  18. 新建区域文件 
  19. mkdir -p /var/named/test.com.zone 
  20.  
  21. 编辑区域文件,添加以下内容: 
  22. vim /var/named/test.com.zone 
  23. $TTL 600 
  24. @       IN SOA  ns.test.com. root.test.com.  ( 
  25.                                         2012071301      ; serial 
  26.                                         1D      ; refresh 
  27.                                         1H      ; retry 
  28.                                         1W      ; expire 
  29.                                         3H )    ; minimum 
  30.          IN     NS      ns.test.com. 
  31. ns       IN     A       172.16.0.22 
  32. www      IN     A       172.16.0.22 
  33. www      IN     A       172.16.0.24 
  34.  
  35. 修改属组:chown root.named test.com.zone 
  36.  
  37. 重启DNS 
  38. service named restart 
  39.  
  40. 验证DNS 

 
 
  
  1. 二、安装Web(这里采用编译安装) 
  2. 1、httpd-2.4.2需要较新版本的apr和apr-util,因此需要事先对其进行升级。升级方式有两种,一种是通过源码编译安装,一种是直接升级rpm包,下载好安装包以后使用“rpm -Uvh”进行升级即可。这里选择使源码编译安装。  
  3. 注意:安装这些软件包之前不要忘记安装开发环境了 
  4. yum -y groupinstall "Development Tools"  
  5. yum -y groupinstall "Development Libraries"  
  6.   
  7. 编译安装apr和apr-util  
  8. tar xf apr-1.4.6.tar.bz2   
  9. ./configure --prefix=/usr/local/apr  
  10. make && make install  
  11.   
  12. tar xf apr-util-1.4.1.tar.bz2   
  13. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr   
  14. make && make install  
  15.   
  16. 注意:httpd-2.4.2编译过程也要依赖于pcre-devel 和openssl-devel软件包,我们yum安装一下  
  17. yum install pcre-devel openssl-devel  
  18.   
  19.   
  20. 2、编译安装httpd-2.4.2.tar.bz2  
  21. tar xf httpd-2.4.2.tar.bz2   
  22. cd httpd-2.4.2   
  23. ./configure --prefix=/usr/local/apache  --enable-so  --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util   
  24. make && make install  
  25.   
  26. 为了节省时间,就没有加那么多的参数了 
  27. 了解更多的编译参数请./configure --help进行查看 

 

 
  
  1. 三、编译安装php 
  2. tar xf php-5.4.4.tar.bz2  
  3. cd php-5.4.4  
  4. ./configure --prefix=/usr/local/php --with-mysql=/usr --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  
  5. make && make install  
  6.   
  7. 为php提供配置文件  
  8. cp php.ini-production /etc/php.ini  
  9.   
  10. 编辑apache配置文件,让apache支持php  
  11. vim /etc/httpd/httpd.conf  
  12. 检查libphp5.so模块是否添加,并且开启  
  13.   
  14. 找到<IfModule mime_module>模块,在里面添加  
  15. AddType application/x-httpd-php  .php  
  16.   
  17. 定位至:DirectoryIndex index.html   
  18. 修改为:DirectoryIndex  index.php  index.html  
  19.  
  20. 添加一个虚拟主机编辑httpd.conf配置文件需要修改以下内容  
  21. vim /usr/local/apache/conf/httpd.conf 
  22. LoadModule log_config_module modules/mod_log_config.so  
  23. Include /etc/httpd/extra/httpd-vhosts.conf  
  24. 把前面的#号去掉  
  25. #DocumentRoot "/usr/local/apache/htdocs" /在前面加个#号,注释掉/  
  26. 保存退出 
  27. vim /usr/local/apache/conf/extra/httpd-vhosts.conf 
  28. <VirtualHost *:80> 
  29. ServerName www.test.com 
  30. DocumentRoot /www 
  31. <Directory "/www"> 
  32.          Options indexes 
  33.          AllowOverride none 
  34.          Require all granted 
  35.         </Directory> 
  36. </VirtualHost> 
  37.      
  38. 重启httpd命令:/usr/local/apache/bin/apachectl restart  
  39. 写一个php测试脚本:echo "<?php phpinfo(); ?>>/www/index.php  
  40. 测试结果http://172.16.0.22/index.php 
  41.  
  42. 下面的NFS配置好以后用以下命令进行挂载:
  43. mount -t nfs 172.16.0.24:/www/users/test.com /www

 

二、server2:172.16.0.23(Mysql)

 
  
  1. 安装mysql 
  2. 安装mysql-5.5.24(这里是绿色版直接解压使用) 
  3. 新建用户以安全方式运行进程:  
  4. groupadd -r mysql  
  5. useradd  -g mysql -r -s /sbin/nologin mysql 
  6. chown mysql:mysql /data  
  7.   
  8. 解压mysql并创建软链接  
  9. tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local   
  10. cd /usr/local  
  11. ln -sv mysql-5.5.24-linux2.6-i686  mysql  
  12.   
  13. 修改属主和组并初始化mysql-5.5.24  
  14. chown -R mysql:mysql  .  
  15. /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data 
  16. chown -R root .  
  17.   
  18. 为mysql提供主配置文件:  
  19. cd /usr/local/mysql  
  20. cp support-files/my-large.cnf  /etc/my.cnf  
  21.   
  22. 编辑my.cnf文件 
  23. vim /etc/my.cnf 
  24. 并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:  
  25. thread_concurrency = 2  
  26. datadir = /data 
  27.   
  28. 为mysql提供sysv服务脚本:  
  29. cd /usr/local/mysql  
  30. cp support-files/mysql.server  /etc/rc.d/init.d/mysqld  
  31.   
  32. 添加至服务列表:  
  33. chkconfig --add mysqld  
  34. chkconfig mysqld on  
  35. 最后就可以启动服务测试使用了。 
  36.   
  37. 使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用  
  38. vim /etc/profile      /添加PATH搜索路径/  PATH=$PATH:/usr/local/mysql/bin  
  39. vim /etc/man.config       /添加man路径/ MANPATH    /usr/local/mysql/man  
  40.   
  41. 使用mysql命令生效 
  42. export PATH=$PATH:/usr/local/mysql/bin/ 
  43.  
  44. 输出mysql的头文件至系统头文件路径/usr/include:  
  45. 这可以通过简单的创建链接实现:  
  46. ln -sv /usr/local/mysql/include  /usr/include/mysql  
  47. 输出mysql的库文件给系统库查找路径:  
  48. echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf  
  49.   
  50. 最后让系统重新载入系统库:  
  51. ldconfig  
  52.  
  53. service mysqld start  
  54. mysqladmin -uroot password 'redhat'  
  55. mysql -uroot -p   
  56. mysql> GRANT ALL ON discuz.* TO root@'%.%.%.%' IDENTIFIED BY 'redhat';   
  57. mysql> FLUSH PRIVILEGES 
 
  
 
  
 
  
  1. Web和PHP安装同上 
  2.  
  3. 安装NFS 
  4. redhat5.8默认已经安装好NFS,如果你的没有安装,使用这条命令即可: 
  5. yum install nfs-utils nfs4-acl-tools portmap 
  6.  
  7. 配置NFS服务端 
  8. nfs的主配置文件是/etc/exports,这里是配置NFS服务器开放的目录以及客户端访问的权限等。 
  9. vi /etc/exports 
  10. /www/users/test.com  172.16.0.0/16(rw,no_root_squash) 
  11. 保存退出 
  12.  
  13. exportfs -arv 使其NFS配置生效,不要重新启动NFS服务 
  14.  
  15. 在NFS中解压Discuz程序 
  16. unzip Discuz_7.2_FULL_SC_GBK.zip -d /www/users/test.com  
  17. cd /www/users/test.com 
  18. cd upload 
  19. mv * ../ 
  20.  
  21. 开始安装Discuz论坛 

提示:此时你可以用一台同一网段windows主机查看一下dns是否有轮询功能,ping完以后清空dns缓存,再次ping一下就看到效果了

 

 

 
  





 


 
  
  1. 测试:1、你可以通过浏览器输入IP或者是域名都可以正常访问Discuz论坛 
  2.       2、你可以试着发贴看看数据是否写到数据库中,然后通过浏览器输入IP或者是域名,查看是否有新的内容 
  3.       3、你可以把两个Web停止一台测试,然后通过浏览器输入IP或者是域名测试论坛是否可以正常访问 
  4.  
  5. 总结: 
  6. 一、安装Discuz的时候提示目录和文件权限不可写 
  7. 原因:权限问题 
  8. 解决方法:编辑httpd.conf把里面的User和Group暂时改成nobody,然后把Discuz的网页文件的属主和属组改成nobody 
  9.  
  10. 二、1、安装Discuz的时候出现mysql_connect()    不支持的错误   
  11.     2、编译php的时候报以下错误:configure: error: Cannot find MySQL header files under /usr/local/mysql.Note that the MySQL client library is not bundled 
  12. anymore! 
  13. 原因:两个问题是因为找不到mysql的头文件 
  14. 解决方法:yum -y install php-mysql 
  15. 在编译php的时候加上--with-mysql=/usr即可