paint-brush
Comment construire un cluster Raspberry Pi à 32 cœurs à partir de zéropar@alejandroduarte
29,185 lectures
29,185 lectures

Comment construire un cluster Raspberry Pi à 32 cœurs à partir de zéro

par Alejandro Duarte9m2022/07/18
Read on Terminal Reader
Read this story w/o Javascript

Trop long; Pour lire

Un Raspberry Pi est une mini-carte d'ordinateur à laquelle vous pouvez connecter un moniteur, une souris et un clavier, et installer un système d'exploitation basé sur Linux avec une interface graphique. Vous pouvez l'utiliser en mode "headless" sans interface graphique et exécuter, par exemple, un serveur de base de données. Un cluster comme celui-ci est un excellent moyen d'expérimenter des systèmes distribués. Dans cet article, je vais vous montrer comment construire un cluster Raspberry Pi avec : 8 nœuds avec 32 cœurs, 64 Go de RAM et 2 To de stockage.

Company Mentioned

Mention Thumbnail
featured image - Comment construire un cluster Raspberry Pi à 32 cœurs à partir de zéro
Alejandro Duarte HackerNoon profile picture

Un Raspberry Pi est une mini-carte d'ordinateur à laquelle vous pouvez connecter un moniteur, une souris et un clavier, et installer un système d'exploitation basé sur Linux avec une interface graphique. Ou vous pouvez l'utiliser en mode "headless" sans interface graphique et exécuter, par exemple, un serveur de base de données. Il existe de nombreuses utilisations que vous pouvez donner à un Raspberry Pi - de la construction d'un serveur Minecraft aux miroirs intelligents, les possibilités sont infinies.


Carte mini-ordinateur


Depuis que j'ai commencé à découvrir MariaDB et que j'ai découvert les clusters de bases de données, Distributed SQL et Xpand , l'idée de créer un cluster Raspberry Pi m'est venue à l'esprit. Un cluster comme celui-ci est un excellent moyen d'expérimenter des systèmes distribués.


Dans cet article, je vais vous montrer comment construire un cluster Raspberry Pi avec :


  • 8 nœuds
  • 32 cœurs
  • 64 Go de RAM
  • 2 To de stockage

De quoi as-tu besoin

Si vous souhaitez créer votre propre cluster, vous n'avez pas besoin d'acheter 8 appareils Raspberry Pi. Un seul appareil suffit pour apprendre des choses. Les instructions de cet article sont utiles même si vous prévoyez de configurer un seul Raspberry Pi. Mon conseil, cependant, est d'avoir au moins trois appareils pour construire votre cluster si vous voulez vraiment booster vos compétences en administration Linux , Ansible , Docker , Kubernetes , clusters de bases de données … you name it !


8 x Raspberry Pi 4 modèle B (8 Go de RAM)


Dans cet esprit, veuillez remplacer 8 par votre numéro. Faites de même avec les spécifications des appareils Raspberry Pi si vous avez différents modèles avec moins ou plus de RAM ou de stockage. Voici ce que j'ai utilisé :



Adaptez les quantités à votre installation. Vous pouvez soit obtenir une ou plusieurs alimentations Raspberry Pi si vous avez très peu d'appareils (disons 1 ou 2) ou un chargeur multi-USB. Si vous optez pour un chargeur multi-USB, assurez-vous que chaque port peut fournir au moins 2,4 Am (5 V). Choisissez également des cartes microSD qui correspondent à vos objectifs et à votre budget. Je recommande d'utiliser des cartes SD d'au moins 32 Go.


Du côté des câbles et du boîtier, choisissez tout ce qui convient à votre configuration. Vous n'avez pas nécessairement besoin de ventilateurs de refroidissement, mais je les recommande si vous prévoyez de laisser vos appareils allumés pendant de longues périodes.


