Pritiks23/HPC-Research-Cluster-Lab
GitHub: Pritiks23/HPC-Research-Cluster-Lab
一个模拟 HPC 研究集群的实验项目,用于实践和展示高性能计算环境下的系统管理、作业调度、监控自动化及事件响应等核心运维技能。
Stars: 0 | Forks: 0
# HPC 研究集群实验室
一个展示核心高性能计算(HPC)系统管理概念的组合项目,包括 Linux 管理、工作负载调度、监控、自动化和事件响应。
## 项目目标
本项目模拟了支持大学和研究计算环境的 HPC 系统工程师通常承担的职责。
展示的关键领域:
- Linux 系统管理
- Slurm 工作负载管理
- 集群监控
- 基础设施自动化
- 事件响应
- 文档与运维
## 仓库结构
```
HPC-Research-Cluster-Lab/
README.md
architecture/
├── cluster-diagram.png
slurm/
├── slurm.conf
├── test-job.sh
monitoring/
├── cluster_health.py
automation/
├── install_packages.yml
incidents/
├── node-failure.md
├── disk-full.md
├── failed-job.md
screenshots/
├── sinfo.png
├── squeue.png
├── monitoring.png
```
## 模拟集群架构
```
Head Node
+---------------------+
| Slurm Controller |
| Monitoring Scripts |
+----------+----------+
|
+-------------+-------------+
| |
+--------------+ +--------------+
| Compute Node | | Compute Node |
| Research Jobs| | Research Jobs|
+--------------+ +--------------+
```
## 监控
集群健康信息使用 Python 收集,包括:
- CPU 负载
- 内存利用率
- 磁盘利用率
- 系统正常运行时间
运行:
```
python3 monitoring/cluster_health.py
```
## 示例工作负载
运行:
```
./slurm/test-job.sh
```
示例输出:
```
HPC Research Job Started
Running scientific workload...
Simulation Complete
```
## 自动化
使用 Ansible 自动化包安装。
运行:
```
ansible-playbook automation/install_packages.yml
```
## 事件响应场景
💥 事件:“由于缺少输入文件导致的 HPC 作业失败”
一个模拟的 HPC 批处理作业在执行期间因缺少输入文件依赖而失败。该事件用于演示 HPC 环境中常见的故障排查工作流,包括作业失败分析、文件系统验证和纠正性修复。
事件:
作业脚本尝试读取预期工作目录中不存在的输入数据集(`missing_input.dat`)。结果,在执行 `cat` 命令期间,作业因找不到文件错误而终止。
诊断:
使用标准的 Linux 调试技术对该问题进行了诊断:
- 使用 `cat` 验证了脚本内容和执行流程
- 使用 `ls` 检查了文件是否存在
- 观察到指示缺少文件依赖的运行时错误
- 确定脚本依赖于相对文件路径,这导致了预期与实际文件位置之间的不匹配
这确认了根本原因是 **作业脚本中缺少输入文件以及未经校验的文件路径假设**。
解决:
通过重构作业脚本以提高健壮性和可重复性,解决了该问题:
- 引入了指定的工作目录(`/tmp/hpc_incident`)
- 将文件路径转换为绝对引用以消除歧义
- 添加了条件检查以检测缺少的输入文件
- 实现了在输入数据不可用时自动生成备用数据集
- 重新成功运行了作业,确认已恢复
修正后的工作流成功执行,展示了对缺失依赖项的正确处理以及改进的容错能力。此练习反映了现实世界中的 HPC 运维实践,在这些实践中,必须对用户提交的作业进行验证、调试,并使其能够抵御常见的执行错误。
## 展示技能
- Linux 命令行调试
- 文件系统和路径解析故障排查
- Shell 脚本编写和错误处理
- HPC 风格的作业失败分析
- 运维事件响应工作流
附加内容:
本项目包含以下操作运行手册:
1. 计算节点故障
2. 磁盘满载状态
3. Slurm 作业失败
每个事件包括:
- 症状
- 调查
- 根本原因
- 解决方案
- 预防
## 示例工作负载
运行:
```
./slurm/test-job.sh
```
示例输出:
```
HPC Research Job Started
Running scientific workload...
Simulation Complete
```
## 自动化
使用 Ansible 自动化包安装。
运行:
```
ansible-playbook automation/install_packages.yml
```
## 事件响应场景
💥 事件:“由于缺少输入文件导致的 HPC 作业失败”
一个模拟的 HPC 批处理作业在执行期间因缺少输入文件依赖而失败。该事件用于演示 HPC 环境中常见的故障排查工作流,包括作业失败分析、文件系统验证和纠正性修复。
事件:
作业脚本尝试读取预期工作目录中不存在的输入数据集(`missing_input.dat`)。结果,在执行 `cat` 命令期间,作业因找不到文件错误而终止。
诊断:
使用标准的 Linux 调试技术对该问题进行了诊断:
- 使用 `cat` 验证了脚本内容和执行流程
- 使用 `ls` 检查了文件是否存在
- 观察到指示缺少文件依赖的运行时错误
- 确定脚本依赖于相对文件路径,这导致了预期与实际文件位置之间的不匹配
这确认了根本原因是 **作业脚本中缺少输入文件以及未经校验的文件路径假设**。
解决:
通过重构作业脚本以提高健壮性和可重复性,解决了该问题:
- 引入了指定的工作目录(`/tmp/hpc_incident`)
- 将文件路径转换为绝对引用以消除歧义
- 添加了条件检查以检测缺少的输入文件
- 实现了在输入数据不可用时自动生成备用数据集
- 重新成功运行了作业,确认已恢复
修正后的工作流成功执行,展示了对缺失依赖项的正确处理以及改进的容错能力。此练习反映了现实世界中的 HPC 运维实践,在这些实践中,必须对用户提交的作业进行验证、调试,并使其能够抵御常见的执行错误。
## 展示技能
- Linux 命令行调试
- 文件系统和路径解析故障排查
- Shell 脚本编写和错误处理
- HPC 风格的作业失败分析
- 运维事件响应工作流
附加内容:
本项目包含以下操作运行手册:
1. 计算节点故障
2. 磁盘满载状态
3. Slurm 作业失败
每个事件包括:
- 症状
- 调查
- 根本原因
- 解决方案
- 预防标签:Ansible, HPC, Slurm, Yelp, 应用安全, 系统提示词, 系统运维, 自动化运维, 逆向工具