Web集群之NFS(网络文件系统)

1、什么是NFS
NFS(Network File System)网络文件系统
它的主要功能是通过网络(一般是局域网)让不同主机系统之间共享文件或目录
NFS客户端(应用服务器,例如web)可以挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(某一个挂载点下)
从客户端本地来看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或目录一样,而实际上却是远端的NFS服务器的目录

所有的Web服务器会向 NFS服务器进行数据交互

应用场景:

NFS适用于中小型企业:NFS服务器,而且默认只能有一台NFS服务器
大公司或大门户(高并发):Moosefs(MFS)、GlusterFS、FastDFS等(分布式文件系统 )

NFS在传输数据时使用的端口会随机选择。那么就需要RPC

NFS软件列表:

nfs-utils  #NFS服务的主程序
rpcbind #RPC的主程序
安装:yum install  nfs-utils rpcbind -y  (服务端必须安装,客户端强烈建议安装)
检查:rpm -aq nfs-utils rpcbind

1.1 NFS工作原理流程图:

NFS服务端,首先要先启动RPC服务,在启动NFS服务,NFS服务会自动向RPC服务注册启动的端口,客户端需要通过自身的RPC服务,来向NFS服务端的RPC获取NFS的端口号,然后客户端在通过得到的端口号,单独向NFS发起TCP建立。

file:///Users/xiongminghao/Library/Mobile%20Documents/iCloud~com~coderforart~iOS~MWeb/Documents/mweb_documents_library/docs/media/15413998107562/15414008422850.jpg

1.2 NFS共享目录
NFS共享的目录:必须是实际存在的目录,要用绝对路径,注意共享目录的本地权限,如果需要读写共享,要让本地目录可以被NFS客户端的用户(nfsnobody)读写

NFS客户端地址:为NFS服务端授权的可以访问共享目录的NFS客户端地址,可为单独的IP地址或主机名、域名等,也可以使整个网段地址,还可以用“*”来匹配所有客户端服务器,没有对账号密码,几乎都是用IP地址,这些所谓的客户端一般来说是前端的业务服务器,
权限参数:对授权的NFS客户端的访问权限

NFS服务端默认配置文件路径/etc/exports,并且内容默认为空

[[email protected] ~]# ls -ld /etc/exports
-rw-r--r--. 1 root root 0 Jun  7  2013 /etc/exports
[[email protected] ~]# cat /etc/exports

exports配置文件的规范(两种写法):

NFS共享的目录 NFS客户端地址1(参1,参2...)客户端地址2(参1,参2...)
NFS共享的目录 NFS客户端地址1(参1,参2...)

2、NFS搭建
查看系统版本

[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[[email protected] ~]# uname -r
3.10.0-862.el7.x86_64
[[email protected] ~]# uname -m
x86_64

检查并安装nfs和rpc服务

[[email protected] /]#yum install  nfs-utils rpcbind -y
[[email protected] /]# rpm -aq nfs-utils rpcbind
rpcbind-0.2.0-44.el7.x86_64
nfs-utils-1.3.0-0.54.el7.x86_64

2.1 服务端配置
启动RPC

[[email protected] /]# systemctl start rpcbind
[[email protected] /]# systemctl status rpcbind #查看rpcbind是否正常运行
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-11-05 15:03:34 CST; 1min 0s ago
  Process: 52393 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 52394 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─52394 /sbin/rpcbind -w

Nov 05 15:03:34 nfs systemd[1]: Starting RPC bind service...
Nov 05 15:03:34 nfs systemd[1]: Started RPC bind service.
[[email protected] /]# netstat -lntup |grep rpc
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      52394/rpcbind
tcp6       0      0 :::111                  :::*                    LISTEN      52394/rpcbind
udp        0      0 0.0.0.0:841             0.0.0.0:*                           52394/rpcbind
udp        0      0 0.0.0.0:111             0.0.0.0:*                           52394/rpcbind
udp6       0      0 :::841                  :::*                                52394/rpcbind
udp6       0      0 :::111                  :::*                                52394/rpcbind

[[email protected] /]#  lsof -i :111       #111为RPC程序端口号
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 52394  rpc    6u  IPv4 100989      0t0  UDP *:sunrpc
rpcbind 52394  rpc    8u  IPv4 100991      0t0  TCP *:sunrpc (LISTEN)
rpcbind 52394  rpc    9u  IPv6 100992      0t0  UDP *:sunrpc
rpcbind 52394  rpc   11u  IPv6 100994      0t0  TCP *:sunrpc (LISTEN)

启动NFS

[[email protected] /]# systemctl start nfs
[[email protected] /]# systemctl status nfs
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
   Active: active (exited) since Mon 2018-11-05 15:08:02 CST; 3s ago
  Process: 54371 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 54366 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)
  Process: 54365 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 54371 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

