Slurm 高性能计算集群实现弹性伸缩(应用场景:算电协同、成本优化、VIP任务)
背景
最近在工作中遇到一个应用场景,客户希望 Slurm 超算集群的算力服务器能够像云服务器那样弹性伸缩,这个需求十分合理且在云计算领域早已十分成熟,虚拟化、容器化、k8s等在新兴行业早已得到了充分的验证,但由于传统行业的计算场景偏向于超大规模、稳定性波动没有达到非常小的力度,传统解决方案通常是通过人肉上下架服务器实现,调度周期通常以周、月为单位。在研究 Slurm 与其他各类调度器后,发现此需求技术上比较简单可行性很高。
下面是可能会利用到的一些技术:
- PXE/Cobbler/xCAT
- Terraform
- Ansible
- OpenStack Ironic
- IPMI/RedFish
效果展示
为了简单验证概念,使用 AI 工具 Vibe 了一个基于 Docker 和 KVM 的小型 Slurm 集群。其中本地固定2个计算节点,KVM弹性伸缩4个节点,当本地节点无法满足作业需求时,调用接口申请在KVM 中启动满足作业需求的机器,当弹性伸缩资源池中的机器空闲(没有作业)60分钟后关闭服务器

实现思路
通过验证,实现节点的灵活扩缩容是可以实现的,本地验证虚拟机启动约在1分钟内完成,空闲60分钟后关机。参考阿里云弹性伸缩服务器,可以考虑使用竞价实例,在夜间或者空闲时调度作业继续运行。实现本方案大体有如下步骤:
- 打通固定资源池和弹性资源池网络(考虑到云上云下对等互联成本较高,可以新建VPC并购买一台按带宽计费的固定云主机,使用WireGuard等开源工具实现网络打通,实现LDAP身份同步、集群状态管理等)
- 实现文件系统的挂载(由于广域网带宽和时延都收到限制,因此建议考虑在云上只存储固定的数据,例如大型软件二进制文件、数据集等,用户家目录等工作目录建议通过定期同步机制在作业开始前同步到云上即可。可购买弹性云盘或对象存储挂载给云上的机器)
- 构建基础镜像(建议在云上构建和本地计算节点操作系统、关键软件环境一致的启动镜像,包含固定的一些配置例如LDAP、Slurm配置文件等相关内容)
- 实现弹性伸缩插件(在此部分中定义云上机器的启动、关闭等接口,云下Slurm集群的资源无法满足时调用插件选择镜像启动云上服务器。可在此步骤中定义云上资源的开通关停规则,例如实例规格、竞价上限、保留时间等内容)
- 考虑到此类需求场景可能都是一些大规模的单机作业,因此云上可以不考虑机器之间的并行,若有需要请考虑云服务商的eRDMA等机器类型。另外仿真作业很有可能需要图形化或者许可证服务器,这些需求都可以使用步骤1购买的固定云主机实现。
说明
本方案仅为初步思路,实现时一定存在很多细节和问题需要解决,需要根据实际需求进行调整和优化。另外因为广域网的特性,建议不要将云上云下的机器放在同一个资源池中,极有可能存在网络通信问题造成的瓶颈;也不适合并行作业,,比较适合CPU密集型需求。
本人文章禁止转载,博客地址:https://www.cnblogs.com/lijiext

浙公网安备 33010602011771号