Construire un Cluster RaspBerry
Il y a quelque temps, j’avais effleuré le sujet avec le clusterhat mais vu la faible puissance du système et le peu d’expérience, je n’avais pas été très loin.
Installation hardware
Maintenant, il est temps de vous présenter mon projet. Il s’agit d’un cluster de quatre Raspberry PI 4 de 2 Go. J’ai rajouté mon clusterhat équipé d’un Raspberry Pi 3 et de 4 Pi Zéro, autant les mettre que de les laisser dans un tiroir. Tout ce petit monde est raccordé à un switch giga manageable (supervision oblige).
J’ai suivi les conseils de Xavier pour le châssis et les câbles réseaux. J’ai trouvé des dissipateurs PI 4 sur Amazon.
Par contre, vu la consommation des PI 4, j’ai préféré les alimentations officielles. Premier problème, l’encombrement de ces alimentations, il vous faudra une grande rallonge ou plusieurs comme moi…
Tous ces fils, cela me rappelle la grande époque des mini-ordinateurs des années quatre-vingt avec leurs extensions !
Pour l’installation des Raspberry, j’ai utilisé l’astuce de Xavier à savoir coller les rondelles en plastiques sur chaque plaque.
Utilisez une clé à pipe miniature pour fixer les écrous surtout pour ceux proches des prises Ethernet et USB. Bref, l’installation mécanique ne pose pas de souci.
Installation software
Puis viens la mise en service des Raspberry. Comme indiqué sur les vidéos de Xavier, je me suis mis en quête des images Stretch pour les Pi 4. L’installation des images ne pose pas de problème avec un ordinateur équipé d’Ubuntu. Il suffit de double-cliquer sur l’image, la carte SDRAM étant préalablement montée, le programme propose l’installation de l’image, il suffit de choisir la SDRAM.
Deuxième problème, impossible de monter la partition rootfs, une fois l’image copiée. Après plusieurs essais, une évidence, les cartes achetées chez Kubii ne fonctionnent pas avec Linux ! Je n’ai plus qu’a les remplacer. Heureusement, il me restait un stock de carte.
Comme je n’ai pas d’écran pour chaque Pi 4, je fais donc la préparation de mes cartes pour une installation sans écran.
Les exemples sont donnés pour une distribution Ubuntu 18.04
1 autoriser la connexion ssh, créez un fichier ssh vide dans la partition boot
touch /media/`echo $USER`/boot/ssh
2 Ajouter une adresse IP statique, modifiez le fichier dhcpcd.conf dans la partition rootfs
vim /media/`echo $USER`/rootfs/etc/dhcpcd.conf
Décommentez et modifiez les lignes suivantes en fonction de votre configuration.
# Example static IP configuration:
interface eth0
static ip_address=192.168.1.220/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
On affectera les adresses 220 à 223.
Modifiez aussi les noms d'hôtes des machines en modifiant les fichiers hostname et hosts. Voici les noms de mon cluster :
kmaster 192.168.1.220
node1 192.168.1.221
node2 192.168.1.222
node3 192.168.1.223
clusterhat 192.168.1.224
p1 192.168.1.225
p2 192.168.1.226
p3 192.168.1.227
p4 192.168.1.228
Premier test et… rien, nada ! Pas d’IP présente sur le réseau. Troisième problème : j’avais pensé à acheter un câble spécifique pour les Raspberry PI 4 mais c’est sans compter sur mon matériel préhistorique avec des prises VGA et DVI. Je me retrouve à vouloir connecter mon écran avec d’un côté un câble DVI-HDMI mâle et de l’autre un câble Micro HDMI-HDMI mâle !
c’est malin ! la galère pour trouver l’adaptateur pour connecter mon écran, enfin au bout de 3 ou 4 magasins, j’ai trouvé l’adapteur DVI-HDMI femelle Avec les deux câbles ci-dessous, je pourrais me connecter aussi bien sur le Pi3 que sur le Pi 4.
Quatrième problème, tout ça pour m’apercevoir : primo, qu’il faut ajouter une option dans le fichier config.txt pour la configuration HDMI des PI 4 et secondo, que la version Stretch ne fonctionne pas sur le Pi 4
La configuration spécifique pour le Pi 4 dans le fichier /boot/config.txt
[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
Du coup, je tente l’installation avec Buster ayant vu un article pour installer Docker pour Raspbian Buster. L’installation des PI 4 ne pose aucun problème avec Buster.
Installation clusterhat
Reste le Pi 3 avec le clusterhat. En surfant sur le site officiel, je m’aperçois d’une mise à jour des images. Le mode bridge m’intéresse car les pi Zéro vont être accessibles sur mon réseau local. J’en profite pour télécharger l’image full.
L’installation ne pose pas trop de problème à part la mise à jour qui ne fonctionne pas en mode graphique. Un apt-get update et upgrade en ligne de commande règle le problème. Reste à installer tout ce petit monde en IP Statique.
Pour le PI 3, voici la modification à réaliser sur le fichier dhcpcd.conf
interface br0
static ip_address=192.168.1.224/24 #ClusterCTRL
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
fallback clusterctrl_fallback_br0
Pour les Pi Zéro, préparer les images comme pour les Pi 4. Créez un fichier ssh dans la partition boot. Pour l’adresse IP, modifiez le fichier dhcpcd comme ceci.
interface usb0
static ip_address=192.168.1.225/24 #ClusterCTRL
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
fallback clusterctrl_fallback_usb0
On affectera les adresses 225 à 228.
Installer les cartes SDRAM dans les Pi Zéro et lancer la commande suivante à partir du Pi 3
Vous pourrez vous connecter sur vos Pi Zéro après quelques secondes. Profitez-en pour modifier tous les mots de passe de vos Raspberry, on ne sait jamais
Tout est prêt pour l'installation de docker, la supervision est prête.
Voici la fin de ce premier article, le cluster est présent sur le réseau. Nous allons utiliser ansible pour l’installation de ce cluster. Pour cela, je vais m’appuyer sur les conseils de xavier et m’inspirer de son GitLab.