Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:install:clafoutis:ubuntu_cluster_install [2025/10/22 07:25] – [Protocole d'installation] foisysfr:install:clafoutis:ubuntu_cluster_install [2025/10/25 17:27] (Version actuelle) – [Protocole d'installation] foisys
Ligne 109: Ligne 109:
   * Il faut maintenant copier la clé d'encryption qui se trouve sur le contrôleur.   * Il faut maintenant copier la clé d'encryption qui se trouve sur le contrôleur.
  
-<sxh bash> % for i in `seq 1 4`; do sudo scp /etc/munge/munge.key minion0${i}:/etc/munge/munge.key; done # Sur chaque minion: % sudo chown munge:munge /etc/munge/munge.key % sudo chmod 400 /etc/munge/munge.key % sudo systemctl restart munge # Vous ne devriez pas voir de message d'erreur… % systemctl status munge </sxh>+<sxh bash>  
 +% for i in `seq 1 4`; do sudo scp /etc/munge/munge.key minion0${i}:/etc/munge/munge.key; done  
 +# Sur chaque minion:  
 +% sudo chown munge:munge /etc/munge/munge.key  
 +% sudo chmod 400 /etc/munge/munge.key  
 +% sudo systemctl restart munge  
 +# Vous ne devriez pas voir de message d'erreur…  
 +% systemctl status munge  
 +</sxh>
  
   * Il reste à vérifier que les RPi se reconnaissent:   * Il reste à vérifier que les RPi se reconnaissent:
  
-<sxh bash> # Sur chaque minion # A faire pour tous les minions pour s'assurer que ça fonctionne entre tout le monde. % ssh minion01 munge -n | unmunge # Vous devriez voir une sortie au terminal qui ressemble à ça: STATUS: Success (0) ENCODE_HOST: minion01 (192.168.1.xy1) ENCODE_TIME: 2022-07-02 10:36:24 -0400 (1656772584) DECODE_TIME: 2022-07-02 10:36:30 -0400 (1656772590) TTL: 10 CIPHER: aes128 (4) MAC: sha256 (5) ZIP: none (0) UID: bioubuntu (1030) GID: users (100) LENGTH: 0 </sxh>+<sxh bash>  
 +# Sur chaque minion  
 +# A faire pour tous les minions pour s'assurer que ça fonctionne entre tout le monde.  
 +% ssh minion01 munge -n | unmunge  
 +# Vous devriez voir une sortie au terminal qui ressemble à ça:  
 +STATUS: Success (0)  
 +ENCODE_HOST: minion01 (192.168.1.xy1)  
 +ENCODE_TIME: 2022-07-02 10:36:24 -0400 (1656772584)  
 +DECODE_TIME: 2022-07-02 10:36:30 -0400 (1656772590)  
 +TTL: 10  
 +CIPHER: aes128 (4)  
 +MAC: sha256 (5)  
 +ZIP: none (0)  
 +UID: bioubuntu (1030)  
 +GID: users (100)  
 +LENGTH: 0  
 +</sxh>
  
   * Pour s'assurer que le service ''munge''  soit démarré à chaque redémarrage des serveurs:   * Pour s'assurer que le service ''munge''  soit démarré à chaque redémarrage des serveurs:
  
-<sxh bash> # Sur chaque RPi de la grappe % sudo systemctl enable munge </sxh> </accordion-item>+<sxh bash>  
 +# Sur chaque RPi de la grappe  
 +% sudo systemctl enable munge  
 +</sxh>  
 +</accordion-item>
  
 <accordion-item title="Étape 2: Installation des logiciels MariaDB et SLURMDBD "> <accordion-item title="Étape 2: Installation des logiciels MariaDB et SLURMDBD ">
Ligne 133: Ligne 161:
   * Il faut ajouter quelques paramètres dans le fichier de config ''/etc/mysql/mariadb.conf.d/50-server.cnf''; dans la section ''InnoDB'', mettre ou décommenter les lignes suivantes:   * Il faut ajouter quelques paramètres dans le fichier de config ''/etc/mysql/mariadb.conf.d/50-server.cnf''; dans la section ''InnoDB'', mettre ou décommenter les lignes suivantes:
  