Je vous recommande également de vous procurer tous les ingrédients avant de commencer à "cuisiner", surtout si vous souhaitez utiliser plusieurs appareils Raspberry Pi.

Installation du système d'exploitation Raspberry Pi (sans tête)

Le système d'exploitation (OS) que nous utiliserons est Raspberry Pi OS , un système d'exploitation basé sur Debian optimisé pour les cartes Raspberry Pi. Raspberry Pi OS est installé sur les cartes microSD à l'aide de votre ordinateur. Vous connectez ensuite ces cartes microSD à vos appareils Raspberry Pi et démarrez-les.


Obtenez toutes les cartes microSD et les boîtiers Raspberry Pi sur votre bureau. Vous aurez besoin d'un adaptateur de carte SD (ils sont généralement livrés avec des cartes microSD) ou d'un lecteur USB de carte SD si votre ordinateur de travail ne dispose pas d'un emplacement pour les cartes SD. Apportez également un Sharpie.


Téléchargez l'application Raspberry Pi Imager et installez-la sur votre ordinateur. Prenez une carte microSD et connectez-la à votre ordinateur. Ouvrez l'application Raspberry Pi Imager et cliquez sur CHOOSE OS . Dans la liste, cliquez sur Raspberry Pi OS (autre) et sélectionnez Raspberry Pi OS Lite (64 bits) si vos appareils Raspberry Pi sont 64 bits ou Raspberry Pi OS Lite (32 bits) sinon :


Imageur Raspberry Pi


Cliquez sur CHOISIR LE STOCKAGE et sélectionnez la carte microSD. Vérifiez que vous avez sélectionné le bon lecteur et cliquez sur l'icône "engrenage" (options avancées). Pour le nom d'hôte, utilisez rpi01 , ou quelque chose de similaire. Vous nommerez les appareils rpi01 , rp02 , rp03 , etc.


Cochez les options Activer SSH et Utiliser l'authentification par mot de passe. Définissez un nom d'utilisateur (je laisserai le pi par défaut) et définissez un mot de passe sécurisé.


Cochez l'option Configurer le LAN sans fil et entrez le nom et le mot de passe de votre connexion WiFi. Configurez également vos paramètres régionaux.


Étant donné que nous devons le faire une fois avec chaque carte microSD, assurez-vous de définir le champ Options de personnalisation de l'image sur : pour toujours utiliser . De cette façon, les paramètres seront enregistrés et le processus sera plus facile pour les prochaines cartes :


Options avancées de l'imageur Raspberry Pi


Maintenant, vous pouvez cliquer sur SAVE puis sur WRITE pour démarrer le processus. Une fois terminé, éjectez la carte et connectez-la à l'un des appareils Raspberry Pi, remettez-la dans sa boîte, et marquez la boîte avec le numéro 01 . Répétez ce processus pour tous les appareils.

Assemblage du cluster

Selon le type de cas de cluster que vous avez, le processus d'assemblage peut varier. Suivez les instructions fournies avec votre étui ou recherchez des photos en ligne pour avoir une idée claire de la façon dont les appareils doivent être placés dans les couches.


Assemblage du cluster


Je recommande d'anticiper pour décider quelles pièces assembler en premier. Par exemple, avec le cas que j'ai choisi, j'ai dû installer les ventilateurs de refroidissement avant de monter les appareils Raspberry Pi sur les couches.


Une fois que vous avez monté un Raspberry Pi, utilisez un Sharpie pour écrire son numéro sur la couche. Cela vous aidera à l'avenir si vous devez retirer une carte microSD pour la reconfiguration ou toute autre tâche administrative impliquant de toucher le matériel.


Tous les appareils montés


Une fois tous les appareils montés, connectez les câbles USB aux appareils Raspberry Pi et au chargeur multi-USB. Vous pouvez éventuellement utiliser Power over Ethernet et un commutateur réseau au lieu du chargeur USB si vous préférez, mais je vous laisse explorer cela ; ça vaut vraiment le coup de vérifier.


Vous pouvez avoir le chargeur (ou le commutateur réseau si vous y allez) à côté de votre rack Raspberry Pi ou attaché à celui-ci. J'ai utilisé des élastiques pour maintenir le chargeur attaché sur le côté du boîtier. Cela a bien fonctionné.


Avec les câbles USB branchés, vous êtes prêt à démarrer tous ces mini-ordinateurs ! Branchez le chargeur et allumez-le. Selon les modèles de Raspberry Pi que vous utilisez, le démarrage peut prendre un certain temps, alors soyez patient. Pendant ce temps, profitez du clignotement des LED et du démarrage des ventilateurs.


Les LED clignotent et les ventilateurs démarrent

Connexion via SSH

Si tout s'est bien passé, vous devriez pouvoir accéder aux appareils Raspberry Pi via SSH. Essayez-le en exécutant ce qui suit depuis votre ordinateur :


 ssh [email protected]


Entrez votre mot de passe et répondez oui pour ajouter l'appareil à la liste des hôtes connus. Félicitations! Votre cluster est maintenant actif.


Cluster en direct

Vous pouvez exécuter des commandes pour vérifier les informations sur le matériel. Par exemple:


  • lscpu : Informations sur l'architecture du CPU
  • df -H : utilisation de l'espace disque du système de fichiers
  • sudo fdisk -l : informations sur la partition
  • free -m : Quantité de RAM utilisée, libre et totale
  • cat /proc/version : informations sur le noyau Linux

Configuration manuelle avec raspi-config

Si vous avez un Raspberry Pi, vous pouvez vous y connecter via SSH comme décrit ci-dessus et utiliser le programme utilitaire raspi-config pour configurer divers paramètres. Vous pouvez modifier la connexion WiFi ( S1 ), changer le nom d'hôte ( S4 ) et le mot de passe utilisateur ( S3 ) et développer le système de fichiers ( A1 ), entre autres choses.


Configuration manuelle avec raspi-config

Configuration automatisée avec Ansible

Si vous avez plusieurs Raspberry Pi dans votre cluster, vous souhaiterez peut-être automatiser le processus de configuration à l'aide d'un outil comme Ansible . Avec Ansible, vous pouvez exécuter une commande sur plusieurs machines sans avoir à effectuer de tâches répétitives. Par exemple, disons que nous voulons étendre le système de fichiers sur chaque Raspberry Pi. Cela peut être fait à partir de la ligne de commande comme suit :


 sudo raspi-config --expand-rootfs


Sans automatisation, vous devrez vous connecter en SSH à rpi01.local , exécuter la commande ci-dessus et mettre fin à la session SSH. Vous devrez répéter toutes ces étapes pour rpi02.local , pr03.local , rp04.local , etc. Au lieu de cela, vous pouvez simplement dire à Ansible d'exécuter la commande pour vous sur toutes les machines. Voyons comment procéder.


Vous devez installer Ansible sur un nœud de contrôle connecté à votre réseau local. Il peut s'agir de l'un des appareils Raspberry Pi, de votre ordinateur portable de travail ou de toute autre machine tant qu'il exécute un système d'exploitation basé sur Unix comme Linux ou macOS.


Il se trouve que j'ai un vieil ordinateur portable que j'ai réutilisé comme base de données dédiée connectée à mon réseau, je l'ai donc utilisé comme nœud de contrôle (je montrerai comment installer une base de données avec réplication dans les appareils Raspberry Pi dans un futur article).


Je ne passerai pas par les instructions d'installation d'Ansible car le processus est différent sur différents systèmes d'exploitation. Consultez la documentation officielle et installez-la sur votre ordinateur portable ou sur tout appareil que vous souhaitez affecter en tant que nœud de contrôle.


