两台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           172.16.0.22 
  32. www      IN           172.16.0.22 
  33. www      IN           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
    两台WEB服务器(LAMP)通过DNS轮询功能实现负载均衡
    
  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  
  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一下就看到效果了
     
    两台WEB服务器(LAMP)通过DNS轮询功能实现负载均衡
    
    
     
    两台WEB服务器(LAMP)通过DNS轮询功能实现负载均衡
    
    
     
     

    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即可 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值