zl程序教程

您现在的位置是:首页 >  其他

当前栏目

在 AWS EC2 搭建 Torque Resource Manager

2023-03-07 09:01:13 时间

本文主要介绍 TORQUE RESOURCE MANGER 是什么,TORQUE 节点架构,AWS 环境中TORQUE RESOURCE MANAGER 推荐架构,架构涉及服务介绍,AWS 架构 HPC 环境的优势,AWS 环境配置前续准备,TORQUE RESOURCE MANAGER 构建步骤以及相关的第三方参考资料。

1. Torque Resource Manger 是什么?

Torque (Terascale Open-source Resource and QUEue Manager) 是一个批处理与分布式计算的资源管理工具。被广泛用于 HPC 计算基础架构如天气预测,流体分析,材料模拟,地理分析等场景中。本文将讨论 Torque Resource Manager 在 AWS 上的推荐架构并分步指导如何在 AWS EC2计算节点上面安装 Torque Resource Manager.

2.  Torque节点架构

Torque 群集架构包括一个主节点和多个计算节点。主节点运行 pub_server 后台进程。计算节点运行 pbs_mom 后台进程。同时还有可以安装在任意主机上的客户端程序 (clients),用来提交和管理任务(jobs)。

主节点同时运行着调度进程(Scheduler Daemon)。调度进程与 pbs_server 交互来为每个任务进行节点资源调度。Torque 自带的 pbs_sched 提供简单的 FIFO(先进先出)的资源调度。

3.  AWS 环境中 Torque Resource Manager 推荐架构

4.  架构涉及服务介绍:

  • Amazon EC2: 相当于云中的服务器,能够在云环境中提供可任意调整的计算容量。其设计目标在于为开发人员轻松提供 Web 规模计算资源。本环境中的 Torque 主节点与计算节点主要部署在EC2实例上。
  • Amazon EBS:即 Amazon 弹性块存储,配合 Amazon EC2 实例使用。Amazon EBS 分卷提供一致性与低延迟性能,为高性能工作负载提供支持。利用 Amazon EBS,大家可以在数分钟内进行容量扩展。本例中每个 EC2 实例都配置有 EBS SSD 类型的根卷,并且在主节点配置了额外一个卷提供 NFS 数据共享,为群集提供共享文件系统。
  • Amazon Auto Scaling:允许根据所定义条件自动对 Amazon EC2的容量进行规模伸缩。可以利用 Auto Scaling 确保当前运行中的 Amazon EC2 实例数量始终与需求相符。Auto Scaling 还可以在出现需求峰值时自动增加 Amazon EC2 实例数量以保持性能水平,并在需求降低时削减容量以降低使用成本。Auto Scaling 非常适合HPC中性能要求间歇性波动,即性能需求每小时、每天或者每周发生变动的应用程序。架构中计算节点可以根据计算节点的负载自动地进行扩展或者收缩。
  • Amazon S3:能够提供安全且具备可扩展性的对象存储方案。Amazon S3 易于使用,提供简单的 Web 服务界面以立足任意网络位置存储及检索任意规模的数据。在方案架构中的 HPC 环境过程数据可以保存到S3当中。
  • Amazon CloudFormation: CloudFormation可以方便地把上面的方案做成配置文件,并在一个新的环境中进行快速部署。
  • Internet Gateway:架构图的实例与服务必须通过 Internet Gateway 才可以进行 Internet 访问
  • NAT Gateway:对于架构图中的主节点与计算节点服务器,如果直接暴露在公网访问中会不安全,但同时这些实例又有访问 Internet 安装依赖软件与升级的需求。NAT Gateway 主要用于此类访问。
  • Amazon SQS:多个节点群集之前会有队伍任务的需要,SQS 可以简单方便地提供队列服务
  • Amazon DynamoDB:对于生成的结构性数据,可以方便地保存到 NOSQL 类型数据库 DynamoDB 中,方便生态环境中其它服务进行访问
  • Amazon CloudWatch:对于架构图中的所有服务进行监测,可以提供实例的 CPU , 网络访问,存储等指标,同时支持日志,触发任务等
  • 以下步骤将着重涵盖 Torque 架构部分主要包括主节点,计算节点部分。

