公网nfs配置踩坑
背景
最近需要迁移一个老的单体项目到私有云环境做集群,之前的上传文件都是直接存储在磁盘上,而且体积超大,而且项目架构又从单体过渡到多个实例集群。为了能够读取到之前的上传文件,采用nfs将原先服务器上存储文件的路径挂载到新的私有云环境的多个集群服务器上。网上有很多关于nfs的配置讲解,但是大多是局域网。我这里因为两个环境都是独立封闭,只通过堡垒机提供外部访问,因此需要配置公网的nfs,踩了不少坑。在这里总结一下相关经验。
安装nfs
安装的过程实际上很简单。我参考的这篇博客
Centos7 NFS服务的安装以及使用
唯一值得注意的是,私有云环境不能用yum,因此我是上传的多个rpm包来手动执行的安装,这里是参考的这篇博客nfs无网络条件rpm安装
如果需要nfs的整合rpm包的话,可以发邮件给我
配置
配置这里是踩坑最多的地方,内网的环境下大可以关闭防火墙,而外网环境下不可能对外暴漏所有的端口,因此要搞明白nfs到底配置那些端口开放才能让客户端成功挂载。我这里也是和同事不断的查资料,并且试错最后才成功的。👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻
服务端还要额外配置5个端口
# 修改 |
服务端配置了导出路径(上面的博客里有)
服务端,客户端开启nfs
systemctl enable rpcbind.service |
服务端的堡垒机配置开放端口
- PortMap 111(tcp,udp)
- 业务监听端口2049(tcp,udp)
- 挂载的监听端口2050(tcp,udp)
- 挂载端口4001(tcp,udp)
- 上面额外配置剩下的4个建议也都开了
客户端检查rpc状态
rpcinfo -p 10.10.52.140 |
出现以下结果证明没问题
program vers proto port |
客户端检查目录共享状态
showmount -e 10.10.52.140 |
出现以下结果证明没问题
Exports list on 10.10.52.140: |
如果报错,那么就检查还有哪些端口未正确开放
挂载
mkdir -p /nfs/gwxj |
成功,可以在客户端和服务端分别创建修改文件测试一下
端口替换
如果不想使用默认的端口2049,可以自己指定端口。
vim /etc/sysconfig/nfs |
在最后追加一行
RPCNFSDARGS="-p 12049" |
然后依次重启rpc和nfs
systemctl restart rpcbind.service |
修改堡垒机的端口映射,注意,内网和公网端口必须一致,否则挂载不上
内网12049:公网12049
客户端挂载
mount -t nfs -o nolock,vers=3,port=12049 10.10.52.140:/data/hdt2 /data/hdt2 |
成功だぜ、(o゜▽゜)o☆[BINGO!]
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment