SuperPi: quels usages pour un cluster ?

Bonjour à tous,

Le projet SuperPi Cluster (50+ Raspberry-Pi) essaie d'avancé sur les possibilités d'organisation en rack.

50+ Raspberry-Pi en Rack

A propos de SuperPi

Le projet SuperPi vise à créer un super-calculateur/Cluster didactique à l'aide de 50+ Raspberry-Pi. Voyez cet article contenant plus de détails dans cet article.

La force d'un Super-Calculateur/Cluster c'est le traitement en parallèle (Parallel Computing) pouvant servir dans de très nombreux domaines.

A propos de cet article

Cet article est une ébauche, il "survole" les possibilités offertes par un cluster.
la section ressource reprend également un certain nombre de liens très intéressant.

Usage d'un cluster de Pi


D’une part, les grappes d’ordinateurs, clusters en anglais, rassemble un ensemble d’ordinateur pour en combiner la puissance de traitement, calcul ou de stockage.

D’autre part, les cartes nano-ordinateurs sont aujourd’hui très abordable (30 à 90 Eur/p) permettant ainsi de créer facilement un Cluster à prix abordable. Certes, ces nano-ordinateurs, comme les Raspberry-Pi, n’atteignent pas la puissance d’ordinateurs de bureau mais peut pallier ce désavantage par le nombre de nano-ordinateur.

Pour les 1200 EUR HTVA d’une bonne station de travail, il est possible d’acheter entre 15 à 30 Raspberry-Pi en fonction du modèle choisi (Pi 3, 4, 5 avec 1, 2, 4, 8 Go RAM).

8 à 15 Raspberry-Pi représentent un nombre déjà conséquent de nano-ordinateur pour réaliser un Cluster de Raspberry-Pi.

L'article ci-dessous concerne ces clusters plus modeste...pour sa part, Super Pi vise 50 Raspberry-Pi regroupés dans une armoire Rack.

Pourquoi constituer un cluster

Un ordinateur de bureau / serveur peut facilement dépasser la puissance de calcul de 5 à 10 Raspberry-Pi (l’équivalent Raspberry-Pi dépend du modèle sélectionné).
Il est donc légitime de se questionner sur l’utilité de réalisation d’un cluster de Raspberry-Pi.

Les projets de traitement intensifs, ou réclamant de nombreuses ressources, impliquent de longs délais de traitement qui sont à la fois frustrant (attente) tout en créant des interruptions dans flux de traitement (il faut morceler le travail en tâches interruptibles).

Le type de traitement visé par les clusters sont :

  • Encodage vidéo

  • Rendu 3D
  • Décodage de données
  • Analyse de données (data mining)
  • Intégration continue (CI/CD pipeline)
  • Inférence à faible latence (Neural Network/AI)
  • Apprentissage Machine (Machine Learning)

Par le passé, les clusters d’ordinateurs étaient créés par les universités pour effectuer de la recherche et développement. Ces institutions disposaient des fonds adéquat pour mener ces coûteux projets à terme.

Source: Computer cluster (Wikipedia)

 

Depuis, la technologie Cluster à gagné en popularité et est, aujourd’hui, facilement accessible aux développeurs, chercheurs et analystes. Grâce au Cloud --énormes clusters d’ordinateurs spécialisés-- il est possible accéder à cette technologie par l’intermédiaire d’Internet pour y réaliser les tâches intensives qui ne pourraient être assurées par les quelques ordinateurs/serveurs standards disponibles à la maison, au laboratoire informatique ou en entreprise.

Data Center = Cluster D'ordinateurs
Source: A quoi ressemble un data center Google? (Adista Cyres)

Réaliser son propre cluster, même avec des nano-ordinateurs Raspberry-Pi, c'est créer un « super ordinateur local » permettant de réduire les temps de traitement sans devoir faire appel aux services payants disponibles sur le Cloud.

L’utilisation d’un cluster local peut aussi s’avérer plus économique qu’une solution en ligne.

Spécificités d’une solution en ligne / à la demande :

  • Abonnement,

  • Frais de traitement, frais de stockage, frais de transfert de données (interne au cluster)
  • Frais de récupération de données (lecture de données depuis le cluster).
  • Frais spécifique à la région de stockage et réplication des données
  • Contrats avec clauses spécifiques (possibilité upgrade/downgrade)
  • Compétences requises : gestion administrative, provisionnement.

