一、 实验说明

   1、通过DNS服务器实现负载均衡

   2、为web服务器挂载NFS网络文件系统,保证两台web服务器数据的同步

   3、实验平台环境

       1)两台Apache服务器做负载均衡

       2)一台cgi服务器挂载NFS网络文件系统,实现数据同步

       3)一台mysql服务器

       4)DNS服务器部署到一台Apache服务器上

   4、操作系统使用

       共使用3台CentOS6.4,一台Centos6.5

       上文中使用的都是CentOS6.4,今天新加的一台Apache服务器使用CentOS6.5

   5、IP分配

       将在下面的拓扑图上直观的标出

   6、LAM之三接本博客中的另两篇博文:

      《LAMP之一:apache、mysql、php的安装及互联互通》

      《LAMP之二:LAMP的性能测试以及安装xcache,为php加速》

   7、关于DNS

       DNS服务器的搭建,本博客中有两篇博文做了详细介绍,这里不再现赘述

   8、这个实验严重依赖于《LAMP之一:apache、mysql、php的安装及互联互通》,LAMP之一中有非常详细的服务编译安装过程,那里面共准备了3台服务器,这里将再准备一台Apache服务器做负载均衡,所以服务的搭建也不再赘述了,请返回参考

二、网络拓扑

   网络拓扑只做了实验架构说明,具体的一些枝枝叶叶没有规划

wKiom1MyMNPDmiYTAADPDujC574996.png

三、准备DNS服务器

   1、为shuishui.com添加资源记录,创建资源记录后,别忘了执行DNS服务器的六大步骤

wKiom1MyM6CwEqpDAACJd8oDSHM632.png

   2、做DNS解释轮询

在以上配置中,www.shuishui.com对应了2个IP地址,此时具体选择哪一条A记录,是由rrset-order语句决定的。

   这是在 /etc/named.conf 文件中 options 语句有关rrset-order配置的一个例子:
       rrset-order {
           class IN type A name "www.shuishui.com" order cyclic;
       };
   这个设置会使处于IN类中的A记录的响应以随机顺序返回,IN 类以"mail.example.com"为后缀。其他的记录以循环记录被返回。

   rrset-order 支持三个参数:fixed, random, cyclic 。
         fixed     将多个A记录按配置文件的顺序固定给出
         random     随机给出
         cyclic     循环给出

wKiom1MyNTCTKx1IAAA1KGJSDVs853.png

3、DNS解析测试

   1)在linux主机上测试

wKioL1MyNr6i0-CvAAByZNB_O0U780.png

   2)在windows主机上测试

wKiom1MyjH6inYoOAAAfV141hGk815.png

四、新增加的Apache服务器的设置(172.16.251.194)

   1、启用httpd的相关模块

    在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

   LoadModule proxy_module modules/mod_proxy.so

   LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

vim /etc/httpd24/httpd.conf

wKiom1MyOQjBPX_KAABTiXUZt5E088.png

2、配置Apache服务器支持使用fcgi

   这里就不做虚拟主机了,直接就用中心主机做了,并且更改一下它的DocumentRoot

wKiom1MyOs_BsRtPAABHDxAVDGE796.png

ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://172.16.150.150:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

   3、编辑apache配置文件httpd

# vim /etc/httpd24/httpd.conf

1)添加如下二行

          AddType application/x-httpd-php  .php

          AddType application/x-httpd-php-source  .phps

    2)定位至DirectoryIndex index.html

          修改为:

          DirectoryIndex  index.php  index.html

   再补充下:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。

wKioL1MyPRvizYExAAApcvtdBsE067.png

五、NFS网络文件系统的配置

   1、服务端的配置(php,cgi服务器)

   1)NFS简介

NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

  NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

   2)安装

   NFS的安装很简单,只需要安装nfs-utils就可以了,因为NFS本身是内核模块,可以使用lsmod查看NFS是否已经存在这个模块,如果实在没有,那就yum一个吧!

      三个关键进程

       (1)mountd:挂载守护进程,负责客户端来源认证的进程,服务器通过端通常映射为本地文件系统,就像使用本地文件系统一样方便

       (2)nfsd:文件读写

       (3)idmapd:id映射进程

   3)配置服务器端

   NFS服务器的配置比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。

   使用service nfs start 启动nfs服务

   使用exportfs -a 导出所有文件系统

vim /etc/exports

wKiom1MyQtajrXU6AAAiOUHWM1g003.png

文件系统导出属性

       ①、rw,可读可写

       ②、async,异步

       ③、sync,同步

       ④、root_squash,压缩root用户,基于imapd,将root通过网络访问时转换为nfsnobody用户

       ⑤、no_root_squash,不压缩root用户

       ⑥、all_squash,压缩所有用户    

       ⑦、anonuid,anongid,指定匿名用户映射为的UID和GID

   2、客户端配置(两台Apache服务器)

   1)直接挂载

      客户机中安装服务器一样,安装nfs-utils,只是不需要配置/etc/exports文件,然后进行挂载就可以了(事先创建好文件夹哦)

wKioL1MyR4LAXzoGAABLQ1T5rsw376.png

2)设置开机自己挂载

wKiom1M2sSags6LpAABAG_A4uZo658.png


wKioL1MySYLQyA8VAACyL05dGU4311.png

3)测试Apache服务器是否工作正常

       在nfs服务器的/www/shuishui.com/目录中放入index.php测试页

       (1)Apache服务器172.16.251.93工作正常

wKioL1MyS3nB5oysAAB7-hwxA7w514.png

 (2)Apache服务器172.16.251.194工作正常

wKiom1MyS-vjV58eAAB-sMbWY7E258.png

 至此,NFS网络文件系统配置完成,最后一步则是安装论坛,并测试其是否能够达到数据同步

六、测试Discuz论坛的数据同步

   1、安装论坛

   首先在php服务器上下载Discuz_X2.5_SC_GBK.zip,解压会得到一个upload目录,因为在安装Discuz的过程中涉及到权限的问题,所以这里为了文件就把权限设置成了777。

wKiom1MyTlWilMNxAAA037qWw_A687.png

1)在Apache服务器172.16.251.93上去安装Discuz论坛,当然在另一台上去安装也可以

wKiom1MyTt7gWa5rAAC96BafGTc849.png

   2)论坛安装第二步

wKioL1MyTxLSWcEeAACS7Xzl2Ao640.png

3)论坛安装第三步

wKioL1MyTzORH_7TAABnLt0swYs524.png

论坛安装第三步要求关联数据库,所以我们应该提前去mysql服务器172.16.251.104上授权一个用户,这里授权的用户名和密码都叫admin,数据库名叫ultrax,管理员账号和密码也都设置为admin,为了方便,通通都用admin

   下图是在mysql服务器,172.16.251.104上为admin用户进行授权

wKiom1MyUHjxXU7gAAA9uYd_ey8749.png

接下来的第4步就是安装过程,论坛就安装成功了,

2、测试两台Apache服务器使用NFS网络文件系统能够实现数据实时同步

   1)、在172.16.251.194上先发个贴子

wKioL1MyUayhKA3sAAEjoECrI6w123.png

 2)、查看别一台Apache服务器172.16.251.93上是否有这个帖子

wKiom1MyUi6ATDW0AAD6Xzq9aMg534.png

恩!确实,第二台服务器上也有这个帖子,这就证明了两台Apache服务器是在共用NFS网络文件系统,实验目的已然达到

   3)、用域名访问看看是否有此贴

wKiom1MyUtvT9E6qAAD18lzgD1Y402.png

   不错,使用域名也可以正常访问,这两台Apache服务器是基于DNS轮询做负载均衡的,这里就不再测试其效果了

   看官辛苦了!谢谢捧场!t_0002.gif