编译和部署 OpenSCOW Slurm 适配器

编译和部署适配器

1. 下载代码编译生成二进制文件

1.2.1 准备环境

准备一台能连网的服务器或者虚拟机,安装 Go 语言、配置相关环境变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下载go语言安装包,安装go(本文以1.22版本为例)
cd download/
wget https://golang.google.cn/dl/go1.22.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

# 在/etc/profile中设置环境变量
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:/$GOROOT/bin:$GOPATH/bin

# source环境变量
source /etc/profile

# 验证
go version

# 设置代理
go env -w GOPROXY=https://goproxy.cn,direct

# 开启go mod管理
go env -w GO111MODULE=on

1.2.2 拉取 Slurm 适配器代码

1
2
[root@manage01]# cd /root    # 将slurm适配器代码放在root目录下
[root@manage01]# git clone https://github.com/PKUHPC/scow-slurm-adapter.git

1.2.3 进入代码目录,替换 config.go 源码

将以下命令:

1
scontrol show node=%s | grep ' Gres=' | awk -F':' '{if ($NF ~ /^[0-9]+$/) {print $NF} else {gsub(/[^0-9]/, "", $(NF-1)); print $(NF-1)}}'

替换为:

1
scontrol show node=%s | awk -F= '/Gres=/ {gsub(/[^0-9]/,"", $2); if($2=="") print "Gres=(null)"; else print $2}'

1.2.4 编译项目

1
2
3
4
5
6
# 在代码根目录下执行make build生成二进制文件
[root@manage01 scow-slurm-adapter]# make build
CGO_BUILD=0 GOARCH=amd64 go build -o scow-slurm-adapter-amd64

[root@manage01 scow-slurm-adapter]# ls
buf.gen.yaml config docs gen go.mod go.sum main.go Makefile README.md scow-slurm-adapter-amd64 tests utils

2. 配置、部署 Slurm 适配器

2.1 拷贝文件至 Slurm 管理节点

将编译生成的二进制文件及 config 目录拷贝至 Slurm 管理节点的部署目录中:

1
2
3
scp -r scow-slurm-adapter-amd64 config slurm_mn:/adapter
# slurm_mn 为需要部署适配器的slurm管理节点
# /adapter 为slurm管理节点的部署目录

2.2 修改 config 目录下的 config.yaml 配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
log:
level: "info"

# slurm 数据库配置
mysql:
host: 127.0.0.1
port: 3306
user: slurm
dbname: slurm_acct_db
password: 123456
clustername: hpc
databaseencode: latin1

# 服务地址设置
service:
addr: 0.0.0.0:8972

# slurm 默认Qos设置
slurm:
defaultqos: normal
slurmBinDir: "/usr/bin"

# module profile文件路径
modulepath:
path: /lustre/software/module/5.2.0/init/profile.sh

# 计算分区描述
partitiondesc:
- name: compute # 计算分区名
desc: "这是普通的cpu计算分区"

2.3 启动 Slurm 适配器

slurm 适配器二进制文件和 config 目录需在同一目录(部署目录)下

1
2
3
4
5
6
7
8
9
[root@slurm_mn]# ls /adapter
config scow-slurm-adapter-amd64

# 给二进制添加执行权限
[root@slurm_mn]# chmod +x /adapter/scow-slurm-adapter-amd64

# 在slurm管理节点上启动服务
[root@slurm_mn]# cd /adapter && nohup ./scow-slurm-adapter-amd64 > server.log 2>&1 &
# 适配器启动后会在部署目录生成一个server.log的日志文件

3. 运维 Slurm 适配器

3.1 查看 Slurm 适配器进程

1
2
ps aux | grep [s]cow-slurm-adapter-amd64
# 有输出则进程存活,无输出则适配器已终止

3.2 查看日志信息

1
less /adapter/server.log

4. 安装和配置 OpenSCOW

4.1 下载 openscow-cli

openscow-cli 是官方维护的 OpenSCOW 部署和运维工具,能够帮助您快速部署、管理和维护 OpenSCOW 集群。

参考 open-cli 下载 openscow-cli,并将其存放到一个用于存放 OpenSCOW 配置文件的目录下。

1
2
3
4
5
6
7
# scow目录将会用于存放OpenSCOW相关的配置文件
mkdir scow
cd scow

