Skip to content

集群架构

集群的简易概念

简而言之,把很多台本来独立的计算机有组织地放在一起,对外表现得像是一台计算机,就可以称之为集群(cluster)。不仅仅是常见的刀片式服务器放在机架上的形式,一些树莓派甚至同学们在实验室的电脑,也可以组织成集群的形式,从而提供更高规格的计算、存储、网络服务。

实验室的集群架构

集群架构

如图所示,实验室的集群由多个扁扁的刀片式服务器(Edge Server)叠在机架上组成,相对的,还有一种以常见台式机形态出现的服务器叫作塔式服务器(Tower Server),因为不能叠起来,一般不用于组建集群。简单说一下其中几个经常见到的节点的作用:

  • ln01:登录节点,平时同学们登录集群的172.21.66.12就是这台,是整个集群对外提供服务的节点;
  • cu01-06:normal节点,对应于提交任务时的normal队列,配置不高(32 Core,256GB Memory),但足以应对大部分计算工作;
  • cu07-09: high节点,对应于提交任务时的high队列,配置较高(72 Core,1TB Memory),适用于注释、组装等任务;
  • gpu01:gpu节点,对应于gpu队列,配置不高(32 Core,256GB Memroy),但具有两个Tesla T4 GPU(TU104核心,约等于Geforce RTX2070Super),CUDA版本10.2,可用于简单的深度学习项目
  • ……

NFS与用户目录

以上的各个计算节点,均是独立的Linux计算机,具有彼此独立的根目录(/, /usr, /sbin等等),通过PBS系统接收计算任务,并动用各自的CPU与内存进行计算。

在目前为止的设置下,计算任务完成后,结果需要经由PBS系统返回ln01节点,再重新组织和存储到ln01节点下各用户的目录中,完全没有可操作性(节点网络带宽、存储设备带宽、接收和组织结果要消耗的CPU和内存等等)。

所以可以设想另一种方式,即各计算节点将计算结果存储在本地,允许ln01节点直接读取计算节点的目录。在这个基础上再进一步解耦,就是实验室集群目前实际运行的存储架构。

将集群中的节点划分为存储和计算两种,计算节点(包括ln01、mu01等负责登录与管理的特殊节点)仅具有维持Linux系统和PBS系统正常运行所需的文件与目录,存储节点负责存储所有用户数据,在集群中表现为一台可挂载的存储设备,每个计算节点将存储节点挂载为用户感知最强、使用最频繁的/home目录。如此一来,用户在ln01节点各自的用户目录下(如/home/yyzhong,实际上该目录下的数据只存在于存储节点上),提交到计算节点后,计算节点将结果同样写入其挂载的用户目录(如/home/yyzhong)下。