Nov 05 15:08:02 nfs systemd[1]: Starting NFS server and services...
Nov 05 15:08:02 nfs systemd[1]: Started NFS server and services.

再次查看RPC端口

#当NFS启动后,NFS向rpc注册端口
[[email protected]nfs /]# netstat -lntup |grep rpc
tcp        0      0 0.0.0.0:37998           0.0.0.0:*               LISTEN      54333/rpc.statd
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      52394/rpcbind
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      54363/rpc.mountd
tcp6       0      0 :::33985                :::*                    LISTEN      54333/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      52394/rpcbind
tcp6       0      0 :::20048                :::*                    LISTEN      54363/rpc.mountd
udp        0      0 0.0.0.0:841             0.0.0.0:*                           52394/rpcbind
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           54363/rpc.mountd
udp        0      0 0.0.0.0:111             0.0.0.0:*                           52394/rpcbind
udp        0      0 0.0.0.0:45174           0.0.0.0:*                           54333/rpc.statd
udp        0      0 127.0.0.1:703           0.0.0.0:*                           54333/rpc.statd
udp6       0      0 :::45876                :::*                                54333/rpc.statd
udp6       0      0 :::841                  :::*                                52394/rpcbind
udp6       0      0 :::20048                :::*                                54363/rpc.mountd
udp6       0      0 :::111                  :::*                                52394/rpcbind  

提示:

查看nfs服务向rpc注册的端口信息
rpcinfo -p localhost

NFS常见进程讲解

[[email protected] /]#  ps -ef|egrep "rpc|nfs"
rpc       52394      1  0 15:03 ?        00:00:00 /sbin/rpcbind -w
rpcuser   54333      1  0 15:08 ?        00:00:00 /usr/sbin/rpc.statd
root      54341      2  0 15:08 ?        00:00:00 [rpciod]
root      54363      1  0 15:08 ?        00:00:00 /usr/sbin/rpc.mountd
root      54364      1  0 15:08 ?        00:00:00 /usr/sbin/rpc.idmapd
root      54373      2  0 15:08 ?        00:00:00 [nfsd4_callbacks]
root      54379      2  0 15:08 ?        00:00:00 [nfsd]
root      54380      2  0 15:08 ?        00:00:00 [nfsd]
root      54381      2  0 15:08 ?        00:00:00 [nfsd]
root      54382      2  0 15:08 ?        00:00:00 [nfsd]
root      54383      2  0 15:08 ?        00:00:00 [nfsd]
root      54384      2  0 15:08 ?        00:00:00 [nfsd]
root      54385      2  0 15:08 ?        00:00:00 [nfsd]
root      54386      2  0 15:08 ?        00:00:00 [nfsd]

nfsd(rpc.nfsd) #主进程,主要是管理客户端能否登入服务端,登入者ID判别。
mountd(rpc.mountd) #管理NFS文件系统,登入者的权限管理
rpc.lockd(非必要) #用来锁定文件,用于客户端同时写入
rpc.statd(非必要) #检查文件一致性
rpc.idmapd #名字映射后台进程

将rpcbind和nfs加入开机自启动

systemctl enable rpcbind.service
systemctl enable nfs-server.service


配置共享/data目录(编辑/etc/exports配置文件)

[[email protected] ~]# cat >>/etc/exports<<EOF
> #shared /data by jason for bingbing at 2018-08-25
> /data 172.16.1.0/24(rw,sync)
> EOF

[[email protected] ~]# cat /etc/exports
#shared /data by oldboy for bingbing at 2018-08-25
/data 172.16.1.0/24(rw,sync)

图解上述操作的意义:

提示:

