|
- [**salloc**](SALLOC)
|
|
# SLURM
|
|
- [**sbatch**](SBATCH)
|
|
Esta imagem provê o serviço do slurmctl, slurmdb e slurmd. Configurados para gerenciamento de fila de trabalhos, em um cluster HPC. As configurações feitas neste repositório, segue como modelo base o repositório [giovtorres/slurm-docker-cluster](https://github.com/giovtorres/slurm-docker-cluster).
|
|
- [**srun**](SRUN)
|
|
|
|
- [**squeue**](SQUEUE)
|
|
|
|
- [**sinfo**](SINFO)
|
|
|
|
- [**scontrol**](SCONTROL)
|
|
|
|
- [**scast**](SCAST)
|
|
|
|
- [**scancel**](SCANCEL)
|
|
|
|
- [**sacct**](SSACCT)
|
|
|
|
- [**sacctmgr**](SACCTMGR)
|
|
|
|
|
|
|
|
|
|
#### Volumes
|
|
|
|
Os volumes a seguir, devem ser compartilhados entre todos os containers. Em um cluster, devem ser configurados como volumes NFS.
|
|
|
|
- etc_munge:/etc/munge
|
|
|
|
- etc_slurm:/etc/slurm - **_Diretório onde os arquivos slurm.conf e slurmdb.conf se encontram_**
|
|
|
|
- slurm_jobdir:/data
|
|
|
|
- slurm_scripts:/scripts - **_Diretório que contém os scripts base utilizado pelo [WORKFLOW](https://codigos.ufsc.br/setic-hpc/workflow) para submeter os trabalhos na fila_**
|
|
|
|
- slurm_lib:/var/lib/slurmd
|
|
|
|
- slurm_spool:/var/spool/slurmd
|
|
|
|
- /var/run/docker.sock:/var/run/docker.sock - **_Necessário para executar trabalhos com containers_**
|
|
|
|
|
|
|
|
#### Stack
|
|
|
|
```yaml
|
|
|
|
version: "3.5"
|
|
|
|
services:
|
|
|
|
slurmdbd:
|
|
|
|
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
|
|
|
|
command: "slurmdbd"
|
|
|
|
hostname: slurmdbd
|
|
|
|
volumes: &vol
|
|
|
|
- etc_munge:/etc/munge
|
|
|
|
- etc_slurm:/etc/slurm
|
|
|
|
- slurm_jobdir:/data
|
|
|
|
- slurm_scripts:/scripts
|
|
|
|
- slurm_lib:/var/lib/slurmd
|
|
|
|
- slurm_spool:/var/spool/slurmd
|
|
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
|
|
depends_on:
|
|
|
|
- mysql
|
|
|
|
|
|
|
|
slurmctld:
|
|
|
|
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
|
|
|
|
command: "slurmctld"
|
|
|
|
hostname: slurmctld
|
|
|
|
volumes: *vol
|
|
|
|
depends_on:
|
|
|
|
- "slurmdbd"
|
|
|
|
|
|
|
|
c1:
|
|
|
|
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
|
|
|
|
command: "slurmd"
|
|
|
|
hostname: c1
|
|
|
|
volumes: *vol
|
|
|
|
depends_on:
|
|
|
|
- "slurmctld"
|
|
|
|
|
|
|
|
c2:
|
|
|
|
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
|
|
|
|
command: "slurmd"
|
|
|
|
hostname: c2
|
|
|
|
volumes: *vol
|
|
|
|
depends_on:
|
|
|
|
- "slurmctld"
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
etc_munge:
|
|
|
|
etc_slurm:
|
|
|
|
slurm_jobdir:
|
|
|
|
slurm_lib:
|
|
|
|
slurm_spool:
|
|
|
|
slurm_scripts:
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Configuração
|
|
|
|
O deploy da stack citada acima, em swarm, deve ser feita direcionando os serviços C1 e C2, para os nós trabalhadores do cluster. Caso necessário adicionar mais de dois nós trabalhadores, devem ser adicionados a stack novos serviços do tipo C1 ou C2 e configurado no arquivo `slurm.conf` no próximo passo.
|
|
|
|
|
|
|
|
Após ser feito o deploy, as configurações do banco de dados devem ser alteradas no arquivo `slurmdb.conf`, que estará no volume `etc_slurm`. Caso necessário também poderá ser feito modificações no arquivo `slurm.conf` no mesmo volume citado anteriormente. Após feito as modificações deve ser feita a reinicialização dos containers.
|
|
|
|
|
|
|
|
Com todos os containers funcionando pela **primeira vez**(Caso altere os volumes, se encaixa nesse requisito), deve ser executado o comando `/usr/bin/sacctmgr --immediate add cluster name=linux` (utilizado para registrar o cluster no banco de dados) e reiniciado os serviços slurmdbd e slurmctld. |