# 将下载的openscow-cli移动到scow目录下
cp /path/to/scow-cli ./
chmod +x scow-cli

4.2 生成配置文件

1
2
# 生成安装配置文件./install.yaml和示例配置文件目录./config
./cli init

4.3 主要配置文件及说明

按照以下顺序配置系统:

顺序 配置文件 功能说明 是否必须 备注
1 install.yaml 安装文件 必须 按照集群需求修改对应参数
2 {集群ID}.yaml 集群配置文件 必须 支持多集群,一个集群一个配置文件
3 auth.yaml 认证系统 必须 所有集群同一个认证系统
4 mis.yaml 管理系统 可选
5 portal.yaml 门户系统 可选 若登录节点不是安装的 xfce,需要对应进行修改
6 audit.yaml 审计系统 可选

5. 配置文件示例

5.1 install.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
port: 80
basePath: /
imageTag: master
portal: {}
mis:
dbPassword: "MyScow@2026"
log:
fluentd:
logDir: /var/log/fluentd
auth:
type: ldap
ldap:
url: "ldap://10.1.0.64:389"
baseDn: "dc=pku,dc=com"
userDn: "cn=admin,dc=pku,dc=com"
password: "MyLdap@2026"
userSearchBase: "ou=hpc"
userFilters: "(uid={{username}})"
audit: {}
gateway:
proxyReadTimeout: 36000s

5.2 hpc.yaml(集群配置文件)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 集群显示名称
displayName: hpc

# 集群选择时排序的优先级,数字越小优先级越高
priority: 0

# 调度器适配器地址
adapterUrl: "10.1.0.64:8972"

loginNodes:
- name: login01
address: "10.1.0.65"

# 桌面与 VNC 配置
loginDesktop:
enabled: true
wms:
- name: Xfce
wm: xfce
maxDesktops: 3
desktopsDir: scow/desktops

# TurboVNC 的安装路径
turboVNCPath: /opt/TurboVNC

# 模块启用状态
crossClusterFileTransfer:
enabled: false

hpc:
enabled: true

ai:
enabled: false

# 核心依赖配置
scheduler:
type: "slurm"
slurm:
binPath: "/usr/bin"

storage:
homePath: "/data/home"
publicPath: "/data/public"

5.3 auth.yaml(认证系统配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
authType: ldap

tokenTimeoutSeconds: 36000

ldap:
url: ldap://10.1.0.64:389
bindDN: cn=Manager,ou=hpc,o=pku
bindPassword: "MyLdap@2026"
searchBase: "ou=hpc,o=pku"
userFilter: "(uid=*)"

attrs:
uid: uid
name: cn
mail: mail

addUser:
userBase: "ou=People,ou=hpc,o=pku"
homeDir: /data/home/{{ userId }}
userIdDnKey: uid
groupStrategy: newGroupPerUser

newGroupPerUser:
groupBase: "ou=Group,ou=hpc,o=pku"
groupIdDnKey: cn

# auth 界面 UI 配置
ui:
default:
backgroundImagePath: "./assets/background.png"
backgroundFallbackColor: "#9a0000"
logoType: "dark"

slogan:
color: "white"
title:
i18n:
default: "开源算力中心门户和管理平台"
en: "Open-source Compute Center Portal and Management Platform"
zh_cn: "开源算力中心门户和管理平台"
texts:
- i18n:
default: "图形化界面,使用方便"
en: "Graphical user interface, user-friendly"
zh_cn: "图形化界面,使用方便"
- i18n:
default: "功能丰富,管理简单"
en: "Feature-rich, easy management"
zh_cn: "功能丰富,管理简单"
- i18n:
default: "一体化部署,开箱即用"
en: "Integrated deployment, ready to use out of the box"
zh_cn: "一体化部署,开箱即用"
- i18n:
default: "标准化平台,支持算力融合"
en: "Standardized platform, supporting compute integration"
zh_cn: "标准化平台,支持算力融合"
- i18n:
default: "开源中立,独立自主"
en: "Open-source neutrality, independent and autonomous"
zh_cn: "开源中立,独立自主"

编译和部署 OpenSCOW Slurm 适配器
https://www.sajuna.cn/2026/05/16/编译和部署适配器/
作者
Matrix
发布于
2026年5月16日
许可协议