一、 实验说明
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服务器做负载均衡,所以服务的搭建也不再赘述了,请返回参考
二、网络拓扑
网络拓扑只做了实验架构说明,具体的一些枝枝叶叶没有规划
三、准备DNS服务器
1、为shuishui.com添加资源记录,创建资源记录后,别忘了执行DNS服务器的六大步骤
2、做DNS解释轮询
在以上配置中,www.shuishui.com对应了2个IP地址,此时具体选择哪一条A记录,是由rrset-order语句决定的。
rrset-order 支持三个参数:fixed, random, cyclic 。
fixed 将多个A记录按配置文件的顺序固定给出
random 随机给出
cyclic 循环给出
3、DNS解析测试
1)在linux主机上测试
2)在windows主机上测试
四、新增加的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
2、配置Apache服务器支持使用fcgi
这里就不做虚拟主机了,直接就用中心主机做了,并且更改一下它的DocumentRoot
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实现。
五、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
文件系统导出属性
①、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文件,然后进行挂载就可以了(事先创建好文件夹哦)
2)设置开机自己挂载
3)测试Apache服务器是否工作正常
在nfs服务器的/www/shuishui.com/目录中放入index.php测试页
(1)Apache服务器172.16.251.93工作正常
(2)Apache服务器172.16.251.194工作正常
至此,NFS网络文件系统配置完成,最后一步则是安装论坛,并测试其是否能够达到数据同步
六、测试Discuz论坛的数据同步
1、安装论坛
首先在php服务器上下载Discuz_X2.5_SC_GBK.zip,解压会得到一个upload目录,因为在安装Discuz的过程中涉及到权限的问题,所以这里为了文件就把权限设置成了777。
1)在Apache服务器172.16.251.93上去安装Discuz论坛,当然在另一台上去安装也可以
2)论坛安装第二步
3)论坛安装第三步
论坛安装第三步要求关联数据库,所以我们应该提前去mysql服务器172.16.251.104上授权一个用户,这里授权的用户名和密码都叫admin,数据库名叫ultrax,管理员账号和密码也都设置为admin,为了方便,通通都用admin
下图是在mysql服务器,172.16.251.104上为admin用户进行授权
接下来的第4步就是安装过程,论坛就安装成功了,
2、测试两台Apache服务器使用NFS网络文件系统能够实现数据实时同步
1)、在172.16.251.194上先发个贴子
2)、查看别一台Apache服务器172.16.251.93上是否有这个帖子
恩!确实,第二台服务器上也有这个帖子,这就证明了两台Apache服务器是在共用NFS网络文件系统,实验目的已然达到
3)、用域名访问看看是否有此贴
不错,使用域名也可以正常访问,这两台Apache服务器是基于DNS轮询做负载均衡的,这里就不再测试其效果了
看官辛苦了!谢谢捧场!