背景说明
在做负载均衡时有多台Web服务器提供访问服务,通过负载均衡器调度分发。但如果将网站文件都分别部署在所有Web服务器上,则需要对所有Web服务器都进行文件维护,同时需要考虑文件同步问题,这将带来极大的工作量。
解决方案可以将网站文件部署在NFS文件服务器上,多台Web挂载文件服务器的分区,这样只需维护NFS文件服务器上的网站文件即可。方便扩展Web服务器的同时,也极大降低了工作量。
本教程介绍Linux CentOS 7.x下的NFS服务端与客户端的搭建。
准备工作
Server端:文件服务器1台
Client端:WEB服务器1台或以上
Server端文件服务器部署
1、安装NFS
代码语言:javascript复制yum install nfs-utils rpcbind -y
2、将NFS和rpcbind加入开机启动
代码语言:javascript复制systemctl enable nfs
systemctl enable rpcbind
3、启动NFS和rpcbind
代码语言:javascript复制systemctl start nfs
systemctl start rpcbind
4、配置/etc/exports
注意:文件内容请根据实际情况修改,主要是web服务器的内网ip填写正确(这里的192.168.0.2与192.168.0.3表示2台Web服务器的内网IP)
代码语言:javascript复制/home/wwwroot 192.168.0.2(rw,async,root_squash) 192.168.0.3(rw,async,root_squash)
括号内参数说明:
rw 在NFS卷上同时允许读取和写入请求。 ro 在NFS卷上只允许读取请求。 sync 只有在更改已提交到稳定存储后才会对请求进行回复。 (默认) async 此选项允许NFS服务器违反NFS协议并在该请求所做的任何更改已提交到稳定存储器之前对请求进行回复。 secure 此选项要求请求源自小于IPPORT_RESERVED(1024)的 Internet端口。 (默认) insecure 此选项接受所有端口。 wdelay 如果其怀疑另一个相关的写入请求可能正在进行或可能很快到达,则延迟向磁盘提交写入请求。 (默认) no_wdelay 如果同时设置了异步,此选项不起作用。如果NFS服务器怀疑另一个相关的写入请求可能正在进行或可能很快到达,则NFS服务器通常会将写入请求延迟提交给磁盘。这允许多个写入请求提交到磁盘,其中一个操作可以提高性能。如果NFS服务器主要接收小的无关请求,这种行为实际上可能会降低性能,因此no_wdelay可用于关闭它。 no_subtree_check 此选项禁用子树检查,它具有温和的安全影响,但可以提高某些情况下的可靠性 root_squash 将请求从uid / gid 0映射到匿名uid / gid。请注意,这不适用于可能同样敏感的任何其他uid或gids,例如用户bin或组工作人员。 all_squash 将所有uids和gids映射到匿名用户。用于NFS导出的公共FTP目录,新闻spool目录等。 no_all_squash Turn off all squashing. (Default) anonuid=UID 这些选项显式设置匿名帐户的uid和gid。此选项主要适用于PC / NFS客户端,您可能希望所有请求显示为来自一个用户。例如,在下面的示例部分中考虑/ home / joe的导出条目,它将所有请求映射到uid 150。
5、检查是否生效
代码语言:javascript复制exportfs -rv #配置立即生效
showmount -e #查看NFS共享的目录
如显示类似于以下内容,表示设置成功
Export list for VM_16_4_centos:
/home/wwwroot 192.168.0.2,192.168.0.3
客户端配置
1、安装NFS
代码语言:javascript复制yum install nfs-utils rpcbind -y
2、将NFS和rpcbind加入开机启动
代码语言:javascript复制systemctl enable nfs
systemctl enable rpcbind
3、启动NFS和RPCbind
代码语言:javascript复制systemctl start nfs
systemctl start rpcbind
4、配置挂载分区/etc/fstab
注意:这里的192.168.0.1是指NFS文件服务器的内网ip, 请以实际情况为准
代码语言:javascript复制192.168.0.1:/home/wwwroot /home/wwwroot nfs defaults,_netdev 0 0
5、检查挂载
代码语言:javascript复制mount -a
df -TH
此时可以看到挂载的/home/wwwroot分区为192.168.0.1(如下所示)
192.168.0.1:/home/wwwroot nfs4 53G 1.6G 49G 4% /home/wwwroot
注意:每台web服务器都需要安装和挂载
小结
以本教程为例,文件存储在NFS文件服务器的/home/wwwroot上,而每台 web服务器已通过nfs挂载文件服务器路径,在web服务(比如apache)中直接调用/home/wwwroot地址,这样程序文件的部署和修改只需在文件服务器上操作即可。
额外说明
如NFS文件服务器开启防火墙则有可能造成Web服务器挂载失败,可关闭防火墙或做如下配置
代码语言:javascript复制firewall-cmd --add-service=nfs --permanent
firewall-cmd --reload