引子
前几天困扰我的问题终于破案了,n01节点的NIS服务挂了,导致用户engzsinger无法登录到该节点上,而提交PBS任务时,我指定的是提交到任意计算节点即#PBS -l nodes=1:ppn=24,这个设置导致默认提交到按顺序的第一个节点n01,而此时节点并没有接受任务,还处于空闲状态,所以下一个任务继续分配到这个节点上。总体表现就是大量任务阻塞,同时大量的计算节点处于空闲状态,又没有直接报错。
然而上述只是猜想,到底实情如何还需要验证。
首先使用root账户ssh登录到n01节点上,查看该计算节点上运行的服务
[root@master yp]# ssh n01
Last login: Fri Aug 29 14:40:57 2014 from master
[root@n01 ~]# ps -e | grep ypbind
[root@n01 ~]#
[root@n01 ~]# service ypbind status
ypbind is stopped
然后登录到正常节点上,查看运行的服务
[root@n01 ~]# ssh n03
Last login: Thu Aug 20 19:28:49 2020 from master
[root@n03 ~]# ps -e | grep ypbind
3851 ? 00:00:01 ypbind
可以看到n01节点上的ypbind服务停止运行,而n03节点正常
那下一步就是启动这个服务
[root@n01 ~]# service ypbind start
Starting NIS service: [ OK ]
Binding NIS service: . [ OK ]
再使用普通账户engzsinger登录到n01看是否正常
[engzsinger@master ~]$ ssh n01
Last login: Tue Aug 26 11:20:21 2014 from master
能够正常登陆,说明NIS服务能够正常运行,再看一眼队列状态
[root@master ~]# qstat
Job ID Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
82327.ILC conformation engzsinger 0 Q hpc001
82460.ILC ...mole-n01 engzsinger 0 Q hpc001
82471.ILC conformation engzsinger 165:14:1 R hpc001
此时任务82327还是没有被调度,可能是maui还没有反应过来n01节点的网络信息服务已经恢复了,那我就手动调度吧。
[root@ILC ~]# qrun 82327
[root@ILC ~]# qstat
Job ID Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
82327.ILC conformation engzsinger 0 R hpc001
82460.ILC ...mole-n01 engzsinger 0 Q hpc001
82471.ILC conformation engzsinger 165:19:5 R hpc001
ok 至此问题就解决了,至于n01节点的NIS为什么会突然挂掉,至今也没有想通,当然现在不重要了。
网络信息服务
为了解决上面的问题,在网上翻阅了不少资料,最终定位到网络信息服务(network information service–NIS),关于这个服务,从安装到配置再到实例,鸟哥都有进行了详细的介绍。这里实在没有必要重复介绍,所以只挑选其中解决PBS排队问题时我最关心的部分。
为什么要有NIS
在使用Linux时,我们需要通过账号和密码进行登录,在使用集群时,网络中有十台Linux计算机,我们希望使用相同的用户和密码登录到不同的节点上,就意味着要在每个节点上设置对应的账户和密码。如果新增一个用户或者删除一个用户,还能手动登录到不同节点上挨个设置,如果是新增一批用户呢,或者网络中的节点有一百多个,还能用这么笨的方法吗?
如果能在一台机器上设置用户信息,其他机器共享这个信息,岂不妙哉。于是就有了NIS。
NIS 的基本构架
NIS的工作模式是c/s,即客户端/服务器模式,在网络中指定一台计算机作为服务器,管理员只需维护服务器上的/etc/passwd文件,而在各客户端上的用户信息删除。服务器节点上运行ypserv服务,用来响应客户端的请求,客户端运行ypbind服务,向服务器发送查询请求。
NIS服务的基本流程
- 服务器将用户信息密码等制作成数据库文件
- 在用户信息和密码发生更改时更新数据库文件
- 客户端发生登录行为时,查询本机的
/etc/passwd、/etc/shadow文件 - 如果没有找到相关的信息,则向网络进行广播
- 服务器响应客户端的查询请求,验证登录行为
登录过程便完成了,需要保证客户端的ypbind服务和服务器的ypserv服务同时在运行,上面的问题就是其中一个节点ypbind服务挂掉导致的。
在Linux PBS集群中,由于一个节点的NIS服务停止,导致用户无法登录并造成任务调度阻塞。通过检查节点服务、启动NIS服务和手动调度任务,问题得到解决。NIS(网络信息服务)允许集中管理用户账户信息,简化多节点集群的账户同步。其工作流程包括服务器维护数据库,客户端查询本地缓存,若未找到信息则广播请求,服务器响应验证登录。
2464

被折叠的 条评论
为什么被折叠?