必须要在NFS和RPC启动之后修改/etx/export文件

创建共享目录(客户端访问)

#创建/data目录
[[email protected] /]# mkdir /data -p
[[email protected] /]# ls -ld /data/
drwxr-xr-x 2 root root 6 Nov  5 14:31 /data/
将共享目录加入到nfs的虚拟用户和用户组
[[email protected] /]# chown -R nfsnobody.nfsnobody /data/  

#nfsnobody是nfs的虚拟用户
[[email protected] /]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

上述操作完毕后,平滑重启nfs

[[email protected] /]# systemctl reload nfs


使用nfs自带的showmount,测试nfs是否共享成功

#测试NFS目录是否共享成功
#在nfs端本地测试
[[email protected] /]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24
#可以-e指定nfs端地址
[[email protected] /]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

nfs端自己挂载自己的/data目录(可忽略)

[[email protected] /]# mount -t nfs 172.16.1.31:/data /mnt/
mount.nfs: /mnt is busy or already mounted
[[email protected] /]# df -h |grep mnt
172.16.1.31:/data         22G  1.7G   21G   8% /mnt #挂摘成功
[[email protected] /]# umount /mnt/ #测试完成后,记得卸载

提示:

测试nfs共享目录,使用showmount命令即可
umount /mnt -lf 可强制卸载

2.2 客户端配置
安装nfs和rpc(rpc必须安装,nfs需要使用到自带的一些工具,所以两者都装)

