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 | ||
vintage:lolhpc [2013/01/12 21:47] – 10 LOLHPC: Whitespace | vintage:lolhpc [2024/10/29 20:01] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 19: | Ligne 19: | ||
* lordzurp | * lordzurp | ||
* martin | * martin | ||
+ | * zorun | ||
==== Référent(s) ==== | ==== Référent(s) ==== | ||
Ligne 28: | Ligne 29: | ||
* lordzurp | * lordzurp | ||
* martin | * martin | ||
+ | * zorun | ||
==== Compétence(s) recherchée(s) ==== | ==== Compétence(s) recherchée(s) ==== | ||
Ligne 38: | Ligne 40: | ||
32 noeuds de calcul scientifique NEC récupérés à l’in2p3 (Institut National de Physique Nucléaire et de Physique des Particules) en chassis 1U montés dans une baie 19" | 32 noeuds de calcul scientifique NEC récupérés à l’in2p3 (Institut National de Physique Nucléaire et de Physique des Particules) en chassis 1U montés dans une baie 19" | ||
+ | |||
+ | 2x Xeon (21 à 2.8GHz et 11 à 3GHz) génération NetBurst (certainement ça [[https: | ||
+ | |||
+ | 4x512Mo DDR ECC reg (et 2 slot libres) | ||
+ | |||
+ | 2x120Go sata, lecteur CD | ||
+ | |||
+ | dual lan, 1 port PCIX full size et 1 port PCIX half-size, module IPMI … | ||
+ | |||
+ | alimentation sur 3 arrivées, 1800W/prise | ||
+ | |||
+ | Conso mesurée : - 56W pour les switch - 240W / serveur sans calculs | ||
+ | |||
+ | Conso totale estimée : 7.7kW | ||
==== Objectif(s) ==== | ==== Objectif(s) ==== | ||
Ligne 46: | Ligne 62: | ||
< | < | ||
- | < | + | < |
< | < | ||
< | < | ||
- | < | + | < |
- | < | + | < |
- | < | + | < |
+ | < | ||
+ | < | ||
< | < | ||
< | < | ||
Ligne 58: | Ligne 76: | ||
< | < | ||
< | < | ||
- | < | + | < |
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | ===== Ce qui est fait ===== | ||
+ | |||
+ | * Renommer les lame dans le KVM | ||
+ | * Installer quelques Debian pour tester | ||
+ | |||
+ | ===== Utilisation(s) possible(s) ===== | ||
+ | |||
+ | Indiquer ci-dessous les idées d’utilisation, | ||
+ | |||
+ | [[!table data=""" | ||
+ | |||
+ | Ce serait cool de proposer un accès à d’autres hackerspaces via [[https:// | ||
+ | |||
+ | Autre idée : hacker le protocole du KVM | ||
+ | |||
+ | ==== Solution utilisable : ==== | ||
+ | |||
+ | * Slurm+MPI | ||
+ | * Openstack | ||
+ | * Hadoop ou Spark | ||
+ | * Razor | ||
+ | * DN42 | ||
+ | * ChaosVPN | ||
+ | |||
+ | ===== Stockage ===== | ||
+ | |||
+ | On aimerait avoir les mêmes données (/home) sur chaque noeud : ainsi, on peut se connecter à n’importe quel noeud allumé pour lancer ses calculs. | ||
+ | |||
+ | Deux familles de solutions : | ||
+ | |||
+ | * **centralisé :** en gros, un serveur NFS dans lequel tous les noeuds vont taper | ||
+ | * **distribué :** système de fichier réparti ou autre solution de synchronisation | ||
+ | |||
+ | La première solution est à éviter : ça oblige à avoir une machine qui tourne tout le temps, il faut s’assurer de la redondance des données, les perfs seront catastrophiques dès que plusieurs noeuds feront des I/O, et ce serait dommage de ne pas utiliser les disques des noeuds du cluster. | ||
+ | |||
+ | On part plutôt sur la seconde solution (parce qu’en plus, c’est rigolo à faire). Il y a cependant un nouveau problème potentiel : le //split brain// ([[https:// | ||
+ | |||
+ | ==== Problème du split brain ==== | ||
+ | |||
+ | Typiquement, | ||
+ | |||
+ | * Allumer la moitié des noeuds | ||
+ | * Écrire des choses dans le système de fichier réparti | ||
+ | * Éteindre les noeuds | ||
+ | * Allumer l’autre moitié des noeuds | ||
+ | * Écrire d’autres choses dans le système de fichier réparti | ||
+ | * Rallumer la première moitié des noeuds | ||
+ | * (le système de stockage réparti fait sa cuisine) | ||
+ | * Les mêmes données sont disponibles sur tous les noeuds ! | ||
+ | |||
+ | Il faut une solution de stockage réparti qui permette ça. | ||
+ | |||
+ | ==== Répartition du stockage ==== | ||
+ | |||
+ | * **Solution 1 :** RAID-0 sur chaque noeud, donc 2x 120 GB = 240 GB disponible. Les données sont répliquées à l’identique sur chaque noeud. | ||
+ | * Capacité totale : 240 GB | ||
+ | * Avantages : grande redondance, flexibilité (on peut allumer de 1 à 32 machines) | ||
+ | * Inconvénients : peu de capacité totale, performances en écriture (à tester) | ||
+ | * **Solution 2 :** regroupement des noeuds par paires : RAID-0 sur chaque noeud, puis “RAID-0 réseau” entre deux noeuds d’une même paire. Ensuite, les données sont répliquées à l’identique sur chaque paire. | ||
+ | * Capacité totale : 480 GB | ||
+ | * Avantages : redondance, performances en écriture probablement meilleures | ||
+ | * Inconvénients : plus complexe, beaucoup moins flexible (il faut allumer les machines par paires) | ||
+ | |||
+ | ==== Système de fichier réparti ==== | ||
+ | |||
+ | Utilisation d’un vrai système de fichier réparti (soit kernelspace, | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | Ce dernier n’est pas vraiment un système de fichiers : c’est un périphérique bloc distribué, sur lequel on peut mettre n’importe quel système de fichier. | ||
+ | |||
+ | ==== Synchronisation ==== | ||
+ | |||
+ | On peut aussi faire le contraire : mettre n’importe quel système de fichier “classique” (ext4) sur chaque noeud, et synchroniser les données par-dessus. Ça paraît beaucoup plus hackish, mais ça peut marcher, et c’est surtout plus simple. | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ===== Gestion de la configuration ===== | ||
+ | |||
+ | On ne veut pas s’embêter à installer/ | ||
+ | |||
+ | Plus précisément, | ||
+ | |||
+ | * **Provisioning des utilisateurs :** création d’utilisateur sur tous les noeuds d’un coup (mot de passe, clé SSH, groupes) | ||
+ | * **Provisioning des paquets :** pouvoir déployer des paquets sur tous les noeuds d’un coup | ||
+ | |||
+ | Il y a plein de solutions pour ça : | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * … | ||
===== Référence(s) ===== | ===== Référence(s) ===== |