5.  AWS 架构 HPC 环境的优势:

  • 资源按需分配:AWS 环境中实例与服务,无需提前购买,需要时候进行申请激活,分钟级别完成部署,快速上线。解决传统 HPC 中采购周期长,基础架构部署复杂的特点
  • 无限存储计算资源:AWS 云环境中拥有大量的计算与存储资源,满足 HPC 环境中对于资源的大量需求。
  • 快速生产部署:支持配置文件直接生成基础架构实例,快速简单实现架构与应用的复制
  • 低成本部署灵活运营:云中环境可以按秒收费,按需使用,在计算任务完成时可以关闭资源,充分节省费用
  • 全球部署协同:AWS 在全球有18个区域,单一区域部署,全球复制。云环境方便全球协作支持。

6.    AWS 环境配置前续准备

1)    申请 AWS 中国区域账户 (在Global区域请忽略这步)

2)    进入 console 后配置 VPC,本文使用默认 VPC 配置

3)    子网设置,本文使用默认子网设置,对安全有要求的用户,请使用堡垒机方式与独立私有子网部署主节点与计算节点

4)    安全组:一般配置请参考。这里请建立 TorqueSG,Inbound 加入2条规则:为您的 IP 开放SSH (TCP 22) 端口,为 TorqueSG 这个安全组内部开放所有流量

5)    建立置放群组(Placement Groups)- TorquePG,在 EC2 服务界面的左边导航条选择 Placement Groups,并建立 TorquePG 群组,置放群组内部的实例可受益于低网络延迟、高网络吞吐量等特点。

请注意:由于置放群组不能跨 AZ,所以请在计算节点的跨 AZ 高用性与置放群组的高性能之间进行平衡选择,本文使用置放群组配置。

6)    建立密钥对(Keypair)TorqueKP 后续部分需要无密码互相登陆,需要 Keypair。建立之后一定要妥善保存密钥对,丢失之后 难恢复。

7.    Torque Resource Manager 构建步骤

1)    以下步骤在 Torque Server  (Masternode), Torque MOM Host, Torque Client Host 都需要安装,下面以 Masternode 为例:

a)    服务器名配置:

本文假设环境为3台服务器,一台主节点(masternode),两台计算节点(computenode1, computenode2),如上节点架构图。服务器名与 IP 地址假设如下:

172.31.1.30 masternode

172.31.1.41 computenode1

172.31.1.42 computenode2

b)    启动EC2实例做为 Masternode,启动一般步骤请点击这里。这里要特殊配置几个参数:

AMI 系统镜像:选择 Amazon Linux

实例类型:请参考该链接 进行选择,由于 TORQUE 多用于 HPC 场景,而 HPC 场景对于 CPU 配置要求比例比较高,所以推荐 C 系列,测试环境可以使用 T 系列,但 T 系列使用 CPU 积分方式,所以不推荐生产环境使用

  • 详细配置:置放群组选择 TorquePG,其它可以保留默认配置
  • 存储配置:根据需要配置本地存储,后面本文会提到另外建立一个EBS卷做NFS共享
  • 添加标签:加入 Key 值 Name,Value 为 Masternode,便于在控制台区分
  • 安全组:选择刚刚建立的 TorqueSG
  • 选择“启动”之后,会提醒密钥对,选择已经建立的 “TorqueKP”

c)     待控制台提醒启动完成之后进行登陆,修改服务器名,以 masternode 为例,computenode1, computenode2 类似,ssh 登陆 masternode之后,步骤如下:

登陆:参考。使用刚刚建立的密钥对文件 TorqueKP.pem

登陆后步骤如下:

[ec2-user@]$ sudo su

[root]#vi /etc/hosts

加入如下内容,IP 地址以实际环境中节点实际 IP 为主,环境内有 DNS,则 computenode1, computenode2 放到 DNS 中解析,不改在此修改。

127.0.0.1 masternode

172.31.1.30 masternode

172.31.1.41 computenode1

172.31.1.42 computenode2

[root]#vi /etc/sysconfig/network

修改 HOSTNAME=masternode

2)    安装依赖包

安装 EC2 开发包与 Torque Server Host 需要的编译工具

[ec2-user]$ sudo su

后面的安装将都使用 root 权限进行。

[root]# yum groupinstall “Development Tools”

[root]# yum install openssl-devel libxml2-devel boost-devel

