需求,把多台服务器组成一个cluster(SGE),把一台电脑(比如存储)的home文件件共享给其他服务器(NFS),共用一个home文件夹,并进行用户的统一管理(NIS)。
操作系统为操作系统:CentOS,用virtual box虚拟出来的系统做测试。
server端:10.0.2.5
client或compute端:在同样网段
![](/wp/f4w/2020
/2019-05-02-NSF-SGE-NIS.png)
1,NFS共享存储
通过nfs,实现每台服务器都有同样的路径和文件,便于后续集群管理。这里共享两个路径,一个是server端的/home路径,实现每个服务器都有同样的家目录,一个是/opt/gridengine用于安装SGE。
1.1 Server端:
安装相关软件,NFS的端口是不固定的(因此如果客户端连不上的时候,往往需要iptables -F清理一下),客户端要准确的获得NFS服务器所使用的端口,就需要RPC服务。RPC最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,让客户端可以链接到正确的端口上去,从而实现数据传输。
1
|
yum install nfs-utils rpcbind
|
开机启动rpcbind
1
|
systemctl enable rpcbind.service
|
开启rpcbind
1
|
systemctl start rpcbind.service
|
设置要共享的目录
1
2
3
4
|
mkdir /opt/gridengine
vi /etc/exports
/home 10.0.2.0/255.255.255.0(rw,sync)
/opt/gridengine 10.0.2.0/255.255.255.0(rw,sync)
|
nfs开机启动和开启服务
1
2
|
systemctl enable nfs
systemctl start nfs
|
生效export
1.2 客户端:
1
2
3
4
5
|
yum install nfs-utils rpcbind
systemctl enable rpcbind.service
systemctl restart rpcbind.service
systemctl enable nfs
systemctl start nfs
|
设置自动挂载,用tab分割,不是空格
1
2
3
4
|
mkdir /opt/gridengine
vi /etc/fstab
10.0.2.5:/home /home nfs defaults 0 0
10.0.2.5:/opt/gridengine /opt/gridengine nfs defaults 0 0
|
挂载
这样的话,客户端服务器的home目录都是server端的home家目录。
通过NIS实现帐号的统一权限管理和认证,避免在多台服务器上重复开设帐号
2.1 Server端:
安装相关库
1
|
yum -y install ypserv,ypbind,yp-tools,rpcbind
|
配置NIS domain,增加NISDOMAIN和启用的端口
1
2
3
|
vi /etc/sysconfig/network
NISDOMAIN=yourdomain
YPSERV_ARGS="-p 1011"
|
增加开机自动加入NIS域
1
2
|
vi /etc/rc.d/rc.local
/bin/nisdomainname yourdomain
|
设置NIS服务器访问权限
编辑NIS配置文件,允许特定的主机访问NIS服务器,可以是特定ip,也可以是特定网段,比如下面是2段的
1
2
|
vi /etc/ypserv.conf
10.0.2.0/255.255.255.0 : * : * : none
|
让yppasswdd启动在固定端口,方便防火墙管理
1
2
|
vi /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012"
|
设置开机启动和启动服务,先启动rpcbind再启动ypserv
1
2
3
4
5
|
systemctl enable rpcbind
systemctl enable ypserv
systemctl enable yppasswdd.service
systemctl start rpcbind
systemctl start ypserv
|
建立数据库,将nis服务器端的用户信息导入,当用户信息更新时,也需重新执行该命令更新数据库
1
|
/usr/lib64/yp/ypinit -m
|
在server 端新增账号或者删除账号或者修改账号信息后,更新NIS账户和资料库
1
2
|
make -C /var/yp
make -C /var/yp passwd
|
2.2 客户端
安装NIS相关库
1
|
yum -y install ypbind yp-tools
|
在网络项加入NIS域
1
2
3
|
vi /etc/sysconfig/network
NISDOMAIN=yourdomain
YPSERV_ARGS="-p 1011"
|
开机自动加入NIS域
1
2
|
vi /etc/rc.d/rc.local
/bin/nisdomainname yourdomain
|
修改用户密码的认证顺序文件,用于管理系统中多个配置文件查找的顺序
1
2
3
4
5
6
7
8
|
vi /etc/nsswitch.conf
...
passwd: files nis sss
shadow: files nis sss
group: files nis sss
...
hosts: files nis dns
...
|
修改客户端配置文件,输入NIS服务器信息
1
2
|
vi /etc/yp.conf
domain yourdomain server 10.0.2.5
|
修改系统认证文件,启用nis
1
2
|
vi /etc/sysconfig/authconfig
USENIS=yes
|
设置PAM授权,添加nis
1
2
|
vi /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
|
开机启动和启用服务
1
2
3
4
|
systemctl enable ypbind
systemctl enable rpcbind
systemctl start ypbind
systemctl start rpcbind
|
ypbind启动不起来的时候,用systemctl status ypbind发现nis server 没反应
server和client端用iptables -F清理一下
此时,可以在client端su切换成server端的其他账号,而本地并没有创建这个帐号
3, SGE Cluster
组成集群,便于分布式计算和任务调度。这个sge是son grid engine,在oracle关闭grid engine项目之后的继续维护项目,但现在也好久没更新了。
SGE安装包下载地址:
https://arc.liv.ac.uk/trac/SGE
https://arc.liv.ac.uk/downloads/SGE/releases/
3.1 server端:主控节点,qmaster节点
修改hostname
1
|
hostnamectl set-hostname qmaster.local
|
修改hosts文件,添加主控节点和两个计算节点信息
1
2
3
4
|
vi /etc/hosts
10.0.2.5 qmaster.local qmaster
10.0.2.7 compute01.local compute01
10.0.2.8 compute02.local compute02
|
设置SGE_ROOT环境变量,并生效
1
2
3
4
5
6
|
vi /etc/profile
/etc/profile
export SGE_ROOT=/opt/gridengine
export PATH="${SGE_ROOT}/bin/lx-amd64:$PATH"
source /etc/profile
|
命令行执行,安装相关库
1
2
|
yum -y install epel-release
yum -y install jemalloc-devel openssl-devel ncurses-devel pam-devel libXmu-devel hwloc-devel hwloc hwloc-libs java-devel javacc ant-junit libdb-devel motif-devel csh ksh xterm db4-utils perl-XML-Simple perl-Env xorg-x11-fonts-ISO8859-1-100dpi xorg-x11-fonts-ISO8859-1-75dpi
|
添加sgeadmin用户组,及sgeadmin用户
1
2
|
groupadd -g 490 sgeadmin
useradd -u 495 -g 490 -m -d /home/sgeadmin -s /bin/bash -c "SGE Admin" sgeadmin
|
修改sudo文件,添加一行配置添加sgeadmin用户
1
2
|
visudo
%sgeadmin ALL=(ALL) NOPASSWD: ALL
|
下载并编译SGE,no java避免java带来的错误
1
2
3
4
5
6
7
|
wget https://arc.liv.ac.uk/downloads/SGE/releases/8.1.9/sge-8.1.9.tar.gz
tar -zxvf sge-8.1.9.tar.gz
cd sge-8.1.9/source/
sh scripts/bootstrap.sh -no-java -no-jni && ./aimk -no-java -no-jni
export SGE_ROOT=/opt/gridengine && mkdir $SGE_ROOT
echo Y ' ./scripts/distinst -local -allall -libs -noexit
chown -R sgeadmin.sgeadmin /opt/gridengine
|
安装SGE qmaster节点
1
2
|
cd $SGE_ROOT
./install_qmaster
|
3.2计算节点
安装相关库
1
|
yum -y install hwloc-devel
|
修改hostname
1
|
hostnamectl set-hostname compute01.local
|
修改hosts文件,添加主控节点和两个计算节点信息
1
2
3
4
|
vi /etc/hosts
10.0.2.5 qmaster.local qmaster
10.0.2.7 compute01.local compute01
10.0.2.8 compute02.local compute02
|
或者scp把qmaster上hosts复制/etc/
添加sgeadmin用户组,添加sgeadmin用户
1
2
|
groupadd -g 490 sgeadmin
useradd -u 495 -g 490 -r -s /bin/bash -c "SGE Admin" sgeadmin
|
设置SGE_ROOT环境变量,并生效
1
2
3
4
5
6
|
vi /etc/profile
/etc/profile
export SGE_ROOT=/opt/gridengine
export PATH="${SGE_ROOT}/bin/lx-amd64:$PATH"
source /etc/profile
|
安装计算节点
1
2
3
4
|
cd $SGE_ROOT
./install_execd
cp /opt/gridengine/default/common/settings.sh /etc/profile.d/
source /etc/profile.d/settings.sh
|
如果报neither submit or admin host,则在qmaster上将这台电脑加为admin host或者submit host
qconf -ah compute01
启动计算节点
1
|
$SGE_ROOT/default/common/sgeexecd
|
这样的话,在qmaster用qhost就能看到每个计算节点的资源了,用qsub命令可以提交相关任务,有SGE负责管理计算资源。
参考:https://github.com/wangkaisine/SGE-On-CentOS
http://www.178pt.com/32.html
https://blog.csdn.net/younger_china/article/details/53130780
http://blog.sina.com.cn/s/blog_64aac6750101gwst.html
![](/wp/f4w/2020
/2019-05-02-NSF-SGE-NIS.png)
#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
####################################################################