本文主要介绍 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 环境配置前续准备
申请 AWS 中国区域账户 (在 Global 区域请忽略这步)
进入 console 后配置 VPC,本文使用默认 VPC 配置
子网设置,本文使用默认子网设置,对安全有要求的用户,请使用堡垒机方式与独立私有子网部署主节点与计算节点
安全组:一般配置请参考。这里请建立 TorqueSG,Inbound 加入 2 条规则:为您的 IP 开放 SSH (TCP 22) 端口,为 TorqueSG 这个安全组内部开放所有流量
建立置放群组(Placement Groups)- TorquePG,在 EC2 服务界面的左边导航条选择 Placement Groups,并建立 TorquePG 群组,置放群组内部的实例可受益于低网络延迟、高网络吞吐量等特点。
请注意:由于置放群组不能跨 AZ,所以请在计算节点的跨 AZ 高用性与置放群组的高性能之间进行平衡选择,本文使用置放群组配置。
建立密钥对(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 系统中挂载
将 EBS 在 Linux 中挂载,这里假设挂载点(mount_point)为 /public
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 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/aws-ec2-torque-resource-manager/
评论