Les raspberry pi peuvent avoir plusieurs cartes attachées à eux. Certaines possèdent des capteurs, d'autres permettent d'avoir la météo, power over ethernet, un UPS via des piles AA, et beaucoup d'autres. La carte que je possède ici permet à 4 raspberry pi zero d'être connectés à un de taille standard.
Le cluster hat peut gérer jusqu'à quatre Raspberry Pi Zero, et c'est ce que j'ai fait ici. Il est positionné sur un Raspberry Pi 3 B. Chacun d'entre eux est vu sur le réseau comme une machine individuelle. Ils ont donc leur propre adresse IP et sont tous accessibles à distance via SSH. Il est donc possible de les utiliser en cluster ou indépendamment. Les Pi Zéros ont accès au réseau via un pont établi par le Raspberry Pi central.
J'ai choisi de l'utiliser en tant que cluster, pas avec chaque pi autonome, car je voulais apprendre plus de choses à ce sujet. Actuellement, ce sont mes seules machines qui fonctionnent en cluster, et commencer par des Raspberry Pi était une bonne idée et peu coûteuse. La première fois, j'ai essayé d'utiliser Docker Swarm pour exécuter plusieurs conteneurs gérés par le Raspberry Pi central. Malheureusement, les résultats n'étaient pas vraiment bons, car certains éléments de Docker n'étaient pas encore compatibles avec Raspbian 10, et le processeur monocoeur du Pi Zero supportait mal les conteneurs. En fin de compte, j'ai décidé de ne pas utiliser Docker Swarm pour ce projet, mais je voulais tout de même faire du clustering ou de la haute disponibilité.
Après avoir réfléchi et cherché en ligne ce que je pouvais utiliser pour créer un cluster à haute disponibilité, j'ai décidé de créer un cluster de serveurs Web Apache. Je savais déjà que Debian avait quelques solutions pour le faire, mais je ne savais pas lesquelles au juste. Je suis allé sur le wiki Debian et j'ai trouvé un article expliquant un utilitaire appelé Pacemaker et un autre appelé Corosync. Comme beaucoup d'autres programmes sur Linux, la configuration est réalisée en modifiant les fichiers de configuration textuels. En modifiant le fichier de configuration de Corosync, je pouvais choisir le nombre de nœuds que je voulais avoir dans le cluster et quelle serait leur adresse IP. J'ai choisi de regrouper les quatre zéros Pi en un cluster à quatre nœuds. Ils ont déjà tous une adresse IP statique.
Une fois la configuration terminée sur le premier nœud du cluster, je devais faire de même sur tous les nœuds, afin qu'ils soient tous enregistrés dans le cluster et vus par les autres nœuds. Lorsque tous les nœuds furent configurés et enregistrés dans le cluster, il ne restait que la configuration du serveur Web Apache à faire. L'objectif principal était d'attribuer une adresse IP virtuelle pour accéder au serveur Web qui serait accessible quel que soit le nœud sur lequel il s'exécutait. Cela a été fait avec un utilitaire appelé CRM. Je l'ai configuré en fonction de mes paramètres réseau et de mes adresses et, finalement, tout a bien fonctionné. Il ne restait plus qu'à mettre un véritable site Web Apache sur les quatre nœuds, et le cluster était prêt à fonctionner.