-<sxh bash> # Sur un RPi 5 16Gb; la moitié si 8Gb innodb_buffer_pool_size=8192M innodb_log_file_size=256M innodb_lock_wait_timeout=900 </sxh>+<sxh bash>  
 +# Sur un RPi 5 16Gb; la moitié si 8Gb  
 +innodb_buffer_pool_size=8192M  
 +innodb_log_file_size=256M  
 +innodb_lock_wait_timeout=900  
 +</sxh>
  
   * Les premières étapes se font dans MariaDB ;-) Commençons par créer l'usager ''slurm'', qui effectuera toutes les opérations sur les bases de données de SLURM:   * Les premières étapes se font dans MariaDB ;-) Commençons par créer l'usager ''slurm'', qui effectuera toutes les opérations sur les bases de données de SLURM:
  
-<sxh bash> # On opère MariaDB comme si c'était MySQL, en tant qu'usager root de MariaDB % mysql -u root -p # On entre dans MariaDB et le prompt mysql> vous le démontre! # Evidemment, le mot de passe est à votre discrétion… Ici, ce n'est que pour # des fins de démonstration; vous êtes averti… mysql> CREATE USER 'slurm'@'localhost' IDENTIFIED BY 'bioubuntu'; Query OK, 0 rows affected (0.16 sec) </sxh>+<sxh bash>  
 +# On opère MariaDB comme si c'était MySQL, en tant qu'usager root de MariaDB  
 +% mysql -u root -p  
 +# On entre dans MariaDB et le prompt mysql> vous le démontre!  
 +# Evidemment, le mot de passe est à votre discrétion… Ici, ce n'est que pour  
 +# des fins de démonstration; vous êtes averti…  
 +mysql> CREATE USER 'slurm'@'localhost' IDENTIFIED BY 'bioubuntu';  
 +Query OK, 0 rows affected (0.16 sec) </sxh>
  
   * Ensuite on crée les bases de données nécessaires:   * Ensuite on crée les bases de données nécessaires:
  
-<sxh bash> # mysql> create database slurm_acct_db; Query OK, 1 row affected (0.04 sec) </sxh>+<sxh bash>  
 +# 
 + mysql> create database slurm_acct_db;  
 +Query OK, 1 row affected (0.04 sec) </sxh>
  
   * On termine la mise en place sur MySQL en donnant les permissions nécessaires à l'usager ''slurm'':   * On termine la mise en place sur MySQL en donnant les permissions nécessaires à l'usager ''slurm'':
  
-<sxh bash> # mysql> grant all privileges on slurm_acct_db.* to 'slurm'@'localhost'; Query OK, 0 rows affected (0.02 sec) </sxh>+<sxh bash>  
 + 
 +mysql> grant all privileges on slurm_acct_db.* to 'slurm'@'localhost';  
 +Query OK, 0 rows affected (0.02 sec) </sxh>
  
   * On installe le package ''slurmdbd''  sur ''gru''  uniquement:   * On installe le package ''slurmdbd''  sur ''gru''  uniquement:
  
-<sxh> % sudo apt install slurmdbd </sxh>+<sxh>  
 +% sudo apt install slurmdbd  
 +</sxh>
  
   * Il faut créer un fichier de configuration pour ''slurmdbd'', appelé ''/etc/slurm/slurmdbd.conf''  avec les infos suivantes:   * Il faut créer un fichier de configuration pour ''slurmdbd'', appelé ''/etc/slurm/slurmdbd.conf''  avec les infos suivantes:
  
