设为首页 收藏本站
查看: 938|回复: 0

LAMP架构之NFS

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2015-8-19 08:35:17 | 显示全部楼层 |阅读模式
需求分析
   前端需支持更大的访问量,单台Web服务器已无法满足需求了,则需扩容Web服务器;
虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着多台Web服务器都需要在各自的系统中都存有一份静态页面数据呢?
   其实这样也不是不可以,毕竟文件本地访问,速度还是有优势的,但这却涉及到多台Web服务器间内容的一致性问题,尤其是在上线新代码或修改Web配置文件时,即使是使用一些管理工具(如puppet),这种问题也不可避免;
   那么如果能将静态页面集中存放,所有Web服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;
   文件共享有多种方式,FTP,NFS,Samba等,而其中NFS作为网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,这种近似访问本地文件系统的架构貌似很符合我们的需求,那我们就来试试吧!
架构优化
DSC0000.jpg
说明1:NFS服务安装在PHP服务器上,并将网站根目录共享出去,这样,虽然网站内容都在同一个目录,但静态内容会通过NFS由Web服务器读取,而动态内容则通过fcgi交由PHP服务器解析;
说明2:前端Web服务器在挂载NFS共享目录时,需先通过RPC调用机制获得NFS相关服务(如mountd)的端口号,然后再连接通信
RPC调用和NFS的基本原理图
DSC0001.jpg
NFS简介
NFS实现文件共享主要由以下3个组件配合完成:



  • nfsd:接受NFS客户端的请求服务


  • mountd:挂载守护进程,等待客户端的挂载请求,并完成来源认证


  • rpcbind:此服务允许NFS客户端查询被NFS服务使用的端口


监听端口:



  • NFS服务nfsd本身监听的端口是2049/tcp和2049/udp,但还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口


需安装程序:



  • rpcbind(一般系统自带,可不安装),nfs-utils


主要文件:



  • /etc/exports 主配置文件


  • /usr/sbin/exportfs 维护NFS共享资源的指令,一般用于NFS服务器端


  • /usr/sbin/showmount 查看NFS共享出来的目录资源,一般用于NFS客户端


  • /var/lib/nfs/xtab NFS的日志文件,主要记录曾经连入NFS服务器端的客户端信息


配置部署
NFS服务器配置
在PHP服务器上,安装好nfs-utils组件,并安装phpwind







mkdir /www/phpwind.com
unzip phpwind_v9.0_utf8.zip
cd phpwind_v9.0_utf8/upload
mv * /www/phpwind.com
cd /www/phpwind.com
chmod -R a+rw attachment conf data html src themes windid # 需配置这些目录具有写权限,否则安装会出现失败的

编辑NFS主配置文件







vi /etc/exports
/www/phpwind.com  172.16.251.0/24(rw,no_root_squash) # 配置共享目录为可读写,客户端root用户权限不压缩

启动服务







service nfs start

查看启动进程







ps -ef | grep "nfs\|rpc"
  

NFS客户端配置
这里的客户端就是前端的2台Web服务器,先挂载共享目录,然后测试其读写功能


  在客户机上执行mount命令,它向服务器上的端口映射器发出一个RPC调用来获得服
务器上安装守护程序的端口号。客户和端口映射器交互既可以使用TCP也可以使用UDP,但
一般使用UDP。







showmount -e 172.16.251.163 # 查看NFS服务器共享出来的目录
mkdir /www/phpwind.com # 创建本地挂载目录,因为在httpd的虚拟主机配置中根目录就是配置的/www/phpwind.com
mount -t nfs 172.16.251.163:/www/phpwind.com /www/phpwind.com # 挂载在本地
mount # 查看是否以挂载成功

测试(以Web Server1为例)







# 核对Web服务器的虚拟主机配置
# vi /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/www/phpwind.com"
ServerName phpwind.com
ServerAlias www.phpwind.com
ErrorLog "logs/phpwind.com-error_log"
CustomLog "logs/phpwind.com-access_log" common
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.251.163:9000/www/phpwind.com/$1
<Directory "/www/phpwind.com">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

安装测试
访问Web Server1以安装,浏览器访问http://172.16.251.182,会直接跳转至http://172.16.251.182/install.php开始安装
DSC0002.jpg
在安装过程中,需填写MySQL数据库的信息,故还需在已有的MySQL中对于phpwind建立相应的数据库和用户,







create database phpwind; # 数据库名为phpwind
grant all privileges on phpwind.* to phpwind@'172.16.%.%' identified by 'phpwind123'; # 可访问的用户名和密码分别是phpwind和phpwind123

安装并登录成功
DSC0003.jpg

访问测试
首先在Web Server1上发帖
DSC0004.jpg
然后在Web Server2上看帖
DSC0005.jpg
一切正常,说明前端Web服务器能正常访问NFS服务器,这样就实现了静态文件的集中存放了。

总结
虽然NFS可以实现文件共享的强大功能,节省前端Web服务器的磁盘空间,但NFS不适合大规模的访问场景下,在访问量不太大的情况下,作为图片服务器或者其他静态资源服务器还是挺不错的,总之,任何技术都要在适合的场景下才能发挥其最大的功用!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-100891-1-1.html 上篇帖子: ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目 下篇帖子: LAMP环境搭建教程(原创)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表