HPC/slurm

slurm 세팅하기 1 - 초기 세팅 및 munge 설치 및 실행

숙련된 조교 2025. 1. 16. 22:55
728x90
반응형

 

SlurmSimplified Linux Utility for Resource Management의 약자로, 대규모 병렬 컴퓨팅 환경에서 작업 스케줄링리소스 관리를 위한 오픈 소스 클러스터 관리 시스템입니다.

쉽게 말해서...

  • 클러스터 관리자: 여러 대의 컴퓨터(노드)로 이루어진 클러스터를 효율적으로 관리합니다.
  • 작업 스케줄러: 사용자가 제출한 작업들을 컴퓨터 자원(CPU, 메모리 등)에 효율적으로 배분하고 실행 순서를 정합니다.
  • 리소스 관리자: 컴퓨터 자원을 효과적으로 관리하여 여러 사용자들이 동시에 자원을 사용할 수 있도록 합니다.

Slurm이 왜 필요할까요?

  • 대규모 컴퓨팅 환경: 많은 양의 데이터를 처리하거나 복잡한 시뮬레이션을 수행하는 경우, 단일 컴퓨터로는 처리 시간이 오래 걸릴 수 있습니다. Slurm을 이용하면 여러 대의 컴퓨터를 연결하여 작업을 분산 처리함으로써 처리 속도를 크게 향상시킬 수 있습니다.
  • 자원 효율성: Slurm은 컴퓨터 자원을 효율적으로 관리하여 자원 낭비를 줄이고, 여러 사용자들이 동시에 자원을 사용할 수 있도록 합니다.
  • 사용자 편의성: Slurm은 사용하기 쉬운 명령어 인터페이스를 제공하여 사용자가 쉽게 작업을 제출하고 관리할 수 있도록 합니다.

Slurm의 주요 기능

  • 작업 제출 및 관리: 사용자가 작업을 제출하면 Slurm은 작업의 종류, 필요한 자원 등을 분석하여 적절한 컴퓨터 자원에 할당합니다.
  • 대기열 관리: 여러 사용자들이 동시에 작업을 제출할 경우, Slurm은 작업들을 우선순위에 따라 대기열에 넣고, 자원이 확보되면 순차적으로 실행합니다.
  • 자원 할당: Slurm은 작업에 필요한 CPU, 메모리, 디스크 공간 등을 할당하고, 작업이 완료되면 해당 자원을 회수합니다.
  • 작업 모니터링: 사용자는 Slurm을 통해 작업의 상태를 실시간으로 확인하고, 필요한 경우 작업을 취소하거나 재시작할 수 있습니다.

Slurm의 활용 분야

  • 고성능 컴퓨팅(HPC): 과학 기술 계산, 시뮬레이션, 데이터 분석 등
  • 딥러닝: 인공지능 모델 학습
  • 생명정보학: 유전체 분석
  • 기상 예측: 기상 모델 시뮬레이션
slurm 세팅하기

 

slurm 세팅 전 계정 생성이 우선되어야 함.

 

필요 설치 및 업데이트 진행

 

dnf -y install rpm-build perl pam-devel python3 readline-devel bzip2 mariadb-devel wget gcc
dnf --enablerepo=devel install munge-devel -y
dnf --enablerepo=devel install perl-Switch -y

 

간혹 devel이 설치가 안 될 때는 powertools로 설치를 진행한다.

dnf --enablerepo=powertools install munge-devel -y
dnf --enablerepo=powertools install perl-Switch -y

 

 

 

 

환경변수 설정

 

환경변수 설정 전 마운트할 디렉터리를 생성한다.

 

 

export MUNGEUSER=1111
export SLURMUSER=1112
export SHARED_DIR="/slurm_test"

 

 

마운트할 디렉터리에 대해 권한 수정을 진행

chown slurm: slurm_test

 

 

slurm 다운로드 진행

wget https://download.schedmd.com/slurm/slurm-23.11.3.tar.bz2

 

rpm 설치

rpm 설치 전 파일 수정

vi /root/.rpmmacros 편집하여

=============================================

# .rpmmacros

# Override some RPM macros from /usr/lib/rpm/macros

# Set Slurm-specific macros for unconventional file locations

#

%_enable_debug     "--with-debug"

%_prefix           /opt/slurm

%_sysconfdir       /etc/slurm

%_defaultdocdir    %{_prefix}/doc

%with_munge        "--with-munge=/etc/munge"

=============================================

 

위 내용 작성 후 저장.

 

rpmbuild 진행

rpmbuild -ta slurm*.tar.bz2 명령어로  rpmbuild를 진행한다.

rpmbuild 끝나면 해당 경로에 rpm 파일들 생성되어 있음. /root/rpmbuild/RPMS/x86_64

 

# rpmbuild  진행

# rpmbuild 진행 후 /root/rpmbuild/RPMS/x86_64 경로에 rpm 파일들 확인

 

dnf localinstall *.rpm -y 명령어를 통해 rpm 설치 진행.

 

rpm 설치 후 다음 명령어 실행

 

mkdir -p /etc/munge /var/lib/munge /var/log/munge /run/munge

chown munge:munge /etc/munge /var/lib/munge /var/log/munge /run/munge

chmod 0700 /etc/munge

chmod 0711 /var/lib/munge

chmod 0700 /var/log/munge

chmod 0755 /run/munge

 

munge key 생성

/sbin/create-munge-key -r

dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key

chown munge: /etc/munge/munge.key

chmod 400 /etc/munge/munge.key

 

Generating a pseudo-random key using /dev/random 에서 "Ctrl + C" 로 중단 후

/etc/munge 를 확인하면 munge.key가 생성된 것을 확인할 수 있다.

 

munge 실행

 

systemctl enable munge

systemctl start munge

systemctl status munge

 

해당 설정 또한 진행.

 

munge.key의 권한을 400 으로 수정 후

systemctl start munge 를 입력하면 정상적으로 munge가 실행된 것을 확인할 수 있다.

 

서버 재시작 시 munge 서비스 자동 실행되지 않음.

 

자동 시작 설정을 위해 vi /usr/lib/systemd/system/munge.service 파일을 편집해준다.

 

 

====================================================

[Unit]

Description=MUNGE authentication service

Documentation=man:munged(8)

After=network.target

After=time-sync.target

 

[Service]

PermissionsStartOnly=true

ExecStartPre=/usr/bin/mkdir -p /var/run/munge

ExecStartPre=/usr/bin/chown munge.munge /var/run/munge

Type=forking

ExecStart=/usr/sbin/munged

PIDFile=/var/run/munge/munged.pid

User=munge

Group=munge

Restart=on-abort

 

[Install]

WantedBy=multi-user.target

====================================================

 

해당 내용 입력 후 저장

 

서버 재시작 후에도 munge 서비스가 올라온 것을 확인할 수 있다.

 

마스터 서버에서의 설정은 완료되었고 슬레이브 서버로 rpmbuild 디렉터리를 복사해주고 똑같이 rpm을 설치해준다.

 

이후 마스터와 동일하게 슬레이브 서버도 계정 생성 및 munge 설정을 진행해준다.

 

munge 설정 후 마스터와 슬레이브 간 munge 통신 확인을 진행.

vi /etc/hosts 에 각각 hostname을 넣어준다.

 

마스터 서버에서 : munge -n | ssh slurm-s unmunge

슬레이브 서버에서 : munge -n | ssh slurm-m unmunge

 

서로 통신이 되는 것 확인.

 

 

728x90
반응형