背景\需求: 在三台RedHat 7服务器上部署ArcServer集群,为了让三台机器可以加入同一个站点之中,需要将其中的/home/arcgis/arcgis/server/usr/config-store 和/home/arcgis/arcgis/server/usr/directories 目录共享出来,使得三台机器均可以利用该路径访问文件。(个人工作需求,各位不必去搜索 什么是ArcGIS集群)
服务器设备:
192.168.15.101 master NFS Client端
192.168.15.102 slave1 NFS Client端
192.168.15.103 slave2 NFS Server端
步聚:
一、 部署NFS Server端
nfs 包含下面两个服务
nfs-utils:包括基本的NFS命令与监控程序
rpcbind :支持安全NFS RPC服务的连接
1.1 安装 需要的软件包nfs-utils 和
rpcbind :
yum install rpcbind nfs-utils
-y
或 yum install nfs* -y (实测,这个命令安装的软件包更全,但也会安装很多不知道用途的包)
检查: 执行rpm -qa nfs 和 rpm -qa rpcbind
1.2 查看nfs服务的配置文件
rpm -qc
nfs-utils
1.3 编辑nfs主配置文件/etc/exports
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exports文件格式为
<输出目录>
[客户端1选项(访问权限,用户映射,其他)]
[客户端2选项(访问权限,用户映射,其他)]
结合文件内容解释如下:
/home/.... 输出目录,即NFS服务端要共享的目录
192.168.15.0/24 客户端IP地址,即共享给15网段的其他主机
其他常用的客户端地址
指定ip地址的主机:
192.168.0.200
指定子网中的所有主机:
192.168.0.0
/
24
192.168.0.0
/
255.255.255.0
指定域名的主机:nfs.cnhzz.com
指定域中的所有主机:*.cnhzz.com
所有主机:*
(rw,sync,no_root_squash) 选项用来设置输出目录的访问权限、用户映射等。
NFS主要有
3
类选项:
1
)访问权限选项
设置输出目录只读:ro
设置输出目录读写:rw
2
)用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
3
)其它选项
secure:限制客户端只能从小于
1024
的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于
1024
的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree_check:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree_check:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.4 执行 service nfs restart,配置完成后重启nfs服务
注意: rpcbind和nfs在安装的时候会默认开启,但如果是手动开启,则 rpcbind服务启动必须在nfs之前,才能保证nfs正确注册在rpcbind中。
利用rpcinfo -p localhost命令,也可以看到nfs注册是否成功:
当nfs服务未启动或 未注册成功时,执行结果如下:
当nfs 正确启动且 成功注册到rpbind时,执行结果如下:
1.5 查看共享目录是否成功
showmount -e
192.168
.
15.103
或者使用 exportfs
二、 部署NFS Client端
2.1 同样安装nfs-utils 和
rpcbind (参照1.1中的方法)
2.2 执行挂载 mount -t nfs 192.168.15.103:/home/arcgis/arcgis/server/usr/config-store /home/arcgis/arcgis/server/usr/config-store
mount -t nfs 192.168.15.103:/home/arcgis/arcgis/server/usr/directories /home/arcgis/arcgis/server/usr/directories
(客户端主机也需要有相同目录,目录文件夹所有者与服务端保持一致,执行权限赋予777)
验证一:挂载成功后,向该文件夹中写入文件,在切换到另一台机器中查看是否同步,文件同步则说明共享成功
验证二: 执行df -h,查看是否挂载成功
三、设置开机启动和自动挂载
方法一:
网上的教程中,安装完成之后在/etc/init.d/文件夹下 会生成相应的nfs和rpcbind文件,这时候就可以直接使用
chkconfig rpcbind on
chkconfig nfs on
修改 /etc/fstab文件,添加如下内容 实现永久挂载
192.168.15.103:/usr/ArcGISConfigStore /usr/ArcGISConfigStore nfs defaults 0 0
方法二:
我在安装的时候发现,服务与软件都是正常的,但是在/etc/init.d/并没有相关文件,使用chkconfig并不能直接启动服务开机启动,且编辑fstab文件,会使主机开机时,自动检测挂载nfs文件,拖慢开机速度,如果nfs服务器主机未开启,可能出现未知问题(之前遇到过fstab中默认挂载硬盘后,系统无法启动),所以我一般采用自己编写启动脚本进行挂载的方式,等到服务器系统启动起来之后,再执行挂载命令。
其具体做法是:
1.在/etc/init.d/ 目录下,新建脚本auto_Configuration.sh,脚本内容如下():
///////////////////////////////////////////////////15.103 nfs服务器端///////////////////////////////////////////////////
#!/bin/sh
#chkconfig:2345 80 90
#description:Start Server rpcbind
service rpcbinds start
#description:Start Server nfs
service nfs start
///////////////////////////////////////////////////15.101/102 nfs客户端端///////////////////////////////////////////////////
#!/bin/sh
#chkconfig:2345 80 90
#description:Start Server rpcbind
service rpcbinds start
#description:Start Server nfs
service nfs start
#description:auto mount target folder or files
mount -t nfs 192.168.15.103:/home/arcgis/arcgis/server/usr/config-store /home/arcgis/arcgis/server/usr/config-store
mount -t nfs 192.168.15.103:/home/arcgis/arcgis/server/usr/directories /home/arcgis/arcgis/server/usr/directories
chkconfig的解释:
chkconfig有几个等级:
0:表示关机
1:表示单用户模式
2:表示无网络链接多用户命令行模式
3:表示有网络链接多用户命令行模式
4:表示不可用情况
5:表示带图形界面的多用户模式
6:表示重新启动
所以chkconfig:2345就代表在2345的等级下启动这个服务
后面的80 90分别是启动优先级和关闭优先级
为该脚本增加运行权限
chmod +x /etc/init.d/auto_Configuration.sh
执行
chkconfig --add auto_Configuration.sh
添加该脚本到启动项中即可。
执行 chkconfig 查看脚本是否增加到启动项之中