-<sxh bash> AuthType=auth/munge AuthInfo=/var/run/munge/munge.socket.2 DbdHost=localhost DbdAddr=localhost StoragePort=3306 StorageUser=slurm # Evidemment, mettre celui que vous aurez choisi ci-dessus # Ici, c'est pour l'exemple :-) StoragePass=bioubuntu StorageType=accounting_storage/mysql LogFile=/var/log/slurm/slurmdbd.log PidFile=/var/run/slurmdbd/slurmdbd.pid SlurmUser=slurm </sxh>+<sxh bash>  
 +AuthType=auth/munge  
 +AuthInfo=/var/run/munge/munge.socket.2  
 +DbdHost=localhost  
 +DbdAddr=localhost  
 +StoragePort=3306  
 +StorageUser=slurm  
 +# Evidemment, mettre celui que vous aurez choisi ci-dessus  
 +# Ici, c'est pour l'exemple :-)  
 +StoragePass=bioubuntu  
 +StorageType=accounting_storage/mysql  
 +LogFile=/var/log/slurm/slurmdbd.log  
 +PidFile=/var/run/slurmdbd/slurmdbd.pid  
 +SlurmUser=slurm </sxh>
  
   * Assurez-vous d'avoir les bonnes permissions:   * Assurez-vous d'avoir les bonnes permissions:
  
-<sxh bash> % sudo touch /etc/slurm/accounting_password % sudo echo 'votre_mot_de_passe_mariadb_pour_usager_slurm' > /etc/slurm/accounting_password % sudo chown slurm:slurm /etc/slurm/accounting_password % sudo chown slurm:slurm /etc/slurm/slurmdbd.conf % sudo chmod 600 /etc/slurm/slurmdbd.conf % sudo systemctl enable –now slurmdbd % sudo systemctl status slurmdbd </sxh>+<sxh bash>  
 +% sudo touch /etc/slurm/accounting_password  
 +% sudo echo 'votre_mot_de_passe_mariadb_pour_usager_slurm' > /etc/slurm/accounting_password  
 +% sudo chown slurm:slurm /etc/slurm/accounting_password  
 +% sudo chown slurm:slurm /etc/slurm/slurmdbd.conf  
 +% sudo chmod 600 /etc/slurm/slurmdbd.conf  
 +% sudo systemctl enable –now slurmdbd  
 +% sudo systemctl status slurmdbd </sxh>
  
   * Vous ne devriez pas voir de message d'erreur :-)   * Vous ne devriez pas voir de message d'erreur :-)
Ligne 167: Ligne 235:
   * On commence par l'installation de ''SLURM''  via ''apt''  sur tous les RPi:   * On commence par l'installation de ''SLURM''  via ''apt''  sur tous les RPi:
  
-<sxh bash> % sudo apt install -y slurmctld </sxh>+<sxh bash>  
 +% sudo apt install -y slurmctld  
 +</sxh>
  
   * À la suite de cette opération, tous les RPi auront les bons répertoires avec les bonnes permissions ;-)   * À la suite de cette opération, tous les RPi auront les bons répertoires avec les bonnes permissions ;-)
   * Il faut maintenant créer un fichier de configuration ''slurm.conf''  sous ''/etc/slurm''.   * Il faut maintenant créer un fichier de configuration ''slurm.conf''  sous ''/etc/slurm''.
  
-<sxh bash> # sudo nano /etc/slurm/slurm.conf</sxh>+<sxh bash>  
 +# sudo nano /etc/slurm/slurm.conf 
 +</sxh>
  
   * Il vous suffit de l'éditer pour qu'il ressemble à ceci:   * Il vous suffit de l'éditer pour qu'il ressemble à ceci:
  