安装 hwloc(Portal Hardware Locality),  hwloc 提供一组命令行工具和 C 语言的开发包,用来获取系统中层次化的关键计算元素,例如 NUMA 内存节点、共享缓存、处理器套接字、处理器核心以及处理器线程等等。

[root]# wget https://www.open-mpi.org/software/hwloc/v1.9/downloads/hwloc-1.9.1.tar.gz

[root]# tar -xzvf hwloc-1.9.1.tar.gz

[root]# cd hwloc-1.9.1

[root]# ./configure

[root]# make

[root]# make install

[root]# echo /usr/local/lib >/etc/ld.so.conf.d/hwloc.conf

[root]# ldconfig

3)    Torque Server (Masternode)配置

a)    安装并编译 Torque Server,本文以6.1.1为例, 系统已经默认安装了 git,使用 git 从 GITHUB 下载最新的 Torque 源码

[ec2-user@masternode]$cd /home/ec2-user && sudo su

[root@masternode]# git clone https://github.com/adaptivecomputing/torque.git -b 6.1.1 6.1.1

[root@masternode]# cd 6.1.1

[root@masternode]# ./autogen.sh

安装+编译:

[root@masternode]# ./configure –enable-cgroups –with-hwloc-path=/usr/local # add any other specified options

[root@masternode]# make

[root@masternode]# make install

当前 Shell 路径下执行 torque.sh,加入 PATH 变量

[root@masternode]# . /etc/profile.d/torque.sh

b)    初始化 Torque Resource Manager serverdb

[root@masternode]# ./torque.setup root # 这里如果报错如下: 一般是机器没有没有设置好, 请参考开始设置机器名步骤 qmgr obj= svr=default: Bad ACL entry in host list MSG=First bad host: ip-172-31-1-30

c)     以服务方式开机运行:

[root@masternode] cp contrib/init.d/pbs_server /etc/init.d/pbs_server

[root@masternode] chkconfig –add pbs_server

d)    masternode服务设置与启动

[root@masternode]# chkconfig –add pbs_server

[root@masternode]# service pbs_server restart

显示如下,启动成功:

Shutting down TORQUE Server: [ OK ]

Starting TORQUE Server: [ OK ]

e)    确认/var/spool/torque/server_name内容是masternode,如果不是的话,请修改为masternode

f)     Torque Server 安装与初步设置到此完成。

使用如下命令在当前路径下生成 Torque MOMs 安装脚本 torque-package-mom-linux-x86_64.sh

[root@masternode]#make packages

4)    文件共享配置:为了实现 Masternode 与 computenode 之间的文件共享与数据同步,本文使用 Masternode卷空间做为节点间文件共享,这里直接使用在 MasterNode上建立卷并提供NFS 方式共享,步骤如下,同时也可以参考 AWS Storage Gateway 文档,使用 Storage Gateway 加 S3 方式实现共享

a)    为 masternode 创建 EBS 卷/public并在实例上挂载,之后在 Linux 系统中挂载

b)    NFS 客户端和服务器端需要安装 nfs-utils,nfs-utils-lib,Amazon LINUX 已经默认安装,可以直接开始配置

开机启动:

[root@masternode]# chkconfig –levels 235 nfs on

[root@masternode]# /etc/init.d/nfs start

权限与共享,注意 ip 和括号中间没有空格,修改 /etc/exports文件

[root@masternode]# vi /etc/exports

/public (rw,sync,no_root_squash)

/public (rw,sync,no_root_squash)

/public (rw,sync,no_root_squash)

[root@masternode]# exportfs -a

[root@masternode]# chmod 777 /public

将刚刚需要在 computenode 上面安装的脚本 torque-package-mom-linux-x86_64.sh 拷贝到 /public下确认 NFS 配置成功

[ec2-user@masternode]$ cp torque-package-mom-linux-x86_64.sh /public/

5)    Computenode 启动与配置:

a)    启动一台 EC2,步骤参考 Masternode 启动过程,几点注意:

子网,安全组,置放群组配置,密钥对与Masternode配置一致。

b)    修改机器名如下:并安装基础依赖包,参考 masternode 过程

[root]#sudo su

[root]#vi /etc/hosts

加入127.0.0.1 computenode

加入172.31.1.30 masternode 这是本例中Masternode假设IP,有DNS无需此步骤

[root]#vi /etc/sysconfig/network

修改 HOSTNAME=computenode1

重启 computenode1 使之生效,同时 ping masternode 看是否连通

