搭建 NFS 服务 & 实时同步
今日内容
- NFS简介
- 实现 NFS 文件同步功能
- NFS 配置详解
- 统一用户
- 搭建 web 服务
- NFS 实现文件共享
内容详细
1、NFS 简介
1.1 介绍
实现多台 web 服务器可以共享数据资源,只需要把各个 web 服务器的数据存储独立出来,存放在一个 NFS 服务器中,web 服务器需要资源时访问 NFS 获取即可
NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph
1.2 NFS 应用
1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取
2、实现 NFS 文件同步功能
2.1 服务端
安装 nfs-utils 和 rpcbind
	yum install nfs-utils rpcbind -y
修改配置文件,配置挂载点(/etc/exports)
	vim /etc/exports
	[挂载点] [允许访问的客户端网段]([权限])
	/web/nfs1 172.16.1.0/20(rw,all_sqush,sync)
创建挂载点
	mkdir -p /web/nfs{1..9}
给挂载点授权(修改属主和属组)
# 因为参数 all_squash,无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
所以使用 nfsnobody
	chown -R nfsnobody.nfsnobody /web
关闭防火墙
	setenforce 0
	systemctl disable --now firewolld
启动 NFS 和 rpcbind 服务
	systemctl start nfs-server
	systemctl start rpcbind
测试服务端是否正常
	showmount -e [服务端的地址,默认是本机地址]
[root@nfs web]# showmount -e
Export list for nfs:
/web/upload 172.16.1.0/20
记得格式化挂载点
	mkfs.xfs /web/nfs1
2.2 客户端
安装 nfs-utils
	yum install nfs-utils -y
注意	: 客户端和服务端都需要安装 nfs-utils
创建目录
	mkdir /web/nfs
挂载 NFS
	mount -t nfs 172.16.1.31:/web/nfs1 /web/nfs
-t	: 指定是挂载 nfs 类型
注意	: 在进行挂载之前要格式化 nfs 的挂载点
测试 NFS 同步功能
在 web01 中的挂载目录 /web/nfs 中创建文件
查看 nfs 挂载点中是否同步了数据


3、NFS配置详解
| nfs共享参数 | 参数作用 | 
|---|---|
| rw | 读写权限 (常用) | 
| ro | 只读权限 (不常用) | 
| root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用) | 
| no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用) | 
| all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用) | 
| no_all_squash | 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用) | 
| sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用) | 
| async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用) | 
| anonuid | 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用) | 
| anongid | 配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用) | 
3.1、控制读写
	rw、ro
3.2、控制文件权限
	root_squash
    no_root_squash
    all_squash
    no_all_squash
3.3、控制写模式
	sync
	async
3.4、控制用户
    anonuid
    anongid
4、统一用户
解释
为了使得 nfs 服务端中的文件所有客户端机子都方便读取
显然文件的属组和属主不一样是非常不方便的
可以把服务端中的所有挂载点文件都改为统一用户和用户组 www,每个客户端创建和访问数据文件都需要使用 www 用户,这样方便每个客户端机子对公共数据的存取
4.1 在 nfs 服务端创建 www 系统用户
	groupadd www -g 666
	useradd www -u 666 -g 666 -M -r -s /sbin/nologin
4.2 授权挂载点(修改属组和属主)
	chown -R www.www /web
4.3 修改挂载点配置文件
 vim /etc/exports
 /web/nfs1 172.16.1.0/20(rw,all_squash,sync,anonuid=666,anongid=666)
4.4 重启 nfs-server 和 rpcbind
  systemctl restart nfs-server
  systemctl restart rpcbind
4.5 在客户端 web01 中重新挂载
[root@web01 ~]# umount /web/nfs
[root@web01 ~]# mount -t nfs 172.16.1.31:/web/nfs1 /web/nfs
4.6 测试

5、搭建 WEB 服务(在客户端 web 上)
5.1 安装 web 软件
	yum -y httpd php php-devel
5.2 将代码上传至网站的根目录
# 下载好 web 软件之后会自动生成网站根目录 /var/www
	cd /var/www/html
解压代码文件
	unzip xxx
上传网页代码
# 创建 html 目录下 的 upload 文件夹,接收上传的文件
5.3 给根目录授权(修改属组属主)
	chown -R www.www /var/www/html
5.4 关闭selinux和防火墙
    setenforce 0
    systemctl disable --now firewalld
5.5 修改 web 软件的用户
	vim /etc/httpd/conf/httpd.conf
	User www
	Group www
# 缺失这一步,同步数据时会出错,因为原用户没有访问权限
5.6 启动 web 软件
	systemctl start httpd
5.7 测试
用什么 IP 操作 web 的,就用什么 IP 登录,我用公网 IP 
	访问
    http://192.168.15.7/upload/1_linux.jpg
# 注意 : 要在根目录 /var/www/html 目录中添加文件夹 upload 文件夹,且上传的文件要命名为 1_xxx


