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
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 que vous pouvez donner à un Raspberry Pi - de la construction d'un serveur Minecraft aux miroirs intelligents, les possibilités sont infinies.
Depuis que j'ai commencé à découvrir MariaDB et que j'ai découvert les clusters de bases de données, et , 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 Mon conseil, cependant, est d'avoir au moins trois appareils pour construire votre cluster si vous voulez vraiment booster vos compétences en administration , , , , … you name it !
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é :
8 x (8 Go de RAM)
1 x (10 ports)
8 x (5A, 40W, 23cm)
8 x (256 Go)
2 x (4 couches avec ventilateur de refroidissement)
Adaptez les quantités à votre installation. Vous pouvez soit obtenir une ou plusieurs 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 , 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 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 :
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 :
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.
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.
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 et un 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.
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 :
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.
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 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 . 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 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 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 :
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 à :
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):
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 ( ). Il y a aussi beaucoup plus sur Ansible.
J'ai simplement effleuré la surface ici en utilisant , mais vous pouvez par exemple créer des qui contiennent l'état dans lequel vous voulez que votre cluster soit. Explorez la et amusez-vous !