Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fr:install:clafoutis:ubuntu_cluster_install [2025/10/22 07:22] – [Protocole d'installation] foisys | fr:install:clafoutis:ubuntu_cluster_install [2025/10/25 17:27] (Version actuelle) – [Protocole d'installation] foisys | ||
|---|---|---|---|
| Ligne 39: | Ligne 39: | ||
| ===== Protocole d' | ===== Protocole d' | ||
| - | < | + | < |
| + | < | ||
| * Si ça n'a pas été encore fait, il faut changer le nom de chaque machine pour que ça corresponde au fichier ''/ | * Si ça n'a pas été encore fait, il faut changer le nom de chaque machine pour que ça corresponde au fichier ''/ | ||
| - | + | <sxh bash> | |
| - | <sxh bash> # Sur gru % sudo hostnamectl set-hostname gru # Sinon, sur chaque noeud de calcul: % sudo hostnamectl set-hostname minion0x </ | + | # Sur gru |
| + | % sudo hostnamectl set-hostname gru | ||
| + | # Sinon, sur chaque noeud de calcul: | ||
| + | % sudo hostnamectl set-hostname minion0x </ | ||
| * Modifiez le fichier ''/ | * Modifiez le fichier ''/ | ||
| - | + | <sxh bash> | |
| - | <sxh bash> # Super Clafoutis 192.168.a.xy0 gru 192.168.a.xy1 minion01 192.168.a.xy2 minion02 192.168.a.xy3 minion03 192.168.a.xy4 minion04 </ | + | # Super Clafoutis |
| + | 192.168.a.xy0 gru | ||
| + | 192.168.a.xy1 minion01 | ||
| + | 192.168.a.xy2 minion02 | ||
| + | 192.168.a.xy3 minion03 | ||
| + | 192.168.a.xy4 minion04 | ||
| + | </ | ||
| * Ubuntu a la fâcheuse manie d' | * Ubuntu a la fâcheuse manie d' | ||
| - | + | <sxh bash> | |
| - | <sxh bash> % sudo nano / | + | % sudo nano / |
| + | </ | ||
| * Éditer le fichier en mettant un dièse (''#'' | * Éditer le fichier en mettant un dièse (''#'' | ||
| - | <sxh bash> # Cette ligne… | + | <sxh bash> |
| + | # Cette ligne… | ||
| + | manage_etc_hosts: true | ||
| + | # …devient: | ||
| + | #manage_etc_hosts: true | ||
| + | </ | ||
| * Pour faciliter l' | * Pour faciliter l' | ||
| - | + | <sxh bash> | |
| - | <sxh bash> # Sur gru | Pas besoin d' | + | # Sur gru | Pas besoin d' |
| + | % ssh-keygen -t rsa | ||
| + | # On copie la clé sur chaque minion | ||
| + | % for i in {1..4}; do ssh-copy-id monUsager@minion0$i; | ||
| + | </ | ||
| * Pour le bon fonctionnement de '' | * Pour le bon fonctionnement de '' | ||
| </ | </ | ||
| - | |||
| < | < | ||
| * Il faut installer MUNGE sur tous les ordinateurs de la grappe: | * Il faut installer MUNGE sur tous les ordinateurs de la grappe: | ||
| - | <sxh bash> % sudo apt install -y munge libmunge-dev </ | + | <sxh bash> |
| + | % sudo apt install -y munge libmunge-dev | ||
| + | </ | ||
| * À la suite de cette opération, l' | * À la suite de cette opération, l' | ||
| Ligne 89: | Ligne 109: | ||
| * Il faut maintenant copier la clé d' | * Il faut maintenant copier la clé d' | ||
| - | <sxh bash> % for i in `seq 1 4`; do sudo scp / | + | <sxh bash> |
| + | % for i in `seq 1 4`; do sudo scp / | ||
| + | # Sur chaque minion: | ||
| + | % sudo chown munge:munge / | ||
| + | % sudo chmod 400 / | ||
| + | % sudo systemctl restart munge | ||
| + | # Vous ne devriez pas voir de message d' | ||
| + | % systemctl status munge | ||
| + | </ | ||
| * 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' | + | <sxh bash> |
| + | # Sur chaque minion | ||
| + | # A faire pour tous les minions pour s' | ||
| + | % ssh minion01 munge -n | unmunge | ||
| + | # Vous devriez voir une sortie au terminal qui ressemble à ça: | ||
| + | STATUS: Success (0) | ||
| + | ENCODE_HOST: | ||
| + | ENCODE_TIME: | ||
| + | DECODE_TIME: | ||
| + | TTL: 10 | ||
| + | CIPHER: aes128 (4) | ||
| + | MAC: sha256 (5) | ||
| + | ZIP: none (0) | ||
| + | UID: bioubuntu (1030) | ||
| + | GID: users (100) | ||
| + | LENGTH: 0 | ||
| + | </ | ||
| * Pour s' | * Pour s' | ||
| - | <sxh bash> # Sur chaque RPi de la grappe % sudo systemctl enable munge </ | + | <sxh bash> |
| + | # Sur chaque RPi de la grappe | ||
| + | % sudo systemctl enable munge | ||
| + | </ | ||
| + | </ | ||
| < | < | ||
| Ligne 113: | Ligne 161: | ||
| * Il faut ajouter quelques paramètres dans le fichier de config ''/ | * Il faut ajouter quelques paramètres dans le fichier de config ''/ | ||
| - | <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 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 | ||
| + | </ | ||
| * Les premières étapes se font dans MariaDB ;-) Commençons par créer l' | * Les premières étapes se font dans MariaDB ;-) Commençons par créer l' | ||
| - | <sxh bash> # On opère MariaDB comme si c' | + | <sxh bash> |
| + | # On opère MariaDB comme si c' | ||
| + | % 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; | ||
| + | mysql> CREATE USER ' | ||
| + | Query OK, 0 rows affected (0.16 sec) </ | ||
| * 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; | + | <sxh bash> |
| + | # | ||
| + | mysql> create database slurm_acct_db; | ||
| + | Query OK, 1 row affected (0.04 sec) </ | ||
| * On termine la mise en place sur MySQL en donnant les permissions nécessaires à l' | * On termine la mise en place sur MySQL en donnant les permissions nécessaires à l' | ||
| - | <sxh bash> # mysql> grant all privileges on slurm_acct_db.* to ' | + | <sxh bash> |
| + | # | ||
| + | mysql> grant all privileges on slurm_acct_db.* to ' | ||
| + | Query OK, 0 rows affected (0.02 sec) </ | ||
| * On installe le package '' | * On installe le package '' | ||
| - | <sxh> % sudo apt install slurmdbd </ | + | < |
| + | % sudo apt install slurmdbd | ||
| + | </ | ||
| * Il faut créer un fichier de configuration pour '' | * Il faut créer un fichier de configuration pour '' | ||
| - | <sxh bash> AuthType=auth/ | + | <sxh bash> |
| + | AuthType=auth/ | ||
| + | AuthInfo=/ | ||
| + | DbdHost=localhost | ||
| + | DbdAddr=localhost | ||
| + | StoragePort=3306 | ||
| + | StorageUser=slurm | ||
| + | # Evidemment, mettre celui que vous aurez choisi ci-dessus | ||
| + | # Ici, c'est pour l' | ||
| + | StoragePass=bioubuntu | ||
| + | StorageType=accounting_storage/ | ||
| + | LogFile=/ | ||
| + | PidFile=/ | ||
| + | SlurmUser=slurm </ | ||
| * Assurez-vous d' | * Assurez-vous d' | ||
| - | <sxh bash> % sudo touch / | + | <sxh bash> |
| + | % sudo touch / | ||
| + | % sudo echo ' | ||
| + | % sudo chown slurm:slurm / | ||
| + | % sudo chown slurm:slurm / | ||
| + | % sudo chmod 600 / | ||
| + | % sudo systemctl enable –now slurmdbd | ||
| + | % sudo systemctl status slurmdbd </ | ||
| * Vous ne devriez pas voir de message d' | * Vous ne devriez pas voir de message d' | ||
| Ligne 147: | Ligne 235: | ||
| * On commence par l' | * On commence par l' | ||
| - | <sxh bash> % sudo apt install -y slurmctld </ | + | <sxh bash> |
| + | % sudo apt install -y slurmctld | ||
| + | </ | ||
| * À 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 '' | * Il faut maintenant créer un fichier de configuration '' | ||
| - | <sxh bash> # sudo nano / | + | <sxh bash> |
| + | # sudo nano / | ||
| + | </ | ||
| * Il vous suffit de l' | * Il vous suffit de l' | ||
| - | <sxh bash> # Le nom de la grappe ClusterName=superclafoutis # Le nom du serveur sur lequel fonctionne le processus slurmctld SlurmctldHost=gru AuthType=auth/ | + | <sxh bash> |
| + | # Le nom de la grappe | ||
| + | ClusterName=superclafoutis | ||
| + | # Le nom du serveur sur lequel fonctionne le processus slurmctld | ||
| + | SlurmctldHost=gru | ||
| + | AuthType=auth/ | ||
| + | ProctrackType=proctrack/ | ||
| + | SchedulerType=sched/ | ||
| + | SelectType=select/ | ||
| + | # Le nom de l' | ||
| + | SlurmUser=slurm | ||
| + | StateSaveLocation=/ | ||
| + | SlurmdSpoolDir=/ | ||
| + | SlurmctldPidFile=/ | ||
| + | SlurmdPidFile=/ | ||
| + | # L' | ||
| + | AccountingStorageType=accounting_storage/ | ||
| + | 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 </ | ||
| * Remarquez que '' | * Remarquez que '' | ||
| * Il faut terminer la configuration avec les commandes suivantes: | * Il faut terminer la configuration avec les commandes suivantes: | ||
| - | <sxh bash> % sudo mkdir -p / | + | <sxh bash> |
| + | % sudo mkdir -p / | ||
| + | % sudo chown slurm:slurm / | ||
| + | % sudo chmod 755 / | ||
| + | % sudo touch / | ||
| + | % sudo touch / | ||
| + | % sudo touch / | ||
| + | % sudo chown -R slurm:slurm / | ||
| * Assurez vous maintenant de copier le fichier '' | * Assurez vous maintenant de copier le fichier '' | ||
| * Sur '' | * Sur '' | ||
| - | <sxh bash> % sudo systemctl enable slurmctld % sudo systemctl restart slurmctld % sudo systemctl status slurmctld </ | + | <sxh bash> |
| + | % sudo systemctl enable slurmctld | ||
| + | % sudo systemctl restart slurmctld | ||
| + | % sudo systemctl status slurmctld </ | ||
| * Vous ne devriez pas voir de messages d' | * Vous ne devriez pas voir de messages d' | ||
| Ligne 174: | Ligne 305: | ||
| * N' | * N' | ||
| - | <sxh> # Sur chaque RPi de calcul % sudo clown root:root / | + | < |
| + | # Sur chaque RPi de calcul | ||
| + | % sudo chown root:root / | ||
| + | </ | ||
| * Sur chaque noeud de travail, on installe '' | * Sur chaque noeud de travail, on installe '' | ||
| - | <sxh bash> % sudo apt install -y slurmd libpmix-dev % sudo systemctl enable slurmd % sudo systemctl restart slurmd % systemctl status slurmd </ | + | <sxh bash> |
| + | % sudo apt install -y slurmd libpmix-dev | ||
| + | % sudo systemctl enable slurmd | ||
| + | % sudo systemctl restart slurmd | ||
| + | % systemctl status slurmd </ | ||
| * Encore une fois, vous ne devriez pas voir d' | * Encore une fois, vous ne devriez pas voir d' | ||
| - | <sxh> % sudo chown -R slurm:slurm / | + | < |
| + | % sudo chown -R slurm:slurm / | ||
| + | % sudo chmod 755 / | ||
| + | % sudo touch / | ||
| + | % sudo chown -R slurm:slurm / | ||
| * Vérifier que le serveur '' | * Vérifier que le serveur '' | ||
| - | <sxh bash> % sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST biobunch* up 2:00:00 4 idle minion[01-04] </ | + | <sxh bash> |
| + | % sinfo | ||
| + | PARTITION AVAIL TIMELIMIT NODES STATE NODELIST | ||
| + | biobunch* up 2:00:00 4 idle minion[01-04] </ | ||
| * Si l' | * Si l' | ||
| - | <sxh bash> # Sur minion01 par ex.: % sudo scontrol update nodename=minion01 state=idle </ | + | <sxh bash> |
| + | # Pour minion01 par ex.: | ||
| + | % sudo scontrol update nodename=minion01 state=idle </ | ||
| * Note: si à tout moment, un noeud " | * Note: si à tout moment, un noeud " | ||
| Ligne 196: | 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 bash> |
| + | % srun –nodelist=minion[01-04] hostname | ||
| + | minion01 | ||
| + | minion02 | ||
| + | minion03 | ||
| + | minion04 | ||
| + | </ | ||