aws parallelcluster 初步了解HPC和pcluster集群的创建和使用
参考资料
-
Running CFD on AWS ParallelCluster at scale 400
-
Tutorial on how to run CFD on AWS ParallelCluster 400
-
Running CFD on AWS ParallelCluster at scale 400
-
Running WRF on AWS ParallelCluster 300
-
Setup AWS ParallelCluster 3.0 with AWS Cloud9 200
-
HPC For Public Sector Customers 200
-
Slurm REST API, Accounting and Federation on AWS ParallelCluster 400
-
Running Fire Dynamics CFD Simulation on AWS ParallelCluster at scale 200
AWS ParallelCluster 是 AWS 支持的开源集群管理工具。它允许客户轻松入门,并在几分钟内更新和扩展 AWS Cloud 中的 HPC 集群环境。支持各种作业调度程序,如 AWS 批处理、 SGE、Torque和 Slurm(Amazon ParallelCluster 3. x 不支持 SGE 和 Torque 调度器),以方便作业提交
集群工具和创建
安装pcluster工具,需要依赖cdk生成cloudformation模板,因此需要预装node环境
virtualenv pvenv
source pvenv/bin/active
pip install --upgrade "aws-parallelcluster"
pcluster version
# pip install aws-parallelcluster --upgrade --user
生成集群配置
pcluster configure --config cluster-config.yaml
配置文件示例
Region: cn-north-1
Image:
Os: ubuntu1804
HeadNode:
InstanceType: m5.large
Networking:
SubnetId: subnet-027025e9d9760acdd
Scheduling:
Scheduler: slurm
SlurmQueues:
- Name: queue1
ComputeResources:
- Name: c5large
InstanceType: c5.large
MinCount: 0
MaxCount: 10
Networking:
SubnetIds:
- subnet-077cf5772b9302a37
创建集群
默认情况下创建的 ParallelCluster 不启用 VPC 流日志
pcluster create-cluster --cluster-name mycluster --cluster-configuration cluster-config.yaml
删除集群
pcluster delete-cluster --cluster-name mycluster
连接集群
pcluster ssh --cluster-name mycluster -i /home/ec2-user/.ssh/cluster-key.pem
获取日志
pcluster export-cluster-logs --cluster-name mycluster --region cn-north-1 \
--bucket bucketname --bucket-prefix logs --output-file /tmp/archive.tar.gz
集群的网络配置
pcluster对集群的网络要求比较严格
- vpc必须开启
DNS Resolution
和DNS Hostnames
可能的网络配置如下
(1)单个公有子网
- 子网启用自动分配公有ip
- 如果实例为多网卡,则需要开启EIP,因为公有 IP 只能分配给使用单个网络接口启动的实例
(2)头节点在公有子网,计算节点在nat私有子网
- nat需要正确配置,代理计算节点流量
- 头节点配置同(1)
(3)使用dx连接http proxy
(4)私有子网
-
必须配置以下终端节点
Service Service name Type Amazon CloudWatch com.amazonaws. region-id
.logsInterface Amazon CloudFormation ccom.amazonaws. region-id
.cloudformationInterface Amazon EC2 com.amazonaws. region-id
.ec2Interface Amazon S3 com.amazonaws. region-id
.s3Gateway Amazon DynamoDB com.amazonaws. region-id
.dynamodbGateway Amazon Secrets Manager(AD功能需要) com.amazonaws. region-id
.secretsmanagerInterface -
禁用route53(默认pcluster会创建,但是r53不支持vpc endpoint)并启动ec2的dns解析(使用ec2的dns主机名称)
Scheduling: ... SlurmSettings: Dns: DisableManagedDns: true UseEc2Hostnames: true
-
只支持slurm调度器
最佳实践
(1)实例类型
-
头节点协调集群的扩展逻辑,并负责将新节点连接到调度器,如果性能不足会导致集群崩溃
-
头节点通过nfs将任务与计算节点共享,需要确保足够和网络和存储带宽
以下目录在节点间共享
- /home,默认的用户 home 文件夹
- /opt/intel
- /opt/slurm,Slurm Workload Manager 和相关文件
(2)网络性能
- 使用置放群组,使用cluster策略实现最低的延迟和最高的每秒数据包网络性能
- 选择支持增强联网,使用EFA类型实例
- 保证实例具备足够的网络带宽
(3)共享存储
- 使用fsx或efs等外部存储,避免数据损失,便于集群迁移
- 使用 custom bootstrap actions 来定制节点,而非使用自定义ami
(4)集群监控
- 使用sar收集日志
- 使用node exporter收集指标
slurm相关资料
-
Slurm作业调度系统使用指南-USTC超算中心
-
Slurm资源管理与作业调度系统安装配置
-
北京大学国际数学中心微型工作站slurm使用参考
-
slurm配置
(1)JobRequeue
控制要重新排队的批作业的默认值。manager可能重新启动作业,例如,在计划停机之后、从节点故障恢复或者在被更高优先级的作业抢占时
This option controls the default ability for batch jobs to be requeued. Jobs may be requeued explicitly by a system administrator, after node failure, or upon preemption by a higher priority job
作业抢占的报错
slurmstepd: error: *** JOB 63830645 ON p08r06n17 CANCELLED AT 2020-08-18T21:40:52 DUE TO PREEMPTION ***
对于pcluster来说,任务失败会自动重新排队
(2)backfill
https://hpc.nmsu.edu/discovery/slurm/backfill-and-checkpoints/
当作业在回填分区中暂停时,当具有较高优先级的作业完成执行时,它将立即重新启动并从头开始计算
IBM的LSF对backfill解释的还比较清楚,但是不知道和slurm有什么区别
https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=jobs-backfill-scheduling
Introducing new backfill-based scheduler for SLURM resource manager