Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

slurm-web,也称为 slurm-wlm-web,是为 Slurm 工作负载管理器提供的一个 Web 界面。Slurm 是一个用于管理大型和小型 Linux 集群的开源、容错且高度可扩展的集群管理和作业调度系统。slurm-web 的主要功能是提供一个方便用户监控和管理 Slurm 集群的途径,而无需直接使用命令行工具。

Slurm-web 在 Slurm 的基础上提供了一个 Web 界面,具有直观的图形视图、清晰的洞察力和先进的可视化功能,可用于跟踪作业和监控组织内 HPC 超级计算机的状态。Slurm-web要求Slurmdbd(版本 >= 23.02)的功能强大的 slurm HPC 集群。

Slurm-web的地址:https://github.com/rackslab/Slurm-web,前端采用vue,后端为Python的Flask。

安装步骤

Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

  • 安装 slurmrestd

    python
    $ sudo apt install slurmrestd
    $ sudo systemctl enable slurmrestd
    $ sudo systemctl start slurmrestd

列出可用的 API 版本

```python
# sinfo --version
slurm-wlm 23.11.4
root@andrew-HP:~# slurmrestd -d list -u slurm
Possible data_parser plugins:
data_parser/v0.0.39
data_parser/v0.0.40
```
  • 使用unix套接字测试 API

    ```python

    curl --unix-socket /run/slurmrestd/slurmrestd.socket http://slurm/slurm/v0.0.40/diag

    {
    "statistics": {
    "parts_packed": 1,
    "req_time": {
    "set": true,
    "infinite": false,
    "number": 1736735146
    },
    "req_time_start": {
    "set": true,
    "infinite": false,
    "number": 1736728764
    },
    "server_thread_count": 2,
    "agent_queue_size": 0,
    "agent_count": 0,
    "agent_thread_count": 0,
    "dbd_agent_queue_size": 0,
    "gettimeofday_latency": 15,
    "schedule_cycle_max": 44,
    "schedule_cycle_last": 43,
    "schedule_cycle_total": 107,
    "schedule_cycle_mean": 14,
    "schedule_cycle_mean_depth": 0,
    "schedule_cycle_per_minute": 1,
    "schedule_queue_length": 0,
    "schedule_exit": {
    "end_job_queue": 107,
    "default_queue_depth": 0,
    "max_job_start": 0,
    "max_rpc_cnt": 0,
    "max_sched_time": 0,
    "licenses": 0
    },
    "jobs_submitted": 0,
    "jobs_started": 0,
    "jobs_completed": 0,
    "jobs_canceled": 0,
    "jobs_failed": 0,
    "jobs_pending": 0,
    "jobs_running": 0,
    "job_states_ts": {
    "set": true,
    "infinite": false,
    "number": 1736735127
    },
    "bf_backfilled_jobs": 0,
    "bf_last_backfilled_jobs": 0,
    "bf_backfilled_het_jobs": 0,
    "bf_cycle_counter": 0,
    "bf_cycle_mean": 0,
    "bf_depth_mean": 0,
    "bf_depth_mean_try": 0,
    "bf_cycle_sum": 0,
    "bf_cycle_last": 0,
    "bf_last_depth": 0,
    "bf_last_depth_try": 0,
    "bf_depth_sum": 0,
    "bf_depth_try_sum": 0,
    "bf_queue_len": 0,
    "bf_queue_len_mean": 0,
    "bf_queue_len_sum": 0,
    "bf_table_size": 0,
    "bf_table_size_mean": 0,
    "bf_when_last_cycle": {
    "set": true,
    "infinite": false,
    "number": 0
    },
    "bf_active": false,
    "bf_exit": {
    "end_job_queue": 0,
    "bf_max_job_start": 0,
    "bf_max_job_test": 0,
    "bf_max_time": 0,
    "bf_node_space_size": 0,
    "state_changed": 0
    },
    "rpcs_by_message_type": [
    {
    "message_type": "MESSAGE_NODE_REGISTRATION_STATUS",
    "type_id": 1002,
    "count": 4,
    "average_time": 117,
    "total_time": 470
    },
    {
    "message_type": "ACCOUNTING_REGISTER_CTLD",
    "type_id": 10003,
    "count": 1,
    "average_time": 93108,
    "total_time": 93108
    },
    {
    "message_type": "REQUEST_PING",
    "type_id": 1008,
    "count": 297,
    "average_time": 91,
    "total_time": 27259
    },
    {
    "message_type": "REQUEST_JOB_INFO",
    "type_id": 2003,
    "count": 297,
    "average_time": 61,
    "total_time": 18125
    },
    {
    "message_type": "REQUEST_NODE_INFO",
    "type_id": 2007,
    "count": 299,
    "average_time": 72,
    "total_time": 21815
    },
    {
    "message_type": "REQUEST_PARTITION_INFO",
    "type_id": 2009,
    "count": 299,
    "average_time": 48,
    "total_time": 14621
    }
    ],
    "rpcs_by_user": [
    {
    "user": "root",
    "user_id": 0,
    "count": 4,
    "average_time": 117,
    "total_time": 470
    },
    {
    "user": "slurm",
    "user_id": 1052,
    "count": 1193,
    "average_time": 146,
    "total_time": 174928
    }
    ]
    },
    "meta": {
    "plugin": {
    "type": "openapi/slurmctld",
    "name": "Slurm OpenAPI slurmctld",
    "data_parser": "data_parser/v0.0.40",
    "accounting_storage": "accounting_storage/slurmdbd"
    },
    "client": {
    "source": "/run/slurmrestd/slurmrestd.socket->socket:[78242] (fd 8)",
    "user": "root",
    "group": "root"
    },
    "command": [],
    "slurm": {
    "version": {
    "major": "23",
    "micro": "4",
    "minor": "11"
    },
    "release": "23.11.4",
    "cluster": "cluster"
    }
    },
    "errors": [],
    "warnings": []
    ```