Spécificités d’une solution locale :

  • Prix fixé à l’achat

  • Stockage : NAS local
  • Frais : uniquement électricité
  • Compétences requises : IT (réseau informatique, provisionnement, organisation/orchestration IT)

Cas d’utilisation d’un cluster modeste

Bon nombre de cas d’utilisation ci-dessous fonctionneront parfaitement sur un cluster d’une dizaine de Raspberry-Pi

Cela s'applique bien entendu au projet SuperPi bien que ce dernier puisse viser plus loin en terme d'application. 

1) Apprendre et expérimenter 

Un cluster Raspberry-Pi est certainement la meilleure façon d’améliorer ses connaissances informatiques sur les serveurs, le réseau, les systèmes distribués et la sécurité.


Non seulement l’apprentissage Linux est un point intéressant mais il peut être complété par l’apprentissage de base de données MySQL, PostGreSql accompagné d’un Serveur Apache et des langages de scripting comme Python, PHP et faire interagir les différents nœuds enembles.

Un cluster permet également d’utiliser

  • Docker / Kubernet / Serverless

  • Déploiement Kubernetes et de container
  • Créer un Super Ordinateur à traitement logiciel simultané à l’aide de OpenMPI (Message Passing Interface)

L'architecture Kubernettes revient sans cesse dans mes lectures à propos des Clusters et Data-Center. Cela fera forcement partie des explorations SuperPi.

2) Créer un laboratoire informatique

C'est presque un corolaire du point précédent lorsque l'on fait un apprentissage des réseaux informatiques.

Dans le cadre de développement logiciel, un cluster peut largement contribuer aux testes et déploiement d'une nouvelle solution logicielle.

Le cluster permettra:

  • Déployer un logiciel sur un ensemble de station (du Cluster) à l’aide de Docker ou Kubernet.

  • Créer un serveur GitHub local (gestion des sources)
  • Tester le déploiement d’une nouvelle version sur des hôtes présentant des variations de configuration.
  • Compiler rapidement différentes versions d’un même logiciel (en utilisant les ressources de plusieurs nœuds).

Remarque: Plus il y a de nœuds dans un cluster et plus il sera performant dans un environnement partagé.

3) Créer un Cloud Privé

Un cluster local peut être utilisé pour maintenir une solution collaborative (Mail, CRM, Stockage de fichiers, gestion de documentation, contrôle de version, etc). 

Il s'agit d'applications typiques proposées sur le Cloud mais grâce au Cloud Privé, aucune donnée ne sort de l'enceinte de la maison/entreprise.

NextCloud est certainement la solution la plus connue dans ce domaine. NextCloud qui vient d'annoncer un rapprochement avec le WebMail RoundCube en vue d'améliorer sa messagerie NextCloud (qui fait grincer des dents).

L’intérêt du Cloud Privé :

  • Evite de dépendre d’un prestataire (tierce partie) pour accéder aux données,

  • Permet une mise-à-jour matériel rapidement (agrandir le cluster),
  • Réduit les coût (pas de location de service, pas de localtion de logiciel).

4) Créer un serveur Web haute performance

Lors de la sortie du Raspberry-Pi 4, la fondation Raspberry-Pi utilisait un cluster de Pi pour supporter les millions de connexions WEB au jour du lancement.
Les requêtes peuvent être partagées entre les différents raspberry-Pi (principe du Load Balancing = distribution de la charge).

Source: Setting up a LAMP Stack application (Daniel Flavour)

Il est facile de transformer un cluster de Pi serveur WEB.
Installer les paquets LAMP, une solution de stockage (NAS) et c’est parti.

Outre l'offre de réponse sur internet, cette solution permet :

  1. Configurer finement la sécurité

  2. Utiliser Graphana pour surveiller les ressources
  3. Installer Cpanel sur les clients
  4. Utiliser QoS pour moduler la bande passante
  5. Utiliser des comptes clients pour limiter l’accès à certaines ressources

Besoin de supporter plus connexions ? ==> Ajouter un nouveau nœud.

Que Signifie LAMP?

