favicon Jay Lee DevLog

728x90
300x250

일하면서 하느라 드디어 slurm 설치가 끝났다.

해당 내용은 서버노드와

computenode(vm환경)에 설치과정을 처음부터 끝까지 정리해뒀다.

 


먼저 rpmbuild가 없다면

yum install rpmbuild

 

slurm다운로드

https://www.schedmd.com/archives.php

 

rpm파일 만들기

rpmbuild -ta slurm*.tar.bz2 // 실행하면 설치 안되어 있는 프로그램들 알 수 있다.

오류 사항들 하나하나 찾아서 다운로드 및 설치.


* munge-devel

- rocky

dnf --enablerepo=powertools install munge-devel

- centos

yum install munge-devel

* munge-libs

yum install munge-libs


* python

yum install python3

* readline-devel

yum install readline-devel

* perl(ExtUtils::MakeMaker)

yum install perl-ExtUtils-MakeMaker

* pam-devel

yum install pam-devel

configure: error: no acceptable C compiler found in $PATH

이런 에러가 나온다면,

yum install -y gcc-c++

파일을 찾을 수 없음: /root/rpmbuild/BUILDROOT/slurm-20.11.9-1.el7.x86_64/usr/lib64/slurm/accounting_storage_mysql.so

이런 에러가 나온다면,

rpmbuild -ta slurm*.tar.bz2 --with mysql

 

명령 실행 했는데,

mysql-devel >= 5.0.0 is needed by slurm-20.11.9-1.el7.x86_64

이런 에러가 나온다면

yum install mysql-devel

(밑에 내용은 당장은 안해도 된다.)

이후 mysql도 사용해야하니 하는 김에

mysql 설치(url은 각자 OS 버전에 맞는 걸로 바꿔야함.)

yum install https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
yum install mysql-server

다시 설치 진행

rpmbuild -ta slurm*.tar.bz2 --with mysql

 

정상적으로 실행될 경우

작성: /root/rpmbuild/SRPMS/slurm-20.11.9-1.el7.src.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-perlapi-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-devel-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-example-configs-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-slurmctld-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-slurmd-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-slurmdbd-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-libpmi-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-torque-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-openlava-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-contribs-20.11.9-1.el7.x86_64.rpm
작성: /root/rpmbuild/RPMS/x86_64/slurm-pam_slurm-20.11.9-1.el7.x86_64.rpm

rpm 파일들 생성된다.

모든 노드에 rpm 파일 scp로 전달하여 다 설치하면 된다.

 

yum --nogpgcheck localinstall /root/rpmbuild/RPMS/x86_64/slurm-devel-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-example-configs-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-slurmctld-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-slurmdbd-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-libpmi-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-torque-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-openlava-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-contribs-20.11.9-1.el7.x86_64.rpm /root/rpmbuild/RPMS/x86_64/slurm-pam_slurm-20.11.9-1.el7.x86_64.rpm

 

slurm 버전 같은거 쓴다면 위에 내용 복사해서 붙이면 다 설치된다.

 


* slurm 셋팅

/usr/share/doc/slurm-18.08.8/html/configurator.easy.html // 접속해서 값 입력한다. slurm 버전에 맞게 주소 바꿔줘야 한다.

나는 file:///usr/share/doc/slurm-20.11.9/html/configurator.easy.html 여기다. (20.11.9 버전)

다 작성한 후에 submit을 누르면

페이지가 바뀌고 내가 입력한 값들을 보여주는데

이 내용을 전체 복사해서

/etc/slurm/slurm.conf (ovewriting the old file)

위의 파일을 만들어 붙여넣기 한 후 저장해주면 된다.

그리고 단일 노드면 상관없지만 다른 노드가 있는 경우에는

해당 파일을 모든 노드에 옮겨주면 된다.

https://dlwjdwls90.tistory.com/54 참고.

 


* slurm 설치 전 설치해야 할 것들.

- munge

위에서 이미 다 설치가 되어 있을 거다.

munge는 인증키?를 만들어주는 프로그램이라고 보면 될 것 같고,

키 만드는 방법을 알려주겠다.

yum install rng-tools -y
rngd -r /dev/urandom
/usr/sbin/create-munge-key -r

 

이렇게 하면 /etc/munge/munge.key가 만들어질건데,

해당 키를 scp 명령을 사용하여 모든 노드로 보내주면 된다.

 

그리고 나서 다음과 같이

소유권을 바꿔주지 않으면  systemctl로 실행했을 때 실행 안되는 경우가 있을거다.

chown munge: /etc/munge/munge.key
chmod 400 /etc/munge/munge.key

여기서 munge 계정이

/etc/passwd에 있는지 확인해야하고,

만약 없다면,

munge:x:971:970:Runs Uid 'N' Gid Emporium:/var/run/munge:/sbin/nologin

해당 내용을 붙여넣으면 된다.

 

추가로

yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwloc-devel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad -y

해당 명령을 실행해서 관련 패키지들을 설치해주자. 설치 안되는건 일단 넘어가도 된다.


* 서버노드

이제 서버 node에서 slurmctld를 실행할건데,

systemctl enable slurmctld.service
systemctl start slurmctld.service
systemctl status slurmctld.service

.service는 빼도 된다.

 

만약 아래와 같은 에러가 뜬다면,

journalctl -f 실행했을때 나오는 에러

cat /etc/passwd | grep slurm

커맨드를 입력했을 때 아무 결과 값이 없는 경우가 있다.

그럴 때 slurm 계정을 추가해주면 된다.

slurm:x:1997:1997:SLURM workload manager:/var/lib/slurm:/bin/bash

위의 내용은 /etc/passwd에 넣어주자.

 

그리고 다시 실행하면 될 거다.

위처럼 되면 정상 실행된 거다.

아니면

scontrol show nodes

이렇게 나와도 된거다.

 

mkdir /var/spool/slurmctld
chown slurm: /var/spool/slurmctld
chmod 755 /var/spool/slurmctld
touch /var/log/slurmctld.log
chown slurm: /var/log/slurmctld.log
touch /var/log/slurm_jobacct.log /var/log/slurm_jobcomp.log
chown slurm: /var/log/slurm_jobacct.log /var/log/slurm_jobcomp.log

위의 명령은 로그 파일 만들어지는 경로를 설정해 주는건데,

slurm.conf에 해당 내용을 넣는 곳이 있다.


* computenode

systemctl enable slurmd.service
systemctl start slurmd.service
systemctl status slurmd.service

.service는 빼도 된다.

 

computenode에서는 아래와 같은 에러가 발생했는데,

journalctl -f 실행했을때 나오는 에러

이 경우는 /etc/slurm/slurm.conf에 COMPUTE NODES에 정보가 잘못 입력된 경우다.

오타 등이 없는지 확인해보자.

위에 사진에서 보면, 첫줄의 NodeName= 과 둘째줄의 Nodes= 가 다르게 입력되어 있었다.

이렇게 되면 서버노드도 정상 작동하지 않을 수 있으니 참고하자.

 

정상 실행됐다면

위처럼 나온다.

 

mkdir /var/spool/slurmd
chown slurm: /var/spool/slurmd
chmod 755 /var/spool/slurmd
touch /var/log/slurmd.log
chown slurm: /var/log/slurmd.log

위의 내용은 로그파일 만드는 설정이고,

역시나 slurm.conf에 해당 내용 넣는 곳이 있다.

위에 서버 설정에서 잘 찾아보자.

 


* 추가로 발생했던 에러들.

서버노드는 정상 실행이 됐었는데,

computenode에 slurmd가 실행이 안돼서

로그 파일을 열어보니,

error: Node configuration differs from hardware: CPUs=1:2(hw) Boards=1:1(hw) SocketsPerBoard=1:2(hw) CoresPerSocket=1:1(hw) ThreadsPerCore=1:1(hw)

이런 에러가 발생하는 모습을 볼 수 있었다.

딱 봐도 뭔가 하드웨어적인 설정 문제로 보여서 찾아보니,

 

computenode에 /etc/slurm 경로에

cgroup.conf와 cgroup_allowed_devices_file.conf를 추가해주니 됐다.

 

// cgroup.conf

CgroupMountpoint="/sys/fs/cgroup"
CgroupAutomount=yes
CgroupReleaseAgentDir="/etc/slurm/cgroup"
AllowedDevicesFile="/etc/slurm/cgroup_allowed_devices_file.conf"
ConstrainCores=no
TaskAffinity=no
ConstrainRAMSpace=yes
ConstrainSwapSpace=no
ConstrainDevices=no
AllowedRamSpace=100
AllowedSwapSpace=0
MaxRAMPercent=100
MaxSwapPercent=100
MinRAMSpace=30

 

// cgroup_allowed_devices_file.conf

/dev/null
/dev/urandom
/dev/zero
/dev/sda*
/dev/cpu/*/*
/dev/pts/*

 

해당 내용들 추가해주면 문제가 해결됐다.


이렇게 2주 정도? 고생해서 slurm 설치를 끝냈다.

실제로는 2~3일정도 소요된거 같다..

이후에 slurm을 어떻게 쓰는 건지에 대해 공부하고

정리해보려 한다.

 

해당 글을 순서대로 쭉 따라하면

설치하는데 문제 없을 거다.

다들 성공하길 바란다...

 

 

728x90
반응형

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.