-<sxh bash> # Le nom de la grappe ClusterName=superclafoutis # Le nom du serveur sur lequel fonctionne le processus slurmctld SlurmctldHost=gru AuthType=auth/munge ProctrackType=proctrack/cgroup SchedulerType=sched/backfill SelectType=select/cons_tres # Le nom de l'usager à qui appartient le processus slurmctld SlurmUser=slurm StateSaveLocation=/var/spool/slurmctld SlurmdSpoolDir=/var/spool/slurmd SlurmctldPidFile=/var/run/slurm/slurmctld.pid SlurmdPidFile=/var/run/slurm/slurmd.pid # L'information pour slurmdbd AccountingStorageType=accounting_storage/slurmdbd AccountingStorageHost=gru AccountingStorageUser=slurm # Les infos sur les noeuds qui feront les tâches NodeName=minion01 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN NodeName=minion02 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN NodeName=minion03 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN NodeName=minion04 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN # On regroupe tous les noeuds dans une même partition PartitionName=biobunch Nodes=ALL Default=YES MaxTime=120 State=UP </sxh>+<sxh bash>  
 +# Le nom de la grappe  
 +ClusterName=superclafoutis  
 +# Le nom du serveur sur lequel fonctionne le processus slurmctld  
 +SlurmctldHost=gru  
 +AuthType=auth/munge  
 +ProctrackType=proctrack/cgroup  
 +SchedulerType=sched/backfill  
 +SelectType=select/cons_tres  
 +# Le nom de l'usager à qui appartient le processus slurmctld  
 +SlurmUser=slurm  
 +StateSaveLocation=/var/spool/slurmctld  
 +SlurmdSpoolDir=/var/spool/slurmd  
 +SlurmctldPidFile=/var/run/slurm/slurmctld.pid  
 +SlurmdPidFile=/var/run/slurm/slurmd.pid  
 +# L'information pour slurmdbd  
 +AccountingStorageType=accounting_storage/slurmdbd  
 +AccountingStorageHost=gru  
 +AccountingStorageUser=slurm  
 +# Les infos sur les noeuds qui feront les tâches  
 +NodeName=minion01 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN  
 +NodeName=minion02 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN  
 +NodeName=minion03 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN  
 +NodeName=minion04 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN  
 +# On regroupe tous les noeuds dans une même partition  
 +PartitionName=biobunch  
 +Nodes=ALL  
 +Default=YES  
 +MaxTime=120  
 +State=UP </sxh>
  
   * Remarquez que ''gru''  ne fait pas partie de la liste de noeuds de travail de la grappe. Si il y était, il recevrait des tâches ce qui le ralentirait pour le travail interactif ou bien gérant une interface graphique. Cependant, si ''gru''  n'accomplit aucune de ces tâches, vous pourriez l'inclure.   * Remarquez que ''gru''  ne fait pas partie de la liste de noeuds de travail de la grappe. Si il y était, il recevrait des tâches ce qui le ralentirait pour le travail interactif ou bien gérant une interface graphique. Cependant, si ''gru''  n'accomplit aucune de ces tâches, vous pourriez l'inclure.
   * Il faut terminer la configuration avec les commandes suivantes:   * Il faut terminer la configuration avec les commandes suivantes:
  
-<sxh bash> % sudo mkdir -p /var/spool/slurmctld % sudo chown slurm:slurm /var/spool/slurmctld % sudo chmod 755 /var/spool/slurmctld % sudo touch /var/log/slurm/slurmctld.log % sudo touch /var/log/slurm/slurm_jobacct.log % sudo touch /var/log/slurm/slurm_jobcomp.log % sudo chown -R slurm:slurm /var/log/slurm </sxh>+<sxh bash>  
 +% sudo mkdir -p /var/spool/slurmctld  
 +% sudo chown slurm:slurm /var/spool/slurmctld  
 +% sudo chmod 755 /var/spool/slurmctld  
 +% sudo touch /var/log/slurm/slurmctld.log  
 +% sudo touch /var/log/slurm/slurm_jobacct.log  
 +% sudo touch /var/log/slurm/slurm_jobcomp.log  
 +% sudo chown -R slurm:slurm /var/log/slurm </sxh>
  
   * Assurez vous maintenant de copier le fichier ''slurm.conf''  sur tous les RPi faisant partie de la liste des noeuds de travail au même endroit sous ''/etc/slurm''.   * Assurez vous maintenant de copier le fichier ''slurm.conf''  sur tous les RPi faisant partie de la liste des noeuds de travail au même endroit sous ''/etc/slurm''.
   * Sur ''gru'', faites les commandes suivantes:   * Sur ''gru'', faites les commandes suivantes:
  
-<sxh bash> % sudo systemctl enable slurmctld % sudo systemctl restart slurmctld % sudo systemctl status slurmctld </sxh>+<sxh bash>  
 +% sudo systemctl enable slurmctld  
 +% sudo systemctl restart slurmctld  
 +% sudo systemctl status slurmctld </sxh>
  
   * Vous ne devriez pas voir de messages d'erreur après la dernière commande.   * Vous ne devriez pas voir de messages d'erreur après la dernière commande.
