THPC Slurm调度器 快速入门

2022-05-11 16:13:25 浏览数 (1)

为了避免广告和水贴嫌疑,某些已经成熟的操作,都会通过链接引用替代

特别鸣谢:acoustic 露文 李老汉的狗腿子

账号准备(必做)

免去注册和认证的步骤,请参考

注册腾讯云:https://cloud.tencent.com/document/product/378/17985

实名认证:https://cloud.tencent.com/document/product/378/3629

为了保证实验的顺利进行,请通过费用中心充值金额100元,抵扣按量扣费的CVM设备费用

费用中心:https://console.cloud.tencent.com/expense/overview


前置工作(必做)

密钥对的准备:https://console.cloud.tencent.com/cam/capi 通过控制台生成密钥,并牢记id和key

生成密钥生成密钥

开通私有网络:https://console.cloud.tencent.com/vpc/vpc?rid=1

如果不懂参数用默认, 这里需要拿到私有网络的id,比如vpc-0jghqa4h

对应地域新建私有网络对应地域新建私有网络

一般新建时会携带子网的初始化,需要拿到子网的信息,比如subnet-lw8ulnqu

可以用默认参数

初始子网信息初始子网信息

查阅子网:https://console.cloud.tencent.com/vpc/subnet?rid=1

私有网络和子网id信息私有网络和子网id信息

开通默认安全组: https://console.cloud.tencent.com/vpc/securitygroup?rid=1&rid=1

!注意 这个也有地域作用范围

安全组安全组

测试学习可以放通全部,如下图:

安全组安全组

考虑安全也可以做如下写法:

只放通内网的全部端口只放通内网的全部端口

一般首次跑通推荐最后一条为允许

本次跑通以广州为例,所以地域选择都是广州

  1. 镜像支持 Centos 7.9,镜像 ID 为 img-l8og963d
  2. 可用地域为,广州,上海,重庆
  3. 仅支持API调用THPC

这些创建好以后,开始授权角色https://console.cloud.tencent.com/cam/role/grant?roleName=THPC_QCSLinkedRoleInAcrossService&serviceLinkedRole=1

同意授权THPC同意授权THPC

角色页面如下图:

成功授权成功授权

开通CFS

在挂载之前,我们需要先创建一个对应的系统

https://console.cloud.tencent.com/cfs/fs?rid=1

选择创建

创建cfs存储桶创建cfs存储桶

选择通用的,下一步

标准通用存储标准通用存储
设置参数设置参数

立即创建

立即创建立即创建

随后在详情中需要拿到几个参数,本地挂载点路径和远程挂载点路径

选择存储桶选择存储桶

查看挂载点信息,注意linux下挂载的目录和windows下挂载的目录

挂载点信息挂载点信息

mount -o nolock mtype=hard 10.0.0.10:/lo0i0jrj x:

注,"x:" 指用户需要挂载的盘符

如果直接直接挂载会报错

不支持mount命令不支持mount命令

