0%

用ubuntu搭建slurm平台

机器配置(注:我是基于zxh的博客,以及官方文档针对ubuntu进行配置的)

两台ubuntu的虚拟机,一台作为master(2核心),一台作为slave(1核心)

  • 配置过程
  1. 配置etc/hosts文件, 以及配置静态ip(默认是dhcp动态的,这样重启或者到了一个新的网络环境下局域网内部ip会自适应,这样每次都要调整很麻烦,所以此处设置为静态的)
    注意修改master node的etc/hostname文件,最好保持与你的用户名一致,不然后续可能会出现”slurmctld: error: this host (xx) not valid controller (master or (null))”错误
    设置静态ip的时候需注意网关的设置,一般是192.168.1.1(路由器的地址嘛,关于网关的知识可以自行了解一下)
  2. 关闭防火墙(ubuntu’s SELinux默认是关闭的)
    1
    ufw disable (注:ufw,即uncomplicated firewall)
  3. 配置ntp (network Time protocol) 时间同步服务
    ntp简介,使用timedatectl可以查看时间同步状态,默认我这里时ntp synchronized: yes已经开启的
  1. 配置安装munge

    munge是为了授权才安装的,确保所有节点上的munge.key是相同的,并且在启动slurm之前要确保守护进程munged处于运行状态

    1
    sudo apt-get install munge

    这里直接用apt安装,默认就配置好了munge的owner以及grouper,如果要手动配置的话要注意, munge daemon process的启用者要与munge’ owner一致。
    安装完毕后将host节点中/etc/munge/munge.txt拷贝到其他节点的/etc/munge里面去(首先都安装上ssh)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # host machine
    scp /etc/munge/munge.key slave1@192.168.1.105:/tmp # 将host machine节点上的munge.key复制到ip为192.168.1.105的slave1节点的tmp目录(这个目录有权限)
    # 然后在slave节点上移动munge.txt到/etc/munge目录下,注意更改复制过来后key文件的owner与grouper为munge
    sudo chown munge:munge munge.key

    # Start the daemon automatically at boot:
    sudo systemctl enable munge #(开机自启)
    # Start the daemon now:
    sudo systemctl start munge
    # Stop the daemon:
    sudo systemctl stop munge

    ps -aux | grep munge查看

    * 注意:一定要在slurm daemon开启之前start munge daemon

  2. 下载配置 slurm

    4.1 ubuntu,现在下载页面下载slurm源码,编译后根据这篇博客配置slurm.conf文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 安装依赖
    apt-get install hwloc libhwloc-dev libmunge-dev libmunge2 munge mariadb-server libmysqlclient-dev(slave节点不需要最后两个sql)
    # 解压,在目录进行编译
    ./configure
    sudo make
    sudo make install
    # 编译完成后进入 slurm-xxxx/etc
    cp slurm.conf.example slurm.conf, 然后根据上述博客进行配置,配置完成后将slurm.conf拷贝到集群所有节点上面
    scp slurm.conf slave1@192.168.1.105:/tmp
    # 在slave1节点将slurm.conf文件拷贝进入安装目录
    cp /tmp/slurm.conf /home/slave1/slurmxxxx/etc

    4.2 此处根据zxh配置Maria DB以及配置slurm

    1
    2
    3
    4
    5
    6
    sudo apt-get install mariadb-servert
    # 注意,在ubuntu下安装mariadb,但是操作的时候是操作的mysql
    sudo systemctl start mysql
    systemctl enable mysql
    mysql_secure_installation
    # 将配置好的slurm.conf copy至/usr/local/etc/中去

4.3
主节点运行:

1
2
3
slurmctld -c
slurmd -c
注意:-c时后台运行,在第一次运行时可以使用-D参数,显式运行以观察运行情况

slave节点运行:
1
slurmd -c

False Log

  • 我在master运行sudo slurmctld -c启动时报错找不到/usr/local/etc/slurm.conf文件

    将编译目录下/etc/slurm.conf复制进去即可

  • 使用sinfo时报错:slurm_load_partitions: unable to contact slurm controller (connect failure)

    这个就是slurmctld没有正常启动…

  • “slurmd: fatal: mkdir(/var/spool/slurm/d): No such file or directory”

    创建slurm中部分配置的目录,/var/spool/slurm/ctld 和 /var/spool/slurm/d

    1
    2
    3
    # 注意更改spool以及其子目录文件的所有者及权限(如果需要的话)
    mkdir -p /var/spool/slurm/ctld
    mkdir -p /var/spool/slurm/d
  • master成功启动slurmctld 与 slurmd,但是从节点启动slurmd启动时报错:invalid user for slurmUser xxx, ignored(此时master与slave的slurm.conf完全一样)

    更改salve节点/etc/slurm-llnl/slurm.conf文件的slurmUser的值为slave的用户即可

  • slave节点:slurmd:error:couldn’t find the specified plugin name for select/cons_tres lokking at all files

    这个我也找不到问题所在了,定位在 slave节点上的/usr/local/lib下面居然没有找到与slurm相关的文件!,奇了怪了,算了,现在已经凌晨了,其他centos配个环境怎么这么简单,一路都没有错误,ubuntu错误为什么这么多呢,这个问题也是连日志都没有,我把master上面的相关文件copy至slave节点还是没有,那我直接把slave节点删除了!就用一个master同时充当controller与computer算了。就这样,
    第二天早上我tm发现,在salve节点上居然没有make install… 所以在/usr/local/lib中找不到相关文件…

安装经验总结