[[email protected] ~]# yum isntall nfs-utils rpcbind -y
[[email protected] ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.3.0-0.54.el7.x86_64
rpcbind-0.2.0-44.el7.x86_64

启动rpc,并加入开机自启动

[[email protected] ~]# systemctl start rpcbind #启动rpc
[[email protected] ~]# systemctl status rpcbind #查看rpc状态
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-11-05 15:39:55 CST; 4s ago
  Process: 17432 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 17433 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─17433 /sbin/rpcbind -w

Nov 05 15:39:55 web01 systemd[1]: Starting RPC bind service...
Nov 05 15:39:55 web01 systemd[1]: Started RPC bind service.
[[email protected] ~]# systemctl enable rpcbind.service #开机自启动

测试挂载

[[email protected] ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24  #共享目录没问题
[[email protected] ~]# telnet 172.16.1.31 111
Trying 172.16.1.31...
Connected to 172.16.1.31. #连接到对端rpc也没问题
Escape character is ‘^]‘.

将客户端的/mnt目录挂载到nfs服务端

[[email protected] ~]# mount -t nfs 172.16.1.31:/data /mnt/
[[email protected] ~]# df -h |grep mnt
172.16.1.31:/data         22G  1.7G   21G   8% /mnt
#挂载完成

在挂载目录/mnt下创建文件,然后在nfs服务端查看

#客户端创建文件
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# touch test.txt
[[email protected] mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 Nov  5 16:05 test.txt
#服务端查看
[[email protected] /]# cd /data/
[[email protected] data]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 Nov  5 16:05 test.txt
注:当客户端访问/nmt的时候,相当于是在访问172.16.1.31这个NFS服务端的/data目录

实现开机自动挂载

[[email protected] /]# echo "mount -t nfs 172.16.1.31:/data /mnt/" >>/etc/rc.local
[[email protected] /]# tail -1 /etc/rc.local
mount -t nfs 172.16.1.31:/data /mnt/

提示:

也可以放入/etc/fatab,需要注意一些情况
NFS网络文件系统最好不要放到fstab里实现开机挂载,
但如果在开机自启动服务里设置并启动了netfs服务,放入fastb里也是可
以开机挂载的

原文地址:http://blog.51cto.com/12643266/2313799

时间: 2024-07-30 04:04:57

Web集群之NFS(网络文件系统)的相关文章

Web集群部署(Nginx+Keepalived+Varnish+LAMP+NFS)

Web集群部署(Nginx+Keepalived+Varnish+LAMP+NFS)  一.服务介绍   1.1 Nginx服务 Nginx是一个高性能的HTTP和反向代理服务器,也是一个支持IMAP/POP3/SMTP的代理服务器.Nginx即支持Web服务正向代理,也支持反向代理,尤其是反向代理功能十分强大.Nginx支持缓存功能,负载均衡,FASTCGI协议,支持第三方模块.时下Nginx的Web反向代理功能非常流行.   1.2 Keepalived     Keepalived见名知意

web集群综合项目keepalived+lvs+lamp+nfs+mysql

web集群综合项目 实验描述: 在此项目中,为了使公司内部的web站点提供更稳定的服务,搭建负载均衡群集以及故障转移群集,具体拓扑环境如下: 实验环境: 主机 Ip地址 软件 主调度器 192.168.100.150 kernel-devel openssl-devel popt-devel  ipvsadm keepalived-1.2.13.tar.gz 从调度器 192.168.100.151 kernel-devel openssl-devel popt-devel  ipvsadm k

Linux网络服务--LAMP+Nginx+Squid搭建web集群

一.         项目名称         LAMP+Nginx+Squid搭建web集群环境 二.         项目拓扑 三.         项目描述 3.1 项目环境 某部队为了满足信息化政治工作建设需要,用以丰富官兵日常生活内容,活化教育形式,更好的建设部队人文环境,准备架设部队内部的网站服务器,并申请使用军内公网IP:1.1.1.1 基于以上情况为该部提出以下解决方案.   3.2 实施方案 3.2.1  服务器操作系统与软件版本选择 操作系统选择RedHat企业版5.10:

heartbeat httpd nfs 实现高可用web集群

一 环境准备 二 拓扑结构 三 前提条件 四 安装相关软件 五 配置heartbeat 六 测试web集群 七 问题汇总 八 共享存储 一 环境准备 操作系统 centos 6.4 x86_64 最小化安装 如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X YUM 安装 Vim man ntp "development tools" "server platform development" "des

Web集群实现共享存储的架构演变及MogileFS

本篇博客从Web集群中亟需解决的大容量存储问题引入,分析了几类常用的共享存储架构,重点解析了分布式存储系统的原理及配置实现: =================================================================== 1 共享存储的架构演变 2 分布式存储系统 2.1 基础知识 2.2 分类 2.3 CAP理论 2.4 协议 3 MogileFS 3.1 特性 3.2 架构 3.3 组成 3.4 服务安装及启动 3.5 配置部署 3.6 配置前端代理N

RHCS+Conga+GFS+cLVM共享存储的高可用性web集群

一.RHCS简介: RHCS是Red Hat ClusterSuite的缩写. RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久.稳定的提供服务,同时也保证了后端数据存储的安全. RHCS集群的组成: RHCS是一个集群套件,其主要包括以下几部分: 1.集群构架管理器:RHCS的基础套件,提供集群的基本功能,主要包括布式集群管理器(CMAN).锁管理(DLM).配置文件管理(CC

NFS(网络文件系统)

NFS(网络文件系统) 1.关于NFS介绍 1.1NFS在企业中的应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,例如:BBS产品的图片,附件,头像(注意网站BBS程序不要放NFS共享里),然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资源.NFS是当前互联网系统架构中最常用的数据存储服务之一,前面说过,中小型网站公司应用频率更高,大公司或门户除了使用NFS外,还可能会使用更为复杂的

Centos6.6 安装nfs网络文件系统

一.介绍 nfs网络文件系统的,大部分用在内网文件共享,比如,对集群上传文件做共享,经常用在图片部分,当然数据量大了还是要做分离,做为专门的接口比较好,介绍一下基本安装环境: 1)Cnetos6.6 2)nfs-utils-1.2.3 3) rpcbind-0.2.0 二.安装 yum install -y rpcbind nfs-utils 三.配置 echo "/data 192.168.19.145(rw)" >/etc/exports #指定目录 运行挂载主机 以及有哪些

corosync+pacemaker+crmsh的高可用web集群的实现

网络规划: node1:eth0:172.16.31.10/16 node2: eth0: 172.16.31.11/16 nfs:   eth0: 172.16.31.12/15 注: nfs在提供NFS服务的同时是一台NTP服务器,可以让node1和node2同步时间的. node1和node2之间心跳信息传递依靠eth0传递 web服务器的VIP是172.16.31.166/16 架构图:跟前文的架构一样,只是节点上安装的高可用软件不一致: 一.高可用集群构建的前提条件 1.主机名互相解析