Avant de commencer, je vous recommande de générer un exemple de fichier de configuration que vous pourrez modifier ultérieurement à votre guise :


 sudo su ansible-config init --disabled -t all > /etc/ansible/ansible.cfg exit


Dans ce fichier, désactivez la vérification de la clé de l'hôte pour simplifier le processus. Ne faites pas cela dans les environnements de production ! Modifiez la ligne suivante :


 ;host_key_checking=True


pour ça:


 host_key_checking=False


Ensuite, vous devez définir un inventaire. Il s'agit d'une liste de machines que vous souhaitez contrôler avec Ansible. L'inventaire est défini dans le fichier /etc/ansible/hosts . Par exemple, vous pouvez ajouter les machines suivantes à l'inventaire en utilisant leurs adresses IP ou leurs noms d'hôte :


 [mymachines] foo.example.com bar.example.com 192.0.2.50 192.0.2.51


Si les machines ont une sorte de modèle dans leurs adresses IP ou leurs noms d'hôte, vous pouvez également utiliser des plages. C'est ce que vous pouvez faire avec vos appareils Raspberry Pi. Modifiez le fichier /etc/ansible/hosts en ajoutant ce qui suit à la fin :


 [rpis] rpi[01-08].local


Modifiez le modèle pour qu'il corresponde à vos noms d'hôte et numéros. Cela équivaut à :


 [rpis] rpi01.local rpi02.local rpi03.local rpi04.local rpi05.local rpi06.local rpi07.local rpi08.local


Dans cet inventaire, rpis est un nom arbitraire que vous pouvez utiliser pour faire référence à tous les appareils Raspberry Pi lorsque vous exécutez des commandes dessus à l'aide d'Ansible.


Vous devez configurer le nom d'utilisateur SSH qu'Ansible utilisera lors de la connexion aux machines. Ajoutez ce qui suit au fichier /etc/ansible/hosts :


 [rpis:vars] ansible_user=pi


Il est temps de contrôler les machines. Un bon début est de leur envoyer un ping :


 ansible rpis -m ping --ask-pass


Tapez le mot de passe SSH. Vous devriez voir dans la sortie comment le "ping" est répondu par un "pong" pour chaque machine (je n'en montre qu'un ici):


 rpi01.local | SUCCESS => {  "ansible_facts": {    "discovered_interpreter_python": "/usr/bin/python3"  },  "changed": false,  "ping": "pong" }


Revenons à l'expansion du système de fichiers (bien que, je pense que de nos jours ce n'est plus nécessaire, faites-moi savoir dans les commentaires si vous pouvez le confirmer). Pour effectuer cette action sur toutes les machines, exécutez :


 ansible rpis -m shell -a "raspi-config --expand-rootfs" --become --ask-pass


Et aussi simple que cela, tous vos appareils Raspberry Pi ont un système de fichiers étendu. C'est le bon moment pour mettre à jour le système sur toutes les machines :


 ansible rpis -m shell -a "apt update -y" --become --ask-pass ansible rpis -m shell -a "apt upgrade -y" --become --ask-pass


Vous pouvez redémarrer tous les appareils comme suit :


 ansible rpis -m shell -a "reboot" --become --ask-pass


Et une fois que vous avez terminé et que vous souhaitez éteindre toutes les machines en toute sécurité, exécutez simplement :


 ansible rpis -m shell -a "poweroff" --become --ask-pass

Et après?

Ce n'est que le commencement. Vous avez maintenant un cluster de petits ordinateurs prêts à être contrôlés par Ansible. Vous pouvez essayer de configurer n'importe quel type de logiciel serveur, y compris des serveurs Web ou des bases de données ( voir cet exemple ). Il y a aussi beaucoup plus sur Ansible.


J'ai simplement effleuré la surface ici en utilisant des commandes ad hoc , mais vous pouvez par exemple créer des playbooks qui contiennent l'état dans lequel vous voulez que votre cluster soit. Explorez la documentation et amusez-vous !


Également publié ici