Ligne 194: Ligne 305:
   * N'oubliez pas de copier le fichier ''/etc/slurm/slurm.conf''  sur vos noeuds de travail!! Assurez-vous d'avoir les bonnes permissions:   * N'oubliez pas de copier le fichier ''/etc/slurm/slurm.conf''  sur vos noeuds de travail!! Assurez-vous d'avoir les bonnes permissions:
  
-<sxh> # Sur chaque RPi de calcul % sudo clown root:root /etc/slurm/slurm.conf </sxh>+<sxh>  
 +# Sur chaque RPi de calcul  
 +% sudo chown root:root /etc/slurm/slurm.conf  
 +</sxh>
  
   * Sur chaque noeud de travail, on installe ''slurmd''  et on s'assure que ça fonctionne:   * Sur chaque noeud de travail, on installe ''slurmd''  et on s'assure que ça fonctionne:
  
-<sxh bash> % sudo apt install -y slurmd libpmix-dev % sudo systemctl enable slurmd % sudo systemctl restart slurmd % systemctl status slurmd </sxh>+<sxh bash>  
 +% sudo apt install -y slurmd libpmix-dev  
 +% sudo systemctl enable slurmd  
 +% sudo systemctl restart slurmd  
 +% systemctl status slurmd </sxh>
  
   * Encore une fois, vous ne devriez pas voir d'erreur ;-) Sur chacun des noeuds de calcul, il faut ajuster les paramètres pour le stockage des journaux:   * Encore une fois, vous ne devriez pas voir d'erreur ;-) Sur chacun des noeuds de calcul, il faut ajuster les paramètres pour le stockage des journaux:
  
-<sxh> % sudo chown -R slurm:slurm /var/spool/slurmd % sudo chmod 755 /var/spool/slurmd % sudo touch /var/log/slurm/slurmd.log % sudo chown -R slurm:slurm /var/log/slurm/slurmd.log </sxh>+<sxh>  
 +% sudo chown -R slurm:slurm /var/spool/slurmd  
 +% sudo chmod 755 /var/spool/slurmd  
 +% sudo touch /var/log/slurm/slurmd.log  
 +% sudo chown -R slurm:slurm /var/log/slurm/slurmd.log </sxh>
  
   * Vérifier que le serveur ''gru''  voit les machines:   * Vérifier que le serveur ''gru''  voit les machines:
  
-<sxh bash> % sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST biobunch* up 2:00:00 4 idle minion[01-04] </sxh>+<sxh bash>  
 +% sinfo  
 +PARTITION AVAIL TIMELIMIT NODES STATE NODELIST  
 +biobunch* up 2:00:00 4 idle minion[01-04] </sxh>
  
   * Si l'état (''STATE'') d'une machine est à ''drain''  ou à ''down'', exécuter la commande suivante sur le serveur ''gru''  et refaite la commande ''sinfo''  pour vérifier le retour à la normale:   * Si l'état (''STATE'') d'une machine est à ''drain''  ou à ''down'', exécuter la commande suivante sur le serveur ''gru''  et refaite la commande ''sinfo''  pour vérifier le retour à la normale:
  
-<sxh bash> # Sur minion01 par ex.: % sudo scontrol update nodename=minion01 state=idle </sxh>+<sxh bash>  
 +Pour minion01 par ex.:  
 +% sudo scontrol update nodename=minion01 state=idle </sxh>
  
   * Note: si à tout moment, un noeud "tombe" et doit être redémarré, il faut refaire cette commande en spécifiant le noeud en défaut.   * Note: si à tout moment, un noeud "tombe" et doit être redémarré, il faut refaire cette commande en spécifiant le noeud en défaut.
Ligne 216: Ligne 343:
   * Si tout fonctionne, le commande suivante devrait vous retourner les noms de tous les noeuds de travail:   * Si tout fonctionne, le commande suivante devrait vous retourner les noms de tous les noeuds de travail:
  
-<sxh bash> % srun –nodelist=minion[01-04] hostname minion01 minion02 minion03 minion04 </sxh> </accordion-item> </accordion>+<sxh bash>  
 +% srun –nodelist=minion[01-04] hostname  
 +minion01  
 +minion02  
 +minion03  
 +minion04  
 +</sxh> </accordion-item> </accordion>