两台WEB服务器(LAMP)通过DNS轮询功能实现负载均衡

两台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
 
实验拓扑图如下:
 

两台WEB服务器(LAMP)通过DNS轮询功能实现负载均衡

 

最终实现的效果:
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 
  41. 两台WEB服务器(LAMP)通过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
    
    
  42. 二、server2:172.16.0.23(Mysql) 
  43. 安装mysql 
  44. 安装mysql-5.5.24(这里是绿色版直接解压使用) 
  45. 新建用户以安全方式运行进程:  
  46. groupadd -r mysql  
  47. useradd  -g mysql -r -s /sbin/nologin mysql 
  48. chown mysql:mysql /data  
  49.   
  50. 解压mysql并创建软链接  
  51. tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local   
  52. cd /usr/local  
  53. ln -sv mysql-5.5.24-linux2.6-i686  mysql  
  54.   
  55. 修改属主和组并初始化mysql-5.5.24  
  56. chown -R mysql:mysql  .  
  57. /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data 
  58. chown -R root .  
  59.   
  60. 为mysql提供主配置文件:  
  61. cd /usr/local/mysql  
  62. cp support-files/my-large.cnf  /etc/my.cnf  
  63.   
  64. 编辑my.cnf文件 
  65. vim /etc/my.cnf 
  66. 并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:  
  67. thread_concurrency = 2  
  68. datadir = /data 
  69.   
  70. 为mysql提供sysv服务脚本:  
  71. cd /usr/local/mysql  
  72. cp support-files/mysql.server  /etc/rc.d/init.d/mysqld  
  73.   
  74. 添加至服务列表:  
  75. chkconfig --add mysqld  
  76. chkconfig mysqld on  
  77. 最后就可以启动服务测试使用了。 
  78.   
  79. 使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用  
  80. vim /etc/profile      /添加PATH搜索路径/  PATH=$PATH:/usr/local/mysql/bin  
  81. vim /etc/man.config       /添加man路径/ MANPATH    /usr/local/mysql/man  
  82.   
  83. 使用mysql命令生效 
  84. export PATH=$PATH:/usr/local/mysql/bin/ 
  85.  
  86. 输出mysql的头文件至系统头文件路径/usr/include:  
  87. 这可以通过简单的创建链接实现:  
  88. ln -sv /usr/local/mysql/include  /usr/include/mysql  
  89. 输出mysql的库文件给系统库查找路径:  
  90. echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf  
  91.   
  92. 最后让系统重新载入系统库:  
  93. ldconfig  
  94.  
  95. service mysqld start  
  96. mysqladmin -uroot password 'redhat'  
  97. mysql -uroot -p   
  98. mysql> GRANT ALL ON discuz.* TO root@'%.%.%.%' IDENTIFIED BY 'redhat';   
  99. mysql> FLUSH PRIVILEGES
    三、server3:172.16.0.24(Web+PHP+NFS)
    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即可 

没有更多推荐了,返回首页