6、web 服务搭建 配合 NFS 实现文件共享
服务端
6.1 修改配置文件
	vim /etc/exports
	/web/upload 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
要新建一个挂载点来存放 web 上传的文件
6.2 新建挂载点
	mkdir /web/upload
	chown www.www /web/upload
6.3 重新启动 nfs 软件
	systemctl restart nfs-server rpcbind
客户端
6.4 安装 启动 httpd 与修改其配置
# 所有客户端机子都要安装 web 服务软件,修改其用户名为 www ,并创建好 www 系统用户
[root@web03 conf]# groupadd www -g 666
[root@web03 conf]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web02 html]# vim /etc/httpd/conf/httpd.conf
User www
Group www
[root@web02 html]# systemctl start httpd
6.5 在所有客户端都装上 NFS 软件
# 注意 : 如果挂载不了,应该是客户端没有下载 NFS 软件
	yum -y install nfs-utils
6.6 挂载
	mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
6.7 测试
在不同服务器(客户端)中上传的图片,每一个不同的客户端都能共享,查找得到,实现了资源同步共享


还可以玩游戏

搭建 NFS 服务 & 实时同步的更多相关文章
- Linux搭建NFS服务
		一.NFS服务简单介绍 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中, ... 
- 搭建NFS服务
		说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建yum仓库的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件版本和主 ... 
- Linux(10):期中架构(2)--- NFS存储服务 & 实时同步
		1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2. ... 
- nfs存储服务实时同步
		一.NFS简介 NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源.将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地 ... 
- 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)
		先配置好epel源 [root@node3 ~]#yum install epel-release -y 关闭防火墙和selinux [root@node3 ~]#iptables -F [root@ ... 
- centos7下搭建nfs服务
		现在有3台服务器 s1(主),s2(从), s3(从)需要实现文件实时同步,我们可以安装Nfs服务端和客户端来实现! 一.安装 NFS 服务器所需的软件包: yum install -y nfs-ut ... 
- NFS+inotify实时同步
		Inotify简介 Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问.修改.删除等各种变化情况并将其作为事件通告给用户态应用程序.Linux内核从2.6.13版本后已经集成了 ... 
- centos7搭建NFS服务
		服务器端 139.155.90.78 客户端 192.168.198.146 先查看自己的系统有没有安装rpcbind 和nfs-utils rpm -qa nfs-utils rpcbind 若使 ... 
- Linux_搭建NFS服务(基础)
		[RHEL8]-NFSserver :[Centos7]-NFSclient !!!测试环境我们首关闭防火墙和selinux(NFSserver和NFSclient都需要) [root@localho ... 
随机推荐
- js 关于replace() 的使用心得
			1.前言 我想把一段话 let a = "抱歉,您当前的主治医生有紧急情况不得不下班,您的预约将由<br>医生:里斯<br>为您就诊,<br>诊室位置:门 ... 
- ES6常用知识点
			一.变量 var:定义的变量有时候会成为全局变量 let:定义的变量严格,只在代码块内有效 const:声明的变量是常量,不能被修改 二.数据类型 字符串 @定义:~字符串定义标记,支持换行. #常 ... 
- Amazon EKS 中 EFS 持久性存储
			作者:SRE运维博客 博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/220110850573/ 相关话题:https://www ... 
- sql解除死锁
			select spIdfrom master..SysProcesseswhere db_Name(dbID) = 'Tb_axxxxx'and spId <> @@SpIdand dbI ... 
- 带你读AI论文丨RAID2020 Cyber Threat Intelligence Modeling GCN
			摘要:本文提出了基于异构信息网络(HIN, Heterogeneous Information Network)的网络威胁情报框架--HINTI,旨在建模异构IOCs之间的相互依赖关系,以量化其相关性 ... 
- [STM32F10x] 利用定时器测量频率
			硬件:STM32F103C8T6 平台:ARM-MDk V5.11 原理 利用STM32F10x的定时器的捕获(Capture)单元测量输入信号的频率. 基本原理是通过两次捕获达到的计数器的差值,来计 ... 
- 【刷题-LeetCode】200 Number of Islands
			Number of Islands Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. ... 
- Android开发 定时任务清理数据
			原文地址:Android开发 定时任务清理数据 | Stars-One的杂货小窝 公司项目,需要整定时任务,对数据进行清理,需要在每天凌晨0:00进行数据的清理,使用了Alarm和广播的方式来实现 P ... 
- 工作自动化,替代手工操作,使用python操作MFC、windows程序
			目录 背景--为什么要自动化操作? 方法--怎么实现自动化操作? 查找窗体 发送消息 获取文本 总结 背景--为什么要自动化操作? 工作中总是遇到反复重复性的工作?怎么用程序把它变成自动化操作?将程序 ... 
- 在 K8S 中快速部署 Redis Cluster & Redisinsight
			Redis Cluster 部署 使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster . helm repo add bitnami h ... 
