Update SLURM authored by Bruno da Silva Castilho's avatar Bruno da Silva Castilho
...@@ -18,57 +18,91 @@ Os volumes a seguir, devem ser compartilhados entre todos os containers. Em um c ...@@ -18,57 +18,91 @@ Os volumes a seguir, devem ser compartilhados entre todos os containers. Em um c
```yaml ```yaml
version: "3.5" version: "3.5"
services: services:
slurmdbd: slurmdbd:
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
command: "slurmdbd" command: "slurmdbd"
hostname: slurmdbd hostname: slurmdbd
volumes: &vol deploy: &hpc0
- etc_munge:/etc/munge placement:
- etc_slurm:/etc/slurm constraints:
- slurm_jobdir:/data - "node.hostname==docker-hpc0"
- slurm_scripts:/scripts volumes: &vol
- slurm_lib:/var/lib/slurmd - etc_munge:/etc/munge
- slurm_spool:/var/spool/slurmd - etc_slurm:/etc/slurm
- /var/run/docker.sock:/var/run/docker.sock - slurm_jobdir:/data
depends_on: - slurm_scripts:/scripts
- mysql - slurm_lib:/var/lib/slurmd
- slurm_spool:/var/spool/slurmd
- /var/run/docker.sock:/var/run/docker.sock
slurmctld: slurmctld:
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest hostname: slurmctld.setic.ufsc.br
command: "slurmctld" image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
hostname: slurmctld command: "slurmctld"
volumes: *vol deploy: *hpc0
depends_on: volumes: *vol
- "slurmdbd" depends_on:
- "slurmdbd"
c1: nodes:
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest image: registry.codigos.ufsc.br/setic-hpc/slurm:latest
command: "slurmd" hostname: "SlurmGlobal_nodee-{{.Node.Hostname}}"
hostname: c1 deploy:
volumes: *vol mode: global
depends_on: placement:
- "slurmctld" constraints:
- "node.role==worker"
c2: volumes: *vol
image: registry.codigos.ufsc.br/setic-hpc/slurm:latest depends_on:
command: "slurmd" - "slurmctld"
hostname: c2
volumes: *vol
depends_on:
- "slurmctld"
volumes: volumes:
etc_munge: etc_munge:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/munge
etc_slurm: etc_slurm:
driver: local
driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/etc
slurm_jobdir: slurm_jobdir:
slurm_lib: driver: local
slurm_spool: driver_opts:
type: nfs
o: addr=192.168.0.180,rw,async
device: :/export/slurm/jobs
slurm_scripts: 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 #### 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, 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](https://slurm.schedmd.com/slurm.conf.html).
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. 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
```