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.
Links
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 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
version: "3.5"
services:
slurmdbd:
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
command: "slurmdbd"
hostname: slurmdbd
deploy: &hpc0
placement:
constraints:
- "node.hostname==docker-hpc0"
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
slurmctld:
hostname: slurmctld.setic.ufsc.br
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
command: "slurmctld"
deploy: *hpc0
volumes: *vol
depends_on:
- "slurmdbd"
nodes:
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
hostname: "SlurmGlobal_nodee-{{.Node.Hostname}}"
deploy:
mode: global
placement:
constraints:
- "node.role==worker"
volumes: *vol
depends_on:
- "slurmctld"
volumes:
etc_munge:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/munge
etc_slurm:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/etc
slurm_jobdir:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/jobs
slurm_scripts:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/scripts
slurm_spool:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/spool
slurm_lib:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/lib
(Obs: Foi encontrado um problema com o slurm ao se criar um serviço diferente para cada nó trabalhador, na stack acima é criado apenas um serviço para os nós trabalhadores do slurm
e distribuído para todos os nós trabalhadores do cluster
, o que garante o bom funcionamento do slurm.)
Configuração
Após ser feito o deploy, os arquivos de configurações contidos no diretório conf
devem ser todos adicionados ao volume etc_slurm, e feito as alterações das credenciais do banco de dados no arquivo slurmdbd.conf
, informando o seu banco de dados escolhido, e no arquivo slurm.conf
devem ser feitas alterações de configurações do slurm, conforme a sua preferencia, mais detalhes em slurm.conf.
Com todos os containers funcionando pela primeira vez(Caso altere os volumes, se encaixa nesse requisito), deve ser registrado o cluster no banco de dados utilizando o comando abaixo, e reiniciado os serviços slurmdbd e slurmctld.
/usr/bin/sacctmgr --immediate add cluster name=linux