参考资料

安装 slurm-web

  • 下载软件包的密钥

    ```sh
    $ curl -sS https://pkgs.rackslab.io/keyring.asc | gpg --dearmor | tee /usr/share/keyrings/rackslab.gpg > /dev/null
    $ vi /etc/apt/sources.list.d/rackslab.sources
    Types: deb
    URIs: https://pkgs.rackslab.io/deb
    Suites: ubuntu24.04
    Components: maindp
    Architectures: amd64
    Signed-By: /usr/share/keyrings/rackslab.gpg

    $ sudo apt update
    $ sudo apt install slurm-web-agent slurm-web-gateway
    ```

  • JWT 密钥

slurm-web 使用 JWT 令牌在组件之间进行身份验证。

```sh
$ /usr/libexec/slurm-web/slurm-web-gen-jwt-key
```
  • RacksDB

Slurm-web 使用 RacksDB 生成数据中心机架与计算节点的图形表示。

```sh
$ apt install racksdb
$ cp -r /usr/share/doc/python3-racksdb/examples/db/* /var/lib/racksdb/
$ racksdb datacenters
```
  • Slurm-web 配置文件

    ```sh

    vi /etc/slurm-web/agent.ini

    [service]
    cluster=cluster
    interface=localhost
    port=5012

    vi /etc/slurm-web/gateway.ini

    [service]
    interface=0.0.0.0
    port=5011

    [ui]
    host=http://172.16.37.34:5011

    [agents]
    url=http://localhost:5012

    $ sudo systemctl restart slurm-web-agent.service
    $ sudo systemctl restart slurm-web-gateway.service
    ```

从浏览器访问 Web UI http://:5011

Slurm-web 仅支持 LDAP 身份验证(默认身份验证已禁用)

Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

选择集群
Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

群集和正在运行的作业概览
Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

作业状态
Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

作业详情
Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

节点状态
Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

服务质量(默认正常)
Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6371.html

(0)
LomuLomu
上一篇 2025 年 1 月 14 日 下午12:25
下一篇 2025 年 1 月 14 日 下午1:26

相关推荐

  • python SQLAlchemy ORM——从零开始学习 01 安装库

    01基础库 1-1安装 依赖库:sqlalchemy “`python pip install sqlalchemy #直接安装即可 “` 1-2导入使用 这里讲解思路【个人的理解】,具体写其实就是这个框架: 导入必要的接口【有创建engine以及declarative_base】 通过create_engine接口创建engine,根据翻译可以翻译成引…

    2025 年 1 月 12 日
    39900
  • 架构-初识BFF

    引言 晚上公司开了一个技术分享会,主要内容就是公司的项目架构,会中讲解了项目整体架构是BFF架构,就是在微服务之上多加了一层。 除此之外,还讲解了DDD设计思想,主要用于各个业务中台,如订单中台、用户中台等。 这是我的架构第一课,听得有些似懂非懂,于是浅浅地整理一下。 BFF 是什么 BFF是服务于前端的后端,全称Backend For Frontend。B…

    2025 年 1 月 1 日
    38900
  • JavaScript 拖拽与观察者模式的实现及应用

    前言 本文将通过几个具体的代码片段,深入探讨 JavaScript 中的拖拽功能和观察者模式(发布-订阅模式)的实现及其应用场景。 这些代码片段不仅展示了如何实现这些功能,还解释了其背后的原理和实际用途。通过阅读本文,读者可以更好地理解 JavaScript 的高级特性,并将其应用到实际项目中。 1. 拖拽功能的实现 代码片段 “`html Documen…

    2025 年 1 月 19 日
    50400
  • 深入解析Java泛型类型擦除机制及其应用场景

    Java泛型中的类型擦除机制是语言设计的关键特性,它在编译阶段会将泛型参数信息转换为原始类型(通常为Object),同时自动插入必要的类型转换代码。这种设计既保证了与早期Java版本的兼容性,又实现了编译时的类型安全检查。 类型擦除机制解析 编译期类型验证: 编译器利用泛型参数进行严格的类型校验,防止类型不匹配的操作。比如禁止向声明为String类型的集合中…

    2025 年 5 月 12 日
    31800
  • WxPython跨平台开发框架之使用PyInstaller 进行打包处理

    使用PyInstaller 打包Python项目是一个常见的需求,它可以将Python程序及其所有依赖项打包成一个独立的可执行文件或者安装文件,方便在没有安装Python环境的机器上运行。本随笔介绍WxPython跨平台开发框架中使用PyInstaller 进行打包处理,包括在WIndow平台下生成独立的exe文件,松散结构的exe文件和目录,以及在MacO…

    2025 年 1 月 11 日
    59600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信