NFS图片服务器搭建

需求:

在多个不同机器上部署同一个tomcat工程内容做服务器负载均衡(nginx),每个tomcat实例都有上传静态文件的功能(比如图片)。
但是对外访问的时候,需要一个统一的出口,所以这里使用NFS文件共享服务。

搭建准备

1.首先准备三台服务器
1.NFS服务服务器 123.57.41.175
2.tomcat服务器 123.57.41.176
3.tomcat服务器 123.57.41.177
2.服务端安装NSF服务(CentOS)(123.57.41.175)
1.查看系统是否安装NFS和RPC
rpm -qa | grep nfs
rpm -qa | grep rpcbind
2.安装NFS服务:
yum -y install nfs-utils rpcbind
3.服务端配置

在NFS服务端上创建共享目录/opt/share并设置权限:

mkdir -p /opt/share
chmod 777 /opt/share/
4.编辑exports文件
vim /etc/exports

输入这句

/opt/share 123.57.41.175(rw,no_root_squash,no_subtree_check,sync)
4.1编辑文件说明:
/opt/share	服务器上共享的目录
123.57.41.*
指定ip地址的主机:123.57.41.176
	指定子网中的所有主机:192.168.0.0/24192.168.0.0/255.255.255.0
	指定域名的主机:nfs.test.com
	指定域中的所有主机:*.test.com
所有主机:*
括号内选项说明
ro:共享目录只读;
rw:共享目录可读可写;
	all_squash:所有访问用户都映射为匿名用户或用户组;
	no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
	anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
	sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
	async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
	wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;
	subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
5.配置文件生效
exportfs -rv
exportfs命令说明:
不重启nfs服务应用更新,相关选项如下:
-a 全部挂载或卸载 /etc/exports中的内容
	-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
	-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
	-v 在export的时候,将详细的信息输出到屏幕上。
6.启动rpcbind、nfs服务
service rpcbind start
service nfs start

查看RPC服务的注册状况

rpcinfo -p localhost

查看RPC是否开启

service rpcbind status

查看NFS的运行状态

nfsstat

查询nfs共享目录信息

showmount
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname  显示此IP地址分享出来的目录
如:showmount -e localhost
3.客户端配置

安装nfs-utils客户端

yum -y install nfs-utils

创建挂载目录

mkdir /opt/mnt

查看服务器抛出的共享目录信息

showmount -e 123.57.41.175

为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议

mount -t nfs 123.57.41.175:/opt/share /opt/mnt -o proto=tcp -o nolock

查看挂载情况

df -h

在这里插入图片描述

注:另一台tomcat客户端服务器同上。

测试:

在任意一台tomcat所在机器的/opt/mnt目录下新建一个文件/文件夹,然后去123.57.41.175的NFS服务器上查看/opt/share目录下是否已经存在同样的文件/文件夹

nginx提示点:(此为参考,未验证)

nginx访问的时候,可以配置一个访问静态资源的server,然后root指向这个NFS的共享文件夹,
就实现了一个tomcat集群下的文件服务器功能,从统一路径访问文件。

tomcat配置虚拟目录

server.xml中添加host:

   <Context path="/mp3" docBase="/data/nfs" reloadable="true"></Context> 

NSF(Network File System)文档服务器概念

1.简介

NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。
 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。
 所以,你也可以简单的将他看做是一个文件服务器 (file server) 呢!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 
 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)!使用上面相当的便利!

2.RPC简介

NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口才没有固定住, 而是随机取用一些未被使用的小于 1024 的埠口来作为传输之用。但如此一来又造成客户端想要连上服务器时的困扰, 因为客户端得要知道服务器端的相关埠口才能够联机吧
此时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的埠口上去。 那 RPC 又是如何知道每个 NFS 的埠口呢?这是因为当服务器在启动 NFS 时会随机取用数个埠口,并主动的向 RPC 注册,因此 RPC 可以知道每个埠口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的埠口, 所以当然可以让 NFS 的启动更为轻松愉快了
所以你要注意,要启动 NFS 之前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册

3.客户端存取文件过程

1)客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
2)服务器端找到对应的已注册的 NFS daemon 埠口后,会回报给客户端;
3)客户端了解正确的埠口后,就可以直接与 NFS daemon 来联机
由于 NFS 的各项功能都必须要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能之 port number, PID, NFS 在服务器所监听的 IP 等等,而客户端才能够透过 RPC 的询问找到正确对应的埠口。 也就是说,NFS 必须要有 RPC 存在时才能成功的提供服务,因此我们称 NFS 为 RPC server 的一种

4.所需要的软件及软件结构

RPC 主程序:rpcbind
NFS 主程序:nfs-utils
主要配置文件:/etc/exports
NFS 文件系统维护指令:/usr/sbin/exportfs
分享资源的登录档:/var/lib/nfs/*tab
客户端查询服务器分享资源的指令:/usr/sbin/showmount
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章