HPC集群运维总结3-用户与权限管理

[TOC]

用户与权限管理

添加用户

概览

集群默认安装了clusconf软件,厂家的马少杰经理之前写的,主要用于集群的用户添加、开关机管理、批量执行命令、批量同步命令等。还是挺不错的,但是速度比较慢。特别是同步文件的时候,如果有几个节点存在问题,可能就会卡在那里半天,而且同步过程是顺序执行的,导致速度很慢。说白了,实际上是由于在进行远程执行命令的时候,没有考虑到失败的情况,也就是说没有添加失败时延,导致操作失败的时延差不多为30s,所以如果一批节点中,有几个节点拓机或者负载太高,会导致整个操作流程延长,所以,文件同步这一点来说,还是不太灵活。而pssh这个软件就比较好,如果连接失败,马上就返回,并且所有的节点的同步操作时并行执行的,所以速度非常快。因此我们结合了clusconf的方便和pssh的速度,来进行用户的添加。

用户的添加实际上就是在管理节点添加了某一个用户,用户名存储在/etc/passwd文件,用户组信息存储在/etc/group文件,用户密码存储在/etc/shadown文件里面。实际上,添加集群用户的过程就是将这些文件复制到希望用户登录的节点上面。聪明的你应该很快就会发现,这个方式有几个弊端。

  • 每次添加用户,都需要进行文件的同步。
  • 一旦添加新用户,原有用户也可以登录新用户分配的节点。
  • 某些节点更换操作系统后,直接复制这些文件会导致该节点不可用。
  • 某个用户在管理节点或者部分节点更新密码,其他节点的密码也需要同步更新。
  • 其他未提及的弊端。

其实有不少集群统一用户管理的方式。比如说NIS,LDAP的形式都可以很好的解决这种问题。时间关系和经历有限,所以没有部署这样的系统。

好吧,感觉有点啰嗦了。切中正题,如何添加用户。有如下两个步骤:

  • 在管理节点添加用户。
  • 同步文件到计算节点。
管理节点用户添加

集群的管理节点是node307和node308,Lustre文件系统的MDS服务器是node309和node310,NFS文件系统所在服务器是node324,所以不管用户需要使用多少节点,必须在这几个节点添加同一个用户,而且ID也必须是一样的,这样用户才可以在计算节点访问分布式文件系统和NFS文件系统。具体添加命令如下:

1
2
clusconf -p node -n `seq 307 310` 324 -ua tom
#假设用户名是tom

同步用户信息文件

使用pssh软件来同步用户信息文件,主要是/etc/passwd和/etc/shadown文件。
前提条件是管理节点安装了基于Python的PSSH软件。执行如下命令同步这几个文件。

1
2
3
pscp -h node-list /etc/passwd /etc/
pscp -h node-list /etc/shadow /etc/
pscp -h node-list /etc/group /etc/

简要介绍一下pscp命令的使用吧。
-h选项后面跟着的就是包含了计算节点或者分配给用户的节点主机名或者IP地址的文件。文件的内容可能是如下形式。

1
2
3
node1
node2
node3

也可以是IP地址的形式

1
2
3
172.17.0.1
172.17.0.2
172.17.0.3

当然,也可以是主机和IP地址混合的形式:

1
2
3
node1
172.17.0.2
node3

根据具体情况来定吧。我一般是使用一个脚本来生成这样的主机名文件。参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash
# 生成节点列表,根绝给定的起止号以及保存的文件名。
# $1起始编号
# $2终止编号
# $3保存文件名

start=0;
end=1;
if [ $1 ]
then
start=$1;
fi;

if [ $2 ]
then
end=$2;
fi;

filename=$start-$end-node-list;
if [ $3 ]
then
filename=$3;
fi;

for i in `seq $start $end`
do
echo node$i >> $filename;
done;

echo "nodelist from $start to $end is saved in $filename";

pscp后面跟着两个文件或者目录,第一个是源目录或者源文件,第二个是目标目录和目标文件。
pscp命令的help信息如下:

1
pscp  [-vAr]  [-h  hosts_file]  [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote

默认情况下,这个同步的过程是非常快的,基本上是1-2s就可以搞定了。

一步到位的添加方法

如果分配给用户的节点不是很多的话, 使用上面的方式可能比较麻烦,这个时候,可使用集群默认的clusconf软件,可以用于用户的管理工作,常用的命令如下,例如说来了一个新的用户tom,需要给tom分配几个节点,比如说是100,101,105,106,107,下面简单介绍使用clusconf命令在以上节点添加用户tom。

1
clusconf -p node -n `seq 307 310` 100 101 `seq 105 107` -ua tom

-p node是指节点主机名的前缀,例如说node1的前缀是node,这个是固定写法。
-n 选项指定要进行操作的节点编号,无论用户分配哪些节点给用户,以下节点必须包含在里面,307和308节点是集群的入口节点,只有这两个节点才能登陆到集群,309和310是Lustre文件系统的元数据#服务器,如果没有在这两个节点添加用户,那么用户将无法登录到集群使用文件系统,很可能导致卡住。因此在进行添加用户时,一定要添加seq 307 310这句。其他节点的编号,可以使用seq startindex endindex方法进行生成,前提是节点编号连续。当节点编号不连续时,可以依次输入节点编号,空格分开。-ua tom的意思是添加用户tom,ua即useradd的意思

由于目前仅仅使用clusconf的用户添加功能,所以只能介绍到这里,下面附上一个clusconf的使用教程,需要了解可以详细阅读。clusconf1.4使用手册

权限管理

root权限管理

遵循最小化权限配置原则。尽量不给root权限。如果是普通的刀片节点,可以给root权限。
GPU节点,尽量不给,因为环境的恢复过程非常复杂,少则半天到一天,多则2-3天。

ZHANGCHI wechat
关注微信号进一步交流