多节点Tomcat利用NFS实现共享目录

个人博客地址

第一步:安装NFS
1、准备(客户端和服务端)
[root@web1 ~]# cat /etc/redhat-release  # 查看系统版本
CentOS release 6.7 (Final)
[root@web1 ~]# uname -r #查看系统内核版本
2.6.32-573.el6.x86_64
[root@web1 ~]# uname -m #查看系统是否64位
x86_64
2、检测软件是否安装
[root@web1 ~]# rpm -qa nfs-utils rpcbind    #检查安装的软件包
rpcbind-0.2.0-13.el6_9.1.x86_64
nfs-utils-1.2.3-75.el6_9.x86_64

若没有安装执行以下命令进行安装:

[root@web1 ~]# yum install -y nfs-utils rpcbind #
第二步:配置NFS服务端
1、设置共享目录
[root@web1 ~]# vi /etc/exports
/home/tomcat/tomcat7/webapps/aml 172.16.69.121(rw,sync)
#为172.16.69.121读写操作source目录权限

2、参数

rw 可读可写
ro 只读
sync 数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性(适合于小文件传输
async 数据先暂时放于内存,而非直接写入硬盘,等到必要时才写入磁盘(适合于大文件传输)
no_root_squash 使用nfs时,如果用户是root,不进行权限压缩,即root用户在nfs上创建的文件 属组和属主仍然是root(不安全,不建议使用)
root_squash 使用nfs时,如果用户是root,则进行权限压缩,即把root用户在nfs上创建的文件 属组和属主修改为nfsnobody
all_squash 所有的普通用户使用nfs都将使用权限压缩,即:将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(一般均为nfsnobody)
no_all_squash 所有的普通用户使用nfs都不使用权限压缩,即:不将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(默认设置)
anonuid=XXX anon即anonymous(匿名者),前面关于*_squash提到的匿名用户的uid的设置值,通常为nobody或者nfsnobody,使用这个参数可以自行设定这个uid值,这个uid必须存在 于/etc/passwd
anongid=XXX 将远程访问的所有用户组都映身为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=XXX)
insecure 允许客户端从大于1024的TCP/IP端口连NFS服务器
secure 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
wdelay 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置)
no_wdelay 若有写操作则立即执行(应与sync配置)
subtree_check 若输出目录是一个子目录,则NFSW:务器将检查其父目录的权限(默认设置)
no_subtree_check 即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率
第三步:启动NFS

NFS启动之前需要先启动rpcbind。

#启动rpcbind
[root@web1 ~]# service rpcbind start
#启动nfs
[root@web1 ~]# service nfs start
#设置开机启动
[root@web1 ~]# chkconfig rpcbind on
[root@web1 ~]# chkconfig nfs on
[root@web1~]# lsof -i :111  #查询rpcbind监听状态 (111是rpcbind的主端口)
[root@web1~]# netstat -lntup |grep rpcbind #查询rpcbind服务启动状态 (同lsof查询端口效果一样)
root@web1~]# rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口信息
image.png

上图是未启动NFS服务的rpcbind的状态

第三步:配置客户端

1、安装nfs、rpcbind

[root@web2 ~] # yum install -y nfs-utils rpcbind #

2、挂载

[root@web2 ~] # mount -t nfs  172.16.69.120:/home/tomcat/tomcat7/webapps/aml /home/tomcat/tomcat7/webapps/aml
#查看是否已经挂载
[root@web2 ~] # df -h
[root@web2 ~] # mount
[root@web2 ~] # cat /proc/mounts
第四步:配置Tomcat
server.xml中在前添加:
     

然后访问路径就是:172.16.69.120:8080/ 你设置的路径/

遇到的问题

1、device is busy
umount卸载时候遇到device is busy

解决:杀进程

[root@web1~] # fuser -m /home/tomcat/tomcat7/webapps/aml
/home/tomcat/tomcat7/webapps/aml        10231c
[root@web1~] # kill -9 10231
[root@web1~] # umount -t nfs 172.16.69.120:/home/tomcat/tomcat7/webapps/aml

2、was not found in /proc/mounts
同样是umount时候遇到的问题

解决:umount -l来卸载

#查看异常的挂载是否存在
[root@web1~] # cat /proc/mounts
[root@web1~] # umount -l 172.16.69.120:/home/tomcat/tomcat7/webapps/aml
相关命令
[root@web1~] # service rpcbind start/stop/status        #启动/关闭/状态rpcbind
[root@web1~] # service nfs start/stop/status            #启动/关闭/状态nfs
[root@web1~] # showmount -e 127.0.0.1       #查看本机挂载情况

你可能感兴趣的:(多节点Tomcat利用NFS实现共享目录)