Instalación de SLURM con RPM's
Requisitos
- El nodo submit.
- Un servidor para ser el controlador de SLURM (puede ser el mismo submit).
- Uno o varios nodos de cálculo (workers).
Instalación de paquetes
Para poder instalar slurm es necesario tener configurado el repositorio EPEL (Extra Packages for Enterprise Linux). En caso de no tenerlo, se puede instalar con el siguiente comando:
# yum -y install epel-release
Una vez que se tiene el repositorio EPEL, se deben instalar diversos paquetes.
Para los 3 tipos de nodo (submit, controller y workers) se instalan los siguientes paquetes:
# yum -y install slurm slurm-devel slurm-perlapi slurm-torque slurm-contribs slurm libs slurm-doc slurm-pmi slurm-pmi-devel
# yum -y install slurm-slurmctld
En los nodos de cálculo o workers:
# yum -y install slurm-slurmd slurm-pam_slurm
Munge
SLURM requiere de Munge para realizar la comunicación entre nodos. Los paquetes de Munge se instalan como dependencias de los paquetes de SLURM.
Configuración de Munge
Para configurar Munge se requieren los siguientes pasos:
- Agregar al usuario munge en todos los nodos.
- Creación de la llave munge.
- Cambio de pertenencia de los directorios de munge.
- Inicio del servicio munge.
Agregar al usuario munge
Para agregar al usuario, se deben ejecutar los siguientes comandos en todos los nodos:
# groupadd -g 991 munge
# useradd -u 991 -g munge -c "MUNGE Uid 'N' Gid Emporium" -d /var/lib/munge -s /sbin/nologin munge
Creación de la llave munge
Creamos un archivo con contenido aleatorio utilizando /dev/urandom
y lo guardamos en el archivo /etc/munge/munge.key
sólo en el nodo controlador de SLURM:
# dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key
scp
. En el siguiente ejemplo se copia al nodo "n1"
:
# scp /etc/munge/munge.key n1:/etc/munge/munge.key
r--------
y debe de tener a munge como dueño y grupo:
# chmod 400 /etc/munge/munge.key
# chown munge. /etc/munge/munge.key
Cambio de pertenencia de los directorios de munge
Se tiene que verificar en todos los nodos que los siguientes directorios le pertenecen al usuario munge y tienen los permisos correctos:
# chown munge. /etc/munge/ /var/log/munge/ /var/lib/munge
# chmod 700 /etc/munge/ /var/log/munge/ /var/lib/munge
/run/munge
en todos los nodos:
# chown munge. /run/munge
Inicio del servicio munge
Una vez configurado todo, se inicia el servicio munge:
# systemctl enable --now munge
# systemctl status munge
SLURM
Una vez que Munge está configurado y funcionando, se debe realizar la configuración de SLURM.
Para ello se requieren realizar las siguientes actividades: - Creación del usuario slurm. - Configuración de SLURM. - Inicio de los servicios de slurm.
Creación del usuario SLURM
El usuario slurm debe existir en todos los nodos, para crearlo se ejecutan los comandos:
# groupadd -g 992 slurm
# useradd -u 992 -g slurm -c "SLURM workload manager" -d /var/lib/slurm -s /bin/bash slurm
Configuración de SLURM
El archivo /etc/slurm/slurm.conf
es el que contiene toda la configuración de SLURM. Toda la configuración mencionada a continuación debe realizarse en este archivo.
Note
El archivo /etc/slurm/slurm.conf
debe estar presente en todos los nodos y debe contener la misma información, de manera que si se edita para agregar, modificar o eliminar configuraciones, éste debe copiarse a todos los nodos nuevamente.
Se deben cambiar los valores de algunas líneas preexistentes en el archivo y quedar como se muestra a continuación:
ControlMachine=nodo.controlador.grid.mx
ControlAddr=192.168.1.1
ClusterName=NombreDelCluster
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdLogFile=/var/log/slurm/slurmd.log
SlurmSchedLogFile=/var/log/slurm/slurmsched.log
SlurmSchedLogLevel=3
MpiDefault=none
Note
Cambiar el nombre del nodo controlador, la dirección IP y el nombre del cluster a lo que corresponda
También deben eliminarse las siguientes líneas preexistentes:
NodeName=localhost CPUs=1 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP
NodeName=n[1-7] CPUs=32 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=1 RealMemory=257471 State=UNKNOWN
# slurmd -C
NodeName=n1 CPUs=32 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=1 RealMemory=257477
UpTime=79-03:46:49
PartitionName=grid Nodes=ALL Default=YES MaxTime=INFINITE State=UP
Inicio de los servicios de slurm
Una vez configurado, podemos iniciar el servicio de SLURM.
En el nodo controlador:
# systemctl enable --now slurmctld
# systemctl enable --now slurmd
Verificación de la instalación
En el nodo controlador, podemos ejecutar el siguiente comando para verificar las particiones:
# sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
grid* up infinite 7 idle n[1-7]
Contribución
Autores de esta página:
Autores del sitio:
Última revisión de esta página: 2023-03-21