day35学习笔记,(4月22日)

共享存储服务NFS

企业生产集权为什么需要共享存储

上图表述:

在没有共享存储的情况下,A用户上传图片到web01服务器,用户B如果需要访问图片,负载均衡将请求分发到web01、web03机器,则B用户就无法访问该图片。

上图表述:

在配置了共享存储的情况下,无论A用户上传的图片在web01还是其他机器,图片会存储到共享存储上,用户B访问该图片时,无论负载均衡分发web01、web02、web03最终都会在共享存储上寻找资源,所以B用户能访问到资源。

什么是共享存储

是将多台服务器的数据保存在同一个存储服务器上。

在服务器集群内,数据统一存储在一台机器上,实现共享存储。

基于负载均衡web集群下,用户无论请求到那一台机器都可以获取相同数据。

什么是NFS

Network File system 网络文件系统

NFS主要使用在局域网下,让不同的主机之间可以共享文件、或者目录数据

主要用于linux系统上实现文件共享的一种协议,其客户端主要是Linux

没有用户认证机制,且数据在网络上传送的时候是明文传送,一般只能在局域网中使用

支持多节点同时挂载及并发写入

NFS使用场景

1.在服务器集群下,多台web服务器的图片、HTML、视频等静态资源,全都统一保存在NFS服务器上

2.以及NFS服务器也可以当做备份服务器

NFS架构图

NFS程序运行后,产生如下组件

  • RPC(Remote Procedure Call Protocol): 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。
  • rpcbind //负责NFS的数据传输,远程过程调用 tcp/udp协议 端口111
  • nfs-utils //控制共享哪些文件,权限管理

什么是RPC

RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务

在A机器远程调用执行B机器上的代码,执行结果会通过网络把数据传输到本机。

NFS和RPC的关系

因为NFS传输数据服务使用的端口号具有不确定性,所以需要通过借助RPC(Remote Procedure Call,就是远程过程调用)协议来实现

NFS工作原理

1、安装并启动rpcbind

2、NFS服务端启动后,将端口信息注册到rpcbind服务中

3、NFS客户端通过TCP/IP的方式,连接到NFS服务端提供的rpcbind服务,并且从该服务中获得具体的端口信息

4、NFS客户拿到具体的端口信息后,将自己需要执行的函数,通过网络发给NFS服务端对应的端口

5、NFS服务端接收到请求后,通过rpc.nfsd进程判断该客户端是否有权限连接

6、最终NFS服务端会将客户端请求的函数,识别为本地可以执行的命令,传递给内核、最终内核驱动硬件

结论、nfs的客户端、服务端之间的通信基于rpc协议,且必须运行rpcbind服务

rpcbind服务的作用

nfs的数据传输是通过rpc协议的。

NFS服务就是使用RPC协议的帮忙,RPC服务实现的功能是记录每个NFS功能对应的端口号,并且在NFS客户端发出请求的时候,把该功能和对应的端口信息传递给发出请求的NFS客户端,保证客户端能够正确的连接到NFS的端口,达到数据传输的目的。

RPC就好比是一个中介,处在客户端、服务端之间。

当NFS服务器启动时会随机采用若干端口,并且主动在RPC服务中注册相关端口以及功能信息。

RPC服务就知道NFS服务对应的端口

RPC服务默认使用固定111端口来监听NFS客户端提交的请求,并将正确的NFS端口信息回复给NFS客户端

NFS软件列表

安装nfs服务,需要安装如下软件包

  • nfs-utils:NFS服务的主程序,包括了rpc.nfsd、rpc.mountd这两个守护进程以及相关文档,命令
  • rpcbind:是centos7/6环境下的RPC程序

配置文件修改

语法

默认配置文件路径是/etc/exports

exports配置文件语法

NFS共享目录  NFS客户端地址(参数1、参数2...) 客户点地址2(参数1、参数2...)

例如
/        hostname1(rw)  hostname2(rw,no_root_squash)
/home/chaoge/log   192.168.178.0/24(ro)
只读共享,例如一些生成服务器的日志目录,又不想给开发服务器的权限,可以用此办法,共享目录给他人只读查看



参数解释
1.NFS共享目录:为NFS服务器要共享的实际目录,必须绝对路径,注意目录的本地权限,如果要读写共享,要让本地目录可以被NFS客户端的(nfsnobody)读写

2.NFS客户端地址,也就是NFS服务器端授权可以访问共享目录的客户端地址
-  单一客户端	    192.168.178.142	            用的少
-  整个网段	 192.168.178.0/24	 24表示子网掩码255.255.255.0,指定网段,用的较多
-  授权域名客户端	nfs.yuchaoit.cn	弃用
-  授权整个域名客户端	*.yuchaoit.cn	弃用

NFS配置文件参数解释

ro 只读
rw 读写
root_squash 当nfs客户端以root访问时,它的权限映射为NFS服务端的匿名用户,它的用户ID/GID会变成nfsnobody
no_root_squash 同上,但映射客户端的root为服务器的root,不安全,避免使用
all_squash 所有nfs客户端用户映射为匿名用户,生产常用参数,降低用户权限,增大安全性。
sync 数据同步写入到内存与硬盘,优点数据安全,缺点性能较差
async 数据写入到内存,再写入硬盘,效率高,但可能内存数据会丢


/etc/exports  man 5 exports

共享目录        共享选项
/nfs/share      *(ro,sync)

共享主机:
*   :代表所有主机
192.168.0.0/24:代表共享给某个网段
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同网段
192.168.0.254:共享给某个IP
*.yuchaoit.cn:代表共享给某个域下的所有主机

共享选项:
ro:只读,不常用
rw:读写
sync:实时同步,直接写入磁盘
async:异步,先缓存在内存再同步磁盘
anonuid:设置访问nfs服务的用户的uid,uid需要在/etc/passwd中存在
anongid:设置访问nfs服务的用户的gid
root_squash :默认选项 root用户创建的文件的属主和属组都变成nfsnobody,其他人nfs-server端是它自己,client端是nobody。
no_root_squash:root用户创建的文件属主和属组还是root,其他人server端是它自己uid,client端是nobody。
all_squash: 不管是root还是其他普通用户创建的文件的属主和属组都是nfsnobody

说明:
anonuid和anongid参数和all_squash一起使用。
all_squash表示不管是root还是其他普通用户从客户端所创建的文件在服务器端的拥有者和所属组都是nfsnobody;服务端为了对文件做相应管理,可以设置anonuid和anongid进而指定文件的拥有者和所属组

rpcbind服务管理

NFS服务都是基于RPC协议通信的默认端口是111,要确保系统运行了rpcbind服务

要注意的是rpcbind服务即使停止,111端口也不会挂掉,因为还有rpcbind.socket服务

启动rpc服务由2个结合运行

rpcbind.service

rpcbind.socket

posted on 2022-04-23 18:56  Cloud~Commander  阅读(113)  评论(0编辑  收藏  举报