LAMP (Linux, Apache, MySQL, PHP/Perl/Python) est un acronyme désignant une des piles logiciels les plus connues utilisée par de nombreuses applications les plus populaires du WEB.
Aujourd'hui, LAMP est utilisé pour identifier une pile logiciel générique capable et ses composants interchangeables. Voir l'article "LAMP (software bundle)" sur Wikipedia.

5)  NAS et partage de fichiers

Le NAS (Network Attached Storage = Serveur de Stockage en Réseau) est l'une des applications les plus populaires du Raspberry-Pi.

Source: How to Turn a Computer into a NAS Storage Device.
How to recover Data from OpenMediaVault RAID
(YouTube)

Il est possible, si pas indispensable, d’installer un NAS sur un cluster.
Le NAS permettra de grands fichiers (ex : fichiers vidéo, kit de développement, backup, documents PDF, base de données, etc).

Chaque utilisateur peut avoir un espace dédié sur le Cluster dont la taille est configurable en fonction de l'utilisateur.
La bande passante peut aussi être configurée et surveillée de sorte qu’un utilisateur ne perturbe pas le transfert des données des autres utilisateurs.

OpenMediaVault est certainement le NAS le plus connu et reconnu.

6) Gérer des charges importantes

Certains environnements de travail nécessitent la disponibilité de ressources informatiques puissantes. 

Si vous êtes programmeur alors vous savez que plus un projet devient volumineux et plus sa compilation prend du temps.
Avec un Cluster, il est possible de créer une ferme de compilation (compile farm) et assigner tous les nœuds du cluster pour qu'ils travaillent en parallele sur une même tâche.

Un travail complexe peut aussi être scindé en multiples tâches : une tâche sur trois nœuds et une tâche différentes sur autres 4 nœuds.

Jonglez avec les ressources d’un cluster Raspberry Pi permet de gérer de lourdes charges en les répartissants sur plusieurs noeuds.
Plus on ajoute de nœuds à un cluster Raspberry Pi et plys il y a de ressources multicœurs pour exécuter les charges.

Il est possible d’utiliser Docker ou Kubernetes pour gérer des tâches spécifiques.

Workers (noeuds) et Maître (superviseur)

Un logiciel de traitement parallèle (parallel processing) permet d'atteindre le même but en découpant des tâches.

Un cluster peut réaliser les mêmes opérations qu’un ordinateur mais en une fraction du temps qui serait nécessaire à un seul ordinateur.

7)  Conversion multimedia

La traitement d'image et conversion de flux vidéo sont des processus très gourmands en temps machine. Le rendu d'une scène 3D peut également être grand consommateur en temps de calcul!

Il est possible d’effectuer ces traitements graphiques intensifs sur un ordinateur. Si le traitement d'une photo ne prend que quelques secondes, la conversion d'une vidéo peut s'étendre sur plusieurs minutes (où il faudra une machine puissante et coûteuse).

A moindre coût, un ordinateur modeste + un cluster de Raspberry-Pi peuvent réaliser les mêmes opérations. Transférez les énormes fichiers d'images brutes sur le cluster et celui-ci peut les convertir par lots, les redimensionner, appliquer des filtres etc.

Le rendu des fichiers 3D en utilisant plusieurs processeurs et modules RAM d'un Cluster sera aussi plus rapide.

L'intérêt d'un travail avec plusieurs noeuds est qu'il est aussi possible d'être averti lorsque le traitement est terminé (e-mail, notification sonore ou LED).
Il ne reste qu'à transférer le résultat sur l’ordinateur.

Plus il y a de nœuds dans un cluster, plus il y de ressources et de processus (worker) pour accomplir les tâches. 

8) Réaliser un super-ordinateur / super-calculateur

Disposer de ressources informatiques pour le traitement parallèle est coûteux.

Par exemple, le logiciel R (traitement statistique open-source) permet de réaliser des évaluations statistiques sur des bases de données volumineuses.
R est également hautement personnalisable grâce a un système de greffon.

R – comme tout autre logiciel statistique – a tendance à être gourmand en ressources. Plus votre base de données contient d’entrées, plus le logiciel statistique à besoin de temps pour produire un résultat. 

C'est pourquoi il est recommandé d'utiliser un cluster pour de telles tâches.