确认在 masternode 实例上同时也修改 /etc/hosts,加入 computenode 的 IP 如:172.31.1.41 computenode1,然后 ping computenode1 进行测试

c)     使用 root 权限,并启动 cgconfig

[ec2-user@computenode1]$ sudo su

[root@computenode1]# service cgconfig start

[root@computenode1]# chkconfig cgconfig on

[root@computenode1]# lssubsys -am 进行查看,查看是否有/cgroup/项目

d)    在 computenode 上下载 torque-package-mom-linux-x86_64.sh并安装配置

[root@computenode1]# cp /public/torque-package-mom-linux-x86_64.sh /home/ec2-user/ && cd /home/ec2-user

[root@computenode1]# ./torque-package-mom-linux-x86_64.sh –install

把 pbs_mom 加入到启动服务当中

[root@computernode1]# chkconfig –add pbs_mom

[root@computernode1]# service pbs_mom start

e)    参考上面步骤可以部署 computenode2

f)     Computenode访问 NFS 共享目录:

在客户端测试挂载与读写(在 computenode 上面运行)

[root@computenode1]#mkdir /public

[root@computenode1]#chmod 777 /public

[root@computenode1]#mount -t nfs masternode:/public /public

设置开机挂载

[root@computenode1]#vi /etc/fstab

加入如下行:

masternode:/public /public nfs4 hard,timeo=600,retrans=2 0 0

6)    配置无密钥 ec2-user 节点间登陆,需要分别在 masternode, computenode上面运行

a)    由于 EC2 默认都是 ec2-user 使用 pem 登陆,所以在 ssh 认证的公钥文件~/.ssh/authorized_keys里面已经有 ec2-user 的登陆.如果不使用 ec2-user 登陆,请参考,先加入请用户

b)    使用之前保存的 ec2-user 密钥 TorqueKP.pem 文件,生成 .ssh/id_rsa文件

cat TorqueKP.pem >> ~/.ssh/id_rsa

c)     使用 ssh 进行测试,例如在 computernode1 上

[ec2-user@computenode1]提示符由 sshmasternode 提示符由[ec2−user@computenode1] 显示为[ec2−user@masternode]$ 则登陆成功。exit 退出

d)    依次类推在 masternode, computenode1, computenode2上互相进行登陆测试

e)    这里请注意,请保持登陆各实例用户名一致,如果 id_rsa 都由 ec2-user 密钥建立,则登陆也应该在 ec2-user 环境下

7)    Torque 客户端配置(可以在同一子网内再启动一台机器,由于与 Maternode, Computenode 互操作比较少,在此不多描述):

a)    在 masternode 上面拷贝客户端安装脚本到共享盘

cp torque-package-clients-linux-x86_64.sh /public/

cp contrib/init.d/trqauthd /public/

b)     拷贝到要配置客户端的主机上并运行

cp /public/torque-package-clients-linux-x86_64.sh .

cp /public/trqauthd /etc/init.d/

./torque-package-clients-linux-x86_64.sh –install

8)    加入 computenode 到 masternode 配置文件当中

a)    将 computernode 的名称(computenode1, computenode2)加入到/var/spool/torque/server_priv/nodes中,如下:

computenode1

computenode2

b)    重新启动 PBS Server(在 Masternode 上运行)与 PBS MOM(在 Computenode 上运行)

[root@masternode] service pbs_server restart

[root@computenode1] service pbs_mom restart

[root@computenode2] service pbs_mom restart

在 PBS Master Node 上验证:

[root@masternode] qnodes -a

显示如下则配置成功:

computenode1

state = free

power_state = Running

computenode2

state = free

power_state = Running

9)    Torque Resource Manager 群集相关测试

a)    测试提交一个基础任务

[ec2-user@masternode]$ echo ` sleep 30 ` | qsub

b)    查看任务状态

[ec2-user@masternode]$ qstat

8.    第三方参考资料:

张洋

张洋是AWS中国团队的解决方案架构师,负责基于AWS的云计算方案架构咨询和设计。同时致力于AWS云服务在国内的应用和推广。现专注于HPC超算与物联网相关领域的研究。在加入AWS之前,他曾服务于EMC, Oracle, Flextronics等跨国IT公司。张洋乐于分享,并且是一名业余游泳教练,热爱游泳和跑步,已经完成5次马拉松比赛。