腾讯云高性能计算平台THPC完全对接指南:从集群创建到作业调度实战
1. 初识腾讯云高性能计算平台THPC
高性能计算平台(TencentCloud High Performance Computing,THPC)是腾讯云自研的一款高性能计算资源管理服务。它并非直接提供物理计算节点,而是将腾讯云上的计算、存储、网络等产品资源进行深度集成,并整合了HPC专用的作业管理调度与集群管理软件,向用户提供弹性灵活、性能卓越、自助化的计算服务。
理解THPC的定位需要先厘清一个概念:腾讯云还有一款名为高性能计算集群(THCC)的产品,它是通过RDMA网络互联的裸金属集群,属于IaaS层的产品。而THPC则是构建在IaaS资源之上的PaaS层资源管理服务,整合了调度器和集群管理软件。简单来说,THCC提供的是“算力硬件”,而THPC提供的是“算力管理平台”——用户通过THPC可以更便捷地调度和管理底层的计算资源。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
1.1 核心产品特性
THPC围绕高性能计算场景设计了一系列核心功能:
- 弹性伸缩:根据业务负载动态申请和释放计算资源,高峰时期无缝扩展,低谷时期自动回落,实现资源的按需使用。
- 资源管理:支持批量创建计算资源,以集群方式统一管理大规模计算节点和存储资源,实时监控资源状态并快速调整。
- 作业调度:支持Slurm等HPC行业标准的调度器,用户可通过主控节点提交作业,系统自动进行资源分配与任务调度。
- 共享存储:支持自动挂载文件存储CFS或数据加速器GooseFS,为集群中所有节点提供统一的共享存储空间。
- 灵活部署:支持丰富的实例规格选择,可灵活适配科学计算、基因测序、建模仿真、气象预测等多种应用场景。
- 按需付费:仅需为实际使用的云资源付费,无需预付费用,结合弹性伸缩功能可有效控制成本。
1.2 典型应用场景
THPC在多个高性能计算领域都有广泛的应用:基因工程领域可部署基因测序、基因比对等软件,快速获得基因组信息与分析结果;药物筛选与分子模拟方面可部署药物分子模拟软件,分析蛋白质等大分子结构,加速新药研发;科学计算领域可整合大规模浮点运算能力的异构计算资源,进行数值模拟与仿真计算;工程制造方面可辅助分析复杂工程架构和力学结构,通过大量数据仿真模拟优化产品性能。
2. THPC的对接方式概览
THPC提供了多种对接方式,用户可以根据自身技术栈和使用习惯灵活选择。主要包括以下几种途径:
- 控制台方式:通过腾讯云Web控制台进行图形化操作,适合初次使用和日常管理。
- API方式:通过调用THPC的API 3.0接口进行编程化管理,适合自动化运维和二次开发。
- SDK方式:使用腾讯云提供的多语言SDK(Python、Java、Go等)进行开发集成。
- 命令行工具:使用TCCLI(腾讯云命令行工具)进行命令行操作。
3. 通过控制台创建THPC集群
3.1 前置准备
在创建THPC集群之前,需要完成以下准备工作:
- 注册腾讯云账号并完成实名认证。
- 在访问管理控制台生成API密钥(SecretId和SecretKey),用于后续的API调用。
- 规划集群的地域和可用区,建议选择与业务数据源相近的地域以降低网络延迟。
- 准备VPC私有网络和子网,用于集群的网络隔离。
3.2 创建集群操作步骤
通过控制台创建THPC集群的具体步骤如下:
- 登录云服务器控制台,在左侧导航栏选择高性能计算平台 > 集群列表。
- 在集群列表页面上方,选择目标地域,单击新建。
- 在创建集群弹窗中,按需配置以下参数:
- 可用区:选择集群所在可用区。
- 集群名称:自定义集群名称,便于识别。
- 集群描述:可选,填写集群的用途描述。
- 标签:可选,用于资源分类管理。
- 配置管控节点(Manager Node):管控节点是集群的管理核心,负责作业调度和资源管理。支持配置1个或2个管控节点以实现高可用。计费类型支持包年包月和按量计费。
- 配置计算节点(Compute Node):计算节点是实际执行计算任务的资源。计算节点数量最少为0个,最多为200个。计费类型支持包年包月、按量计费和竞价实例。
- 配置调度器:目前THPC支持Slurm调度器。镜像方面支持CentOS 7.9(img-l8og963d)和CentOS 8.2(img-n7nyt2d7)。
- 配置存储:THPC支持自动挂载文件存储CFS或数据加速器GooseFS。如果本地/opt/挂载点没有挂载文件系统,THPC在集群创建过程中会自动创建一个标准型的CFS挂载到/opt/目录下。
- 确认配置信息,单击创建。
集群创建请求下发成功后会返回一个集群ID,此时集群创建操作并未立即完成,集群状态将会处于PENDING或INITING状态。等待约5分钟集群初始化完毕后,即可在集群列表中查看状态变为RUNNING。
3.3 节点管理
集群创建完成后,可以通过控制台对节点进行管理:
- 添加节点:当计算资源不足时,可以通过控制台或API向集群添加计算节点或登录节点。
- 节点查询:查看集群中所有节点的状态、规格和角色信息。节点角色分为Manager(管控节点)、Compute(计算节点)、Login(登录节点)和ManagerBackup(备用管控节点)。
- 节点启停:对节点执行启动、停止、重启等操作。
- 节点删除:释放不再需要的计算节点以节约成本。
4. 通过API/SDK对接THPC
对于需要自动化管理和二次开发的场景,THPC提供了完整的API 3.0接口。API请求域名为 thpc.tencentcloudapi.com。默认接口请求频率限制为20次/秒。
4.1 API接口概览
THPC支持的主要API操作包括:
- 集群管理:CreateCluster(创建集群)、DescribeClusters(查询集群列表)、DeleteCluster(删除集群)、ModifyClusterAttribute(修改集群属性)。
- 节点管理:AddNodes(添加节点)、DeleteNodes(删除节点)、DescribeNodes(查询节点列表)。
- 队列管理:AddQueue(添加队列)、DeleteQueue(删除队列)、DescribeQueues(查询队列列表)。
- 作业管理:SubmitJob(提交作业)、DescribeJobs(查询作业列表)、TerminateJob(终止作业)、DeleteJob(删除作业)。
- 弹性伸缩:BindAutoScalingGroup(绑定弹性伸缩组)、SetAutoScalingConfiguration(设置弹性伸缩配置)。
- 存储管理:AddClusterStorageOption(添加集群存储选项)、DeleteClusterStorageOption(删除集群存储选项)。
4.2 Python SDK安装与配置
腾讯云提供了官方Python SDK,可以通过pip进行安装:
pip install tencentcloud-sdk-python-common
pip install tencentcloud-sdk-python-thpc在使用SDK之前,需要先获取安全凭证。在腾讯云控制台的访问管理 > API密钥管理页面中,可以生成SecretId和SecretKey。SecretId用于标识API调用者的身份,SecretKey用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保管。
4.3 Python SDK创建集群示例
以下是通过Python SDK创建THPC集群的完整代码示例:
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.thpc.v20220401 import thpc_client, models
# 配置认证信息
cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
# 配置HTTP访问
httpProfile = HttpProfile()
httpProfile.endpoint = "thpc.tencentcloudapi.com"
# 配置客户端
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = thpc_client.ThpcClient(cred, "ap-guangzhou", clientProfile)
# 构建创建集群请求
req = models.CreateClusterRequest()
# 集群基础配置
params = {
"ClusterName": "my-hpc-cluster",
"Description": "Python SDK创建的THPC集群",
"Placement": {
"Zone": "ap-guangzhou-3"
},
"VirtualPrivateCloud": {
"VpcId": "vpc-xxxxx",
"SubnetId": "subnet-xxxxx"
},
# 管控节点配置:1个管控节点
"ManagerNodeCount": 1,
"ManagerNodeInstanceType": "S5.MEDIUM4",
# 计算节点配置:初始2个计算节点
"ComputeNodeCount": 2,
"ComputeNodeInstanceType": "S5.LARGE8",
# 调度器配置
"SchedulerType": "SLURM",
# 镜像配置
"ImageId": "img-l8og963d",
# 登录设置
"LoginSettings": {
"Password": "YourPassword123!"
}
}
req.from_json_string(json.dumps(params))
# 发送请求
resp = client.CreateCluster(req)
print(resp.to_json_string())创建集群请求成功后会返回一个集群ID(格式如hpc-xxxxx)和RequestId。可以通过DescribeClusters接口查询集群状态,当状态变为RUNNING时表示集群已就绪。
4.4 Python SDK添加节点示例
集群创建后,可以通过AddNodes接口动态添加计算节点:
from tencentcloud.thpc.v20220401 import models
# 构建添加节点请求
req = models.AddNodesRequest()
params = {
"ClusterId": "hpc-xxxxx",
"Placement": {
"Zone": "ap-guangzhou-3"
},
"VirtualPrivateCloud": {
"VpcId": "vpc-xxxxx",
"SubnetId": "subnet-xxxxx"
},
"Count": 2, # 添加2个计算节点
"InstanceType": "S5.LARGE8",
"ImageId": "img-l8og963d",
"InstanceChargeType": "POSTPAID_BY_HOUR" # 按量计费
}
req.from_json_string(json.dumps(params))
resp = client.AddNodes(req)
print(resp.to_json_string())AddNodes接口支持添加计算节点或登录节点到指定集群。节点数量最少为0个,最多为200个。系统盘支持普通云硬盘、高性能云硬盘及SSD云硬盘,数据盘最多支持21块。
4.5 Python SDK提交作业示例
通过SubmitJob接口可以向集群提交计算作业:
# 构建提交作业请求
req = models.SubmitJobRequest()
params = {
"ClusterId": "hpc-xxxxx",
"Job": {
"JobName": "my-first-job",
"QueueName": "compute", # SLURM默认队列为compute
"Resources": {
"Cpu": 4,
"Memory": 8192 # MB
},
"Command": "#!/bin/bash\necho 'Hello THPC'\nhostname\n",
"WorkDir": "/data/jobs"
}
}
req.from_json_string(json.dumps(params))
resp = client.SubmitJob(req)
print(resp.to_json_string())提交作业后可以通过DescribeJobs接口查询作业执行状态。
5. 作业调度管理
THPC集成了Slurm这一HPC行业标准的调度器,用户可以通过主控节点提交作业到集群,系统自动进行资源的统一管理和分配。
5.1 Slurm作业提交方式
Slurm支持多种作业提交方式:
- 批处理作业(sbatch):将作业脚本提交给调度系统,脚本在分配的资源上执行。
- 交互式作业(srun):直接在命令行中执行并行任务。
- 交互式会话(salloc):分配资源并启动一个交互式Shell会话。
5.2 编写Slurm作业脚本
以下是一个标准的Slurm作业脚本模板:
#!/bin/bash
#SBATCH --job-name=my_hpc_job # 作业名称
#SBATCH --output=%j.out # 标准输出文件
#SBATCH --error=%j.err # 错误输出文件
#SBATCH --ntasks=4 # 任务数
#SBATCH --cpus-per-task=2 # 每个任务的CPU数
#SBATCH --mem=8192 # 内存需求(MB)
#SBATCH --time=01:00:00 # 运行时间限制
#SBATCH --partition=compute # 分区名称
# 加载环境模块(如有需要)
# module load intel/2020
# 执行计算任务
echo "Job started at $(date)"
echo "Running on node: $(hostname)"
# 运行MPI程序(示例)
mpirun -np 4 ./my_application
echo "Job finished at $(date)"5.3 提交与管理作业
将作业脚本保存为 job.slurm 后,通过以下命令提交:
sbatch job.slurm常用的作业管理命令:
- squeue:查看作业队列状态
- scancel:取消作业
- sinfo:查看分区和节点状态
- sacct:查看作业历史记录
6. 共享存储配置
THPC支持为集群挂载共享文件存储,为集群中所有节点提供统一的共享存储空间。支持的存储类型包括:
- 文件存储CFS:标准共享文件存储服务。
- 数据加速器GooseFS:高性能数据加速存储。
- 全托管数据加速器GooseFSx:全托管的高性能数据加速服务。
6.1 添加集群存储选项
通过AddClusterStorageOption接口可以为集群添加CFS挂载:
# 添加集群存储选项
req = models.AddClusterStorageOptionRequest()
params = {
"ClusterId": "hpc-xxxxx",
"StorageOption": {
"CFSOption": {
"LocalPath": "/data/shared", # 集群内挂载路径
"RemotePath": "/", # CFS文件系统根目录
"FileSystemId": "cfs-xxxxx" # CFS文件系统ID
}
}
}
req.from_json_string(json.dumps(params))
resp = client.AddClusterStorageOption(req)
print(resp.to_json_string())集群创建完毕并且为运行中(RUNNING)状态后,可以通过AddClusterStorageOption接口添加集群存储选项。添加完之后,THPC会尝试对当前集群存在的所有节点挂载上存储资源,后续通过THPC扩容出来的实例也会自动挂载存储选项的资源。
7. 弹性伸缩配置
THPC的弹性扩缩容功能支持根据业务负载动态伸缩集群节点,帮助用户节省集群成本。用户可以通过在创建集群接口中的AutoScalingType配置THPC_AS模式进行扩缩容。
7.1 绑定弹性伸缩组
通过BindAutoScalingGroup接口可以为集群队列绑定弹性伸缩组:
# 绑定弹性伸缩组
req = models.BindAutoScalingGroupRequest()
params = {
"ClusterId": "hpc-xxxxx",
"QueueName": "compute",
"AutoScalingGroupId": "asg-xxxxx",
"MinSize": 0, # 最小节点数
"MaxSize": 50 # 最大节点数
}
req.from_json_string(json.dumps(params))
resp = client.BindAutoScalingGroup(req)
print(resp.to_json_string())7.2 设置弹性伸缩配置
通过SetAutoScalingConfiguration接口可以设置更详细的弹性伸缩配置:
# 设置弹性伸缩配置
req = models.SetAutoScalingConfigurationRequest()
params = {
"ClusterId": "hpc-xxxxx",
"QueueName": "compute",
"ExpandConfig": {
"MaxNodes": 50,
"ScaleOutThreshold": 80, # 扩容阈值(百分比)
"ScaleOutInterval": 300 # 扩容检查间隔(秒)
},
"ShrinkConfig": {
"MinNodes": 0,
"ScaleInThreshold": 20, # 缩容阈值(百分比)
"ScaleInInterval": 600 # 缩容检查间隔(秒)
}
}
req.from_json_string(json.dumps(params))
resp = client.SetAutoScalingConfiguration(req)
print(resp.to_json_string())弹性伸缩功能可以识别工作负载情况,动态调整云上资源。高峰时期无缝扩展计算节点,低谷时期自动回收闲置资源,实现资源的按需使用。
8. 监控与告警
THPC提供了集群监控能力,用户可以通过控制台查看集群和节点的资源使用情况。主要监控指标包括:
- CPU使用率
- 内存使用率
- 磁盘IO
- 网络流量
- 作业队列长度
建议对关键业务集群设置CPU使用率超过85%、内存使用率超过90%的告警规则,通过微信、邮件等方式实时接收通知。可以通过EnableClusterMonitor和DisableClusterMonitor接口开启或关闭集群的监控能力。
9. 最佳实践与成本优化
9.1 集群规划建议
- 管控节点高可用:对于生产环境,建议配置2个管控节点实现高可用。
- 计算节点选型:根据计算任务类型选择合适的实例规格。CPU密集型任务选择计算优化型实例,内存密集型任务选择内存优化型实例。
- 存储规划:将共享存储挂载到统一路径(如/data),便于所有节点访问。
9.2 成本优化策略
- 弹性伸缩:充分利用THPC的弹性伸缩功能,根据负载动态调整计算节点数量。
- 计费模式选择:对于长期稳定的计算任务,选择包年包月计费模式可享受更优惠的价格。对于突发性业务高峰,选择按量计费模式。对于可容忍中断的批处理任务,可选择竞价实例以进一步降低成本。
- 资源利用率优化:通过合理配置作业队列和调度策略,最大化利用计算资源。
9.3 安全建议
- 使用RAM子账号进行日常操作,避免使用主账号密钥。
- 定期更换API密钥。
- 通过安全组控制网络访问,仅开放必要的端口。
- 对敏感数据启用加密存储。
10. 常见问题排查
10.1 作业提交失败
如果作业提交失败,首先检查管控节点与计算节点之间的网络连通性。可以在管控节点上通过ssh登录到计算节点进行测试。同时检查/var/log/slurmd.log日志文件,查看具体的报错原因。
10.2 节点无法加入集群
节点无法加入集群的常见原因包括:
- VPC和子网配置不正确
- 安全组规则阻挡了节点间通信
- 镜像版本不兼容
- 配额不足
10.3 存储挂载失败
存储挂载失败时,检查以下方面:
- CFS文件系统是否存在且状态正常
- 挂载路径是否已被占用
- NFS服务是否正常运行
- 网络连通性是否正常
11. 总结
本文全面介绍了腾讯云高性能计算平台THPC的对接使用方法。从产品定位和核心特性入手,详细讲解了通过控制台创建集群的完整流程,深入展示了Python SDK调用API进行集群管理、节点管理和作业提交的代码实现,并涵盖了Slurm作业调度、共享存储配置、弹性伸缩设置、监控告警等高级功能。通过本文的指南,读者可以快速掌握THPC的使用方法,在云上构建弹性、高效、经济的高性能计算环境。
THPC作为PaaS层的高性能计算资源管理服务,将底层IaaS资源的复杂性封装起来,为用户提供了统一的集群管理和作业调度体验。结合腾讯云强大的计算、存储和网络能力,THPC能够帮助科研机构、企业和开发者更专注于业务本身,加速创新与研发进程。
问答环节
问1:THPC和THCC有什么区别?
THCC(高性能计算集群)是通过RDMA网络互联的裸金属集群,属于IaaS层的产品,提供的是“算力硬件”。THPC(高性能计算平台)是构建在IaaS资源之上的PaaS层资源管理服务,整合了调度器和集群管理软件,提供的是“算力管理平台”。
问2:THPC支持哪些调度器?
目前THPC支持Slurm调度器。单个集群中队列数量上限为10个。Slurm默认队列名称为compute。
问3:THPC集群的计算节点数量有什么限制?
计算节点数量最少为0个,最多为200个。管控节点数量支持1个或2个。
问4:如何通过API向THPC集群提交作业?
可以通过SubmitJob接口提交作业。需要指定集群ID、作业名称、队列名称、资源需求(CPU和内存)以及执行的命令。
问5:THPC支持哪些存储类型?
THPC支持文件存储CFS、数据加速器GooseFS和全托管数据加速器GooseFSx。集群创建过程中会自动创建一个标准型的CFS挂载到/opt/目录下。
问6:如何降低THPC的使用成本?
可以通过以下方式降低成本:使用弹性伸缩功能根据负载动态调整节点数量;长期稳定任务选择包年包月计费;突发任务选择按量计费;可容忍中断的任务选择竞价实例。





