LAMP平台基于NFS实现web服务器负载均衡
2015-04-21 17:07
561 查看
前言
随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解如何基于NFS实现web服务器的负载均衡及数据同步。
NFS服务介绍NFS(Network File System)网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS本身没有提供数据传输的功能,必须借助于远程过程调用(RPC)协议来实现数据的传输。
配置文件
NFS在CentOS6上的配置文件及服务提供程序
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/46c81b59f24fe2761aa3ddfaabf37623.jpg)
配置过程案例要求:DNS服务器:172.168.10.10(CentOS6.6)web服务器1:172.16.10.100(CentOS6.6 ) web服务器2:172.16.10.212(CentOS6.6 ) php服务器:172.16.10.110(CentOS6.6) NFS服务器:172.16.10.110(CentOS6.6)数据库服务器:172.16.10.211(CentOS6.6) MariaDB要求两台web服务器上提供同一个站点(blog.scholar.com wordpress站点),站点目录位于NFS服务器为/web/blog,两台web服务器数据需保持统一
请确保各服务器,服务软件已安装,我这里已经安装好了(其实是借用以前的),编译安装的神马的详见博客DNS服务器配置
修改正反向区域文件正向解析
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/5b77100ba4702ec7fc27ac5f885f1f03.jpg)
反向解析
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/b4f9de73637170aa4452bee856518510.jpg)
检查语法,启动服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/b3d09303903862cfb83988d763890c1e.jpg)
NFS服务器配置创建共享目录,并设置权限
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/aab74c6b7734b683cd9e31890cd643bb.jpg)
编辑配置文件,设置共享目录及客户端
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/f270bac0f8d2e9eefe7c18b52e909a89.jpg)
数据库服务器配置为wordpress程序提供数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/c6d7f32e6d7fbda27051c1d6f7bc8c6b.jpg)
web服务器配置启用相关模块
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/a7a064d25c0ed5c13e1b30036ff0a424.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/3b12b0c99d8c1984be4de014d1ab497d.jpg)
测试站点是否访问正常
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/56f112505ec896e5e4fc82b929ee8986.jpg)
可以访问的,接下来我们看一下,数据是否可以同步指定某一台服务器IP访问
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/628653fd786042d03316fc86e9f3975d.jpg)
我们在这台服务器登陆,发表一篇博文
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/78c5f307dfe7fad0ecf196fb6c67906a.jpg)
现在我们通过另外一台服务器看一下,是否可以看到刚刚发表的博文
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/3e14975fdd98c8216fcfdcb31e1d3137.jpg)
OK,可以看到,数据同步的目的也实现了The end“世界那么大,我想去看看...”希望有朝一日我也可以如此洒脱...好了,基于NFS实现web服务器的负载均衡就说到这里了,遇到什么问题可留言,我要去感悟人生去了。以上仅为个人学习整理,如有错漏,大神勿喷~~
随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解如何基于NFS实现web服务器的负载均衡及数据同步。
NFS服务介绍NFS(Network File System)网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS本身没有提供数据传输的功能,必须借助于远程过程调用(RPC)协议来实现数据的传输。
配置文件
NFS在CentOS6上的配置文件及服务提供程序
程序包:nfs-utils 脚本:/etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfslock /etc/rc.d/init.d/rpcgssd /etc/rc.d/init.d/rpcidmapd /etc/rc.d/init.d/rpcsvcgssd 配置文件:/etc/exports /etc/sysconfig/nfs #提供额外功能配置文件详解
/etc/exports文件格式及选项 文件系统 客户端(选项) 客户端(选项) 客户端:IP、FQDN或DOMAIN、NETWORK 选项: secure:缺省选项,它使用了1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用这个选项 rw:这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读(ro)。 async:可改进性能,但是如果没有完全关闭NFS守护进程就重新启动了NFS服务器,也可能会造成数 据丢失,缺省为为sync no_wdelay:关闭写延时,如果设置了async,那么NFS就会忽略这个选项 nohide:如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像 空的一样,要禁用这种行为,需启用 hide 选项 no_subtree_check:关闭子树检查,子树检查会执行一些不想忽略的安全性检查,缺省选项是启用 子树检查 no_auth_nlm:可作为insecure_locks指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果 关心安全性问题,就要避免使用这个选项,缺省选项是 auth_nlm 或 secure_locks mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录 fsid=num:通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。 用户映射的选项: root_squash:不允许root用户访问挂载上来的 NFS 卷 no_root_squash:允许 root 用户访问挂载上来的 NFS 卷 all_squash:限制所有的 UID 和 GID,只使用匿名用户,缺省设置是 no_all_squash anonuid 和 anongid:将匿名 UID 和 GID 修改成特定用户和组帐号相关命令
查看NFS服务器端共享的文件系统: showmount -e NFSSERVER_IP 挂载NFS文件系统: mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point exportfs:维护exports文件导出的文件系统表的专用工具 export -ar: 重新导出所有的文件系统 export -au: 关闭导出的所有文件系统 export -u FS: 关闭指定的导出的文件系统 开机自动挂载nfs vim /etc/fstab SERVER:/PATH/TO/EXPORTED_FS /mount_point nfs defaults,_netdev 0 0NFS实现web服务器负载均衡工作原理
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/46c81b59f24fe2761aa3ddfaabf37623.jpg)
配置过程案例要求:DNS服务器:172.168.10.10(CentOS6.6)web服务器1:172.16.10.100(CentOS6.6 ) web服务器2:172.16.10.212(CentOS6.6 ) php服务器:172.16.10.110(CentOS6.6) NFS服务器:172.16.10.110(CentOS6.6)数据库服务器:172.16.10.211(CentOS6.6) MariaDB要求两台web服务器上提供同一个站点(blog.scholar.com wordpress站点),站点目录位于NFS服务器为/web/blog,两台web服务器数据需保持统一
请确保各服务器,服务软件已安装,我这里已经安装好了(其实是借用以前的),编译安装的神马的详见博客DNS服务器配置
修改正反向区域文件正向解析
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/5b77100ba4702ec7fc27ac5f885f1f03.jpg)
反向解析
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/b4f9de73637170aa4452bee856518510.jpg)
检查语法,启动服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/b3d09303903862cfb83988d763890c1e.jpg)
NFS服务器配置创建共享目录,并设置权限
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/aab74c6b7734b683cd9e31890cd643bb.jpg)
编辑配置文件,设置共享目录及客户端
[root@scholar ~]# vim /etc/exports /web/blog 172.16.10.100(rw,sync) 172.16.10.212(rw,async)站点文件准备
[root@scholar ~]# unzip wordpress-3.2.1-zh_CN.zip [root@scholar ~]# cd wordpress [root@scholar wordpress]# mv * /web/blog [root@scholar wordpress]# cd /web/blog [root@scholar blog]# cp wp-config-sample.php wp-config.php [root@scholar blog]# vim wp-config.php /** WordPress 数据库的名称 */ define('DB_NAME', 'wpdb'); /** MySQL 数据库用户名 */ define('DB_USER', 'wpuser'); /** MySQL 数据库密码 */ define('DB_PASSWORD', 'wppass'); /** MySQL 主机 */ define('DB_HOST', '172.16.10.211');启动服务,查看监听端口
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/f270bac0f8d2e9eefe7c18b52e909a89.jpg)
数据库服务器配置为wordpress程序提供数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/c6d7f32e6d7fbda27051c1d6f7bc8c6b.jpg)
web服务器配置启用相关模块
[root@scholar ~]# vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so启用虚拟主机
#DocumentRoot "/usr/local/apache/htdocs" #关闭中心主机 Include /etc/httpd24/extra/httpd-vhosts.conf #启用虚拟主机使之支持php
<IfModule dir_module> DirectoryIndex index.html index.php </IfModule> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps配置虚拟主机
[root@scholar ~]# vim /etc/httpd24/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/web/blog" ServerName blog.scholar.com ProxyRequests Off #关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.10.110:9000/web/blog/$1 #代理至php服务器 <Directory "/web/blog"> Options none AllowOverride none Require all granted </Directory> </VirtualHost>挂载共享目录
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/a7a064d25c0ed5c13e1b30036ff0a424.jpg)
#可设置开机自动挂载 [root@scholar ~]# vim /etc/fstab 172.16.10.110:/web/blog /web/blog nfs defaults,_netdev 0 0检查语法,启动服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/3b12b0c99d8c1984be4de014d1ab497d.jpg)
测试站点是否访问正常
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/56f112505ec896e5e4fc82b929ee8986.jpg)
可以访问的,接下来我们看一下,数据是否可以同步指定某一台服务器IP访问
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/628653fd786042d03316fc86e9f3975d.jpg)
我们在这台服务器登陆,发表一篇博文
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/78c5f307dfe7fad0ecf196fb6c67906a.jpg)
现在我们通过另外一台服务器看一下,是否可以看到刚刚发表的博文
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/3e14975fdd98c8216fcfdcb31e1d3137.jpg)
OK,可以看到,数据同步的目的也实现了The end“世界那么大,我想去看看...”希望有朝一日我也可以如此洒脱...好了,基于NFS实现web服务器的负载均衡就说到这里了,遇到什么问题可留言,我要去感悟人生去了。以上仅为个人学习整理,如有错漏,大神勿喷~~
相关文章推荐
- web服务器(LAMP)通过DNS轮询功能和nfs共享实现负载均衡
- 部署LAMP+NFS实现双Web服务器负载均衡
- 基于44B0平台的uC-Linux Web服务器实现方法研究
- LAMP+NFS实现多个web服务器静态资源统一存储
- 基于LAMP平台利用NFS远程共享资源实现站点构建
- 基于NFS实现lamp的负载均衡之二: 部署NFS服务器
- 基于CentOS 7系统的两部LAMP服务器,通过NFS共享同一个php网页的实现
- 利用nfs共享实现多台web服务器的负载均衡
- LAMP分离式之web服务器负载均衡架构之基于NFS共享式Discuz论坛
- 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问
- 基于python实现简单web服务器
- 两台WEB服务器通过DNS轮询功能实现负载均衡
- 实现WEB服务器的负载均衡
- 基于ansible role实现LAMP平台批量部署 推荐
- 【Linux运维-集群技术进阶】Nginx+Tomcat实现Web服务器的负载均衡
- 基于NFS实现lamp的负载均衡之六: 部署discuz论坛
- 【转】【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】
- 加固基于Windows平台的WEB服务器
- DNS+LAMP+NFS实现负载均衡