Par ailleurs, ce cas n'est très différents de la conversion de fichiers multimedia sauf que dans ce cas là, le traitement mathématique est très spécifique.

Ceci étant, pour les cas de calcul intensif (comme R), pas besoin d’argent pour louer du temps sur un super-calculateur dans le cloud (et faire la queue avec d’autres utilisateur).
Investir cet argent pour héberger son propre superordinateur/cluster (bon marché, évolutif, faible consommation) peut être une approche judicieuse.

Avec son propre cluster, les calculs sont effectués localement, presque gratuitement et pas besoin de faire la queue avec d'autres utilisateurs.
C'est dans cette optique qie le projet SuperPi à vu le jour.

9) Serveur de jeu Minecraft (et autres serveur de jeux)

Plus ludique cette fois, un clusteur peut aussi être exploité dans le monde du jeux.

A titre d'exemple, Minecraft permet de stocker son propre monde sur un serveur. 


Avec un cluster Raspberry Pi, il est possible d’héberger tous vos serveurs de jeux (nombre d'entre eux fonctionnent sous Linux puisqu'ils sont destinés a être en ligne).

Offrir un monde dans Minecraft à un amis, combattre des monstres ensembles dans Lineage ou traquez-vous les uns les autres dans le jeu Rust.

Si un jeu comporte un composant serveur, il est fort probable que celui-ci fonctionne dans un environnement Linux comme le Raspberry Pi.

10) CI/CDRéaliser un super-ordinateur / super-calculateur

ICI/CD Pipeline concerne l’intégration continue d’un développement logiciel (CI : Continuous intégration) et peut également prendre en charge la publication en continu de celui-ci (CD : Continuous Delivery).

Lors du développement d’une solution pour une utilisation interne (ex : la cas des banques) le processus peut être complété par une phase de déploiement en production.

Le graphique ci-dessous représente bien ces différents éléments :

Source : RedHat devOps ( https://www.redhat.com/fr/topics/devops/what-cicd-pipeline )

D’une par, un système de contrôle de version permet de gérer les différentes versions d’un logiciel et/ou de son code source. Git est probablement le système le plus utilisé à ce jour et est capable de prendre en charge les requêtes push et pull (de version) dans des entreprises comptant des centaines d'utilisateurs.

Le code est ainsi conserver dans un environnement fermé (et non dans un endroit en ligne sur GitHub/GitLab).

D’autre part, l’utilisation de machine virtuelle / Docker pré-configuré pour réaliser les tâches nécessaires (compilation/montage d’une DB./test suite/etc) pour faciliter les tâches.

Enfin, Ansible est un logiciel d’automatisation IT.
Il permet d’automatiser le déploiement de logiciels sur des postes Linux/Windows. Il peut coordoner une déploiement multi-noeud (sur plusieurs postes distincts, base de données, serveur, MessageQueue, etc).

Un cluster Raspberry Pi permet de configurer de tels environnements. 

10) Home automation

Il est aujourd’hui possible d’automatiser une maison pour quelques centaines d’Euro.
Le logiciel Home Assistant est probablement le plus connu dans cette catégorie.

Souce: Mes usages de Home Assistant par Niko C (sur blablaHigh-Tech)

Commander des lumières aux stores automatiques en passant par les prises wifi du salon.
Avoir une porte de garage qui s'ouvre et se ferme toute seule... ou commandable depuis un smartphone.
Une sonnette de maison avec un flux vidéo, un baby-phone qui diffuse une musique apaisante si le bébé pleure trop fort. 

Envoyer des commandes WiFi à votre prise murale pendant 10 minutes pour faire couler la café les jours de semaine (et envoyer un SMS quand il est prêt). 

Vous réveiller automatiquement avec votre station de radio préférée.
Allumer le téléviseur sur votre chaîne d'information locale.

Allumer la lumière dans les pièces vers lesquelles quelqu’un se dirige.

Tous ces appareils automatisés doivent avoir un cerveau qui les surveille et gère les actions.

Un cluster Raspberry Pi peut être transformé en un centre d'automatisation polyvalent avec des journaux, rapports et statistiques sur les appareils sous contrôle.

Ressources

J'ai collecté un certain nombre d'articles dont certains sont vraiment très intéressants!

Bonne lecture

Aucun commentaire