原因是因为没有开启NFS功能(如果是windows7或10需要企业版以上才支持,家庭版不支持

挂载CFS到涉及到的端口

需开放端口需开放端口

必须用到的参数:

ClusterId : "hpc-919qd6mc" // 用于节点的添加删除调度操作

代码语言:javascript复制
镜像id:img-l8og963d
secretId:*****your id (参考上方准备工作)
secretKey*****your key (参考上方准备工作)
{
 "ManagerNodeCount": 1,   //管理节点数量
 "ManagerNode": {
  "InternetAccessible": {
   "InternetMaxBandwidthOut": 10     //节点带宽
  },
  "InstanceName": "ManagerNode",    //机器名称
  "InstanceType": "SA2.MEDIUM4"     //机型配置  
 },
 "SchedulerType": "SLURM",          //调度器类型
 "ComputeNodeCount": 3,             //计算节点数量
 "ComputeNode": {
  "InstanceType": "SA2.MEDIUM4",     //机器配置
  "InstanceName": "ComputeNode"      //机型名称   
 },
 "LoginSettings": {
  "Password": "Aa12345678"            //登录设置的密码
 },
 "Placement": {
  "Zone": "ap-guangzhou-3"          //地域-广州三区
 },
 "VirtualPrivateCloud": {
  "VpcId": "你的私有网络id",      //前置工作中有创建
  "SubnetId": "你的子网id"       //前置工作中有创建
 },
 "ImageId": "img-l8og963d",      //使用的镜像
 "StorageOption": {
	"CFSOptions": [{
		"StorageType": "SD",     //cfs的存储类型
		"Protocol": "NFS 3.0",    //协议版本
		"LocalPath": "/CFS/test",    //本地挂载点
		"RemotePath": "<挂载点IP>:/<fsid>"   //远程挂载点
	}]
 },
}

TCCLI的安装与调度

账号上的一些基本准备做完了以后,我们就要到TCCLI来下功夫了,一样的,前置准备工作

依赖环境:

Python 版本必须为2.7及以上版本

Pip工具

centos安装Python

centos安装pip

windows安装python

windows安装pip

确认好依赖环境以后,就可以安装tccli了

centos 参考官网 安装TCCLI

windows的往下看,安装好python以后,进入到对应的目录就可以执行安装了

pip install tccli

对应目录进行tccli的安装对应目录进行tccli的安装

升级到最新版

pip install tccli --upgrade

升级版本升级版本

查看版本号

tccli --version

查看版本号查看版本号
THPC发布最新版本THPC发布最新版本

执行上述命令设置THPC为最新发布版本,有关tccli的更多使用可以通过:

tccli thpc help

接下来,我们就可以做其他的一些操作了。

先拿拿到之前的id和key。然后进行地域的配置

代码语言:javascript复制
$ tccli configure
TencentCloud API secretId [*afcQ]:AKIDz8krbsJ5yKBZQpn74WFkmLPx3******* //上面拿过的
TencentCloud API secretKey [*ArFd]:Gu5t9xGARNpq86cd98joQYCN3*******    //上面拿过的
region: ap-guangzhou    //地域
output[json]:

通过json文件来导入

tccli thpc CreateCluster --cli-input-json file://d:/desktop/test.json

其中//后面跟的就是json文件的实际路径了

执行成功,记住clusterid执行成功,记住clusterid

控制台验证创建情况

控制台已经开始创建控制台已经开始创建

计算节点一般快一些

节点创建成功节点创建成功

我们要等管理节点加载完成

管理节点创建成功管理节点创建成功

"hpc-919qd6mc" 我们先记住这个,一般绿灯以后,我们要等一点时间等服务running起来


更新!(2022-05-11)

通过tccli 查看节点状态 直到 ClusterStatus为从INITING变为RUNNING状态

表示集群创建完成 (如果为INIT_FAILED状态,请找相关同学排查)

命令 tccli thpc DescribeClusters --ClusterIds '["hpc-919qd6mc"]'

返回

{

"ClusterSet": [

{

"ClusterId": "hpc-919qd6mc",

"ClusterStatus": "RUNNING",

"ClusterName": "unnamed",

"Placement": {

"Zone": "ap-guangzhou-3"

},

"CreateTime": "2022-05-11T07:24:42Z",

"SchedulerType": "SLURM",

"ComputeNodeCount": 2,

"ComputeNodeSet": [

{

"NodeId": "ins-8hdjz678"

},

{

"NodeId": "ins-8s9vsnyk"

}

],

"ManagerNodeCount": 1,

"ManagerNodeSet": [

{

"NodeId": "ins-hgqeagqs"

}

],

"LoginNodeSet": [],

"LoginNodeCount": 0

}

],

"TotalCount": 1,

"RequestId": "cce7aaa5-2459-4e07-9d60-223b76c72cc0"

}


现在尝试添加节点,以下是参数说明:

代码语言:javascript复制
{
 "Region": "ap-guangzhou",   //指定地域
 "Count": 1,
 "ClusterId": "hpc-919qd6mc",  //集群id
 "QueueName": "compute",     //队列名    
 "LoginSettings": {
  "Password": "Aa12345678"   //密码
 },
 "ImageId": "img-l8og963d",  //镜像id
 "VirtualPrivateCloud": {
  "VpcId": "vpc-g7wzcv7n",      //私有网络
  "SubnetId": "subnet-pqx5wzp6"   //子网
 },
 "Placement": {
  "Zone": "ap-guangzhou-3"    //可用区
 },
}

还是使用json方式传入

tccli thpc AddNodes --cli-input-json file://d:/desktop/add.json

添加成功返回添加成功返回

验证

添加成功添加成功

删除节点之前需要

备份数据

备份数据

备份数据

tccli thpc DeleteNodes --cli-unfold-argument --region ap-guangzhou --ClusterId hpc-919qd6mc

--NodeIds ins-2o9ae76o

删除成功返回删除成功返回

验证

已经被释放已经被释放

怎么删除多个节点

tccli thpc DeleteNodes --cli-unfold-argument --region ap-guangzhou --ClusterId hpc-919qd6mc --NodeIds ins-h840183o ins-npxs9s8c ins-8o3fz1v2

空格一个,节点名称跟在后面即可,注意,managernode设计了不可删除性质,是为了保障业务,如确定不需要,可以通过调用退还集群接口操作,之前需要

备份数据

备份数据

备份数据

tccli thpc DeleteCluster --cli-unfold-argument --region ap-guangzhou --ClusterId hpc-919qd6mc

退还退还

退还后,控制台也没有了。

关于AS伸缩组的配置,等,可以参考如下部分:

3.使用 THPC 自动扩缩容(可选)

自动扩缩容功能将根据您的工作负载弹性伸缩当前队列里的子机数量。如果您在创建集群时使用了自动挂载 CFS 功能,按照以下步骤新扩出的节点也将自动挂载 CFS。

3.1 通过已创建固定集群的计算节点 制作自定义镜像(必做,否则会影响后续AS功能)

登录云服务器控制台,找到您刚刚创建的集群对应的计算节点(建议在创建集群时通过命名区分集群节点),在云服务器控制台-实例-更多-制作镜像 完成计算节点镜像制作:

制作镜像制作镜像

3.2 在弹性伸缩 AS 里配置启动配置

启动配置可参见弹性伸缩 启动配置概述,您需要注意:

  • 需要和集群在同一可用区,同一VPC,同一子网下;
  • 选择您刚刚创建的计算节点自定义镜像;

3.3 在弹性伸缩 AS 里新建伸缩组策略

新建伸缩组策略可参见弹性伸缩 创建伸缩组,您需要注意:

  • 需要和集群在同一可用区,同一VPC,同一子网下;
  • 最小伸缩数保持为0,起始实例数保持为0,最大伸缩数可以填您期望扩缩容的上限值;
  • 选择您刚刚创建的启动配置;

3.4 调用 BindAutoScalingGroup 接口绑定 AS 与集群

您可以通过调用绑定弹性伸缩组绑定您刚刚创建的伸缩组策略和集群,您需要注意:

  • ExpansionBusyTime 参数设置后当任务等待时间达到您设定的限制会启动扩容;
  • ShrinkIdleTime 参数设置后当节点空闲时间达到您设定的限制会启动缩容;

以下为使用示例:

tccli thpc BindAutoScalingGroup --ClusterId hpc-kiw4a9he --QueueName compute --LaunchConfigurationId=asc-muzz0td6 --AutoScalingGroupId asg-qqair38e --ExpansionBusyTime 120 --ShrinkIdleTime 120 --EnableAutoExpansion True --EnableAutoShrink True

以下为json文件参数示例

代码语言:javascript复制
{
 "Region": "ap-guangzhou",        //地域
 "ClusterId": "hpc-919qd6mc",     //集群id
 "QueueName": "compute",          //队列名
 "LaunchConfigurationId": "asc-muzz0td6",    //伸缩配置
 "AutoScalingGroupId": "asg-qqair38e",     //伸缩组
 "ExpansionBusyTime": 120,                //扩容冷却时间,单位s     
 "ShrinkIdleTime": 300,                  // 空闲时间缩容,单位s
 "EnableAutoExpansion": true,           // 自动扩容
 "EnableAutoShrink": true                // 自动缩容
}

3.5 查看当前集群扩缩容的节点

登录弹性伸缩控制台,选择左侧导航中的 伸缩组,在伸缩组详情页面,选择关联实例页签,可查看该伸缩组所关联的实例列表。

到这就告一段落拉,有什么不清楚的,我们再下一期补充


文档引用各类操作详细说明

密钥说明:https://cloud.tencent.com/document/product/598/40487

地域说明:https://cloud.tencent.com/document/product/213/6091

私有网络:https://cloud.tencent.com/document/product/215/51955

子网:https://cloud.tencent.com/document/product/215/36517

安全组学习笔记:https://cloud.tencent.com/developer/article/1430259

tccli安装:https://cloud.tencent.com/document/product/440/34011

tccli配置:https://cloud.tencent.com/document/product/440/34012

Windows 挂载CFS

SLURM使用教程

其他说明

  1. 支持在创建集群时自动挂载CFS,如果您在创建集群后有挂载CFS需求,需要登录到节点内手动挂载;
  2. Turbo挂载
  3. 目前集群仅支持单队列。
  4. 域名字服务类型支持 NIS
  5. 收费信息请参见高性能计算平台 购买指南
  6. 更多使用限制请参见 使用限制 - 高性能计算平台

  • 挂载协议仅支持 NFS 3.0,NFS 4.0,TURBO;
  • 文件系统本地挂载路径是一个新目录;
  • 如果您选择使用 NFS 3.0,文件系统远程挂载ip及路径格式为:<挂载点IP>:/<fsid>,fsid可在挂载点详情中获取;
  • 提交请求并执行完毕后,您需要记录ClusterId
  • 您可以通过json文件格式传入命令行参数;

0 人点赞