Je vais poster quelques vidéos discutant du calcul en cluster avec le Raspberry Pi dans les prochaines semaines, et je vais poster la vidéo + la transcription sur mon blog pour que vous puissiez suivre même si vous n’aimez pas rester assis devant une vidéo 🙂

C’est un module de calcul Raspberry Pi.

Et voici une pile de 7 Raspberry Pi Compute Modules.

C’est la même chose qu’un Raspberry Pi modèle B, mais il laisse tomber tous les ports d’E/S pour obtenir un facteur de forme plus flexible, qui, selon la Fondation Rasbperry Pi, est « adapté aux applications industrielles ». Mais dans mon cas, je suis intéressé à l’utiliser pour construire un cluster de Raspberry Pis.

Je vais explorer le concept de l’informatique en cluster en utilisant des Raspberry Pis, et je suis excité d’être en possession d’une carte de cluster basée sur Raspberry-Pi qui change la donne, le Turing Pi.

J’arriverai bientôt au Turing Pi, mais dans ce premier épisode, je voulais couvrir les raisons pour lesquelles j’aime utiliser les Raspberry Pis pour les clusters.

Mais d’abord, qu’est-ce qu’un cluster ?

Cluster Computing

Beaucoup de gens essaient de résoudre des problèmes complexes avec des ordinateurs. Parfois, ils font des choses comme servir une page web à une énorme quantité de visiteurs. Cela nécessite beaucoup de bande passante, et beaucoup d’ordinateurs  » backend  » pour traiter chacune des millions de demandes. Certaines personnes, comme les météorologues, doivent trouver les résultats de milliards de petits calculs.

Il y a deux façons d’accélérer ces types d’opérations :

  1. En passant à l’échelle verticale, où vous avez un seul serveur, et vous mettez un processeur plus rapide, plus de RAM, et des connexions plus rapides.
  2. Par la mise à l’échelle horizontale, où vous divisez les tâches et utilisez plusieurs ordinateurs.

Au début, des systèmes comme les superordinateurs Cray ont porté la mise à l’échelle verticale à l’extrême. Un ordinateur massif qui a coûté des millions de dollars a été l’ordinateur le plus rapide pendant un certain temps. Mais cette approche a des limites, et le fait d’avoir tout investi dans une seule machine signifie des temps d’arrêt lorsqu’elle a besoin de maintenance, et des mises à niveau limitées (souvent douloureusement coûteuses).

Dans la plupart des cas, il est plus abordable – et parfois, c’est la seule façon possible – d’effectuer une mise à l’échelle horizontale, en utilisant de nombreux ordinateurs pour traiter de gros calculs ou beaucoup de trafic web.

La mise en cluster est devenue plus facile avec l’avènement des clusters de style Beowulf dans les années 90 et des logiciels plus récents comme Kubernetes, qui distribue de manière transparente les applications sur de nombreux ordinateurs, au lieu de placer manuellement les applications sur différents ordinateurs.

Même avec ces logiciels, il y a deux gros problèmes avec la mise à l’échelle horizontale – surtout si vous avez un budget :

  1. Chaque ordinateur coûte un peu d’argent, et nécessite une alimentation individuelle et un réseau. Pour quelques ordinateurs, ce n’est pas un gros problème, mais quand vous commencez à avoir cinq ordinateurs ou plus, il est difficile de garder les choses bien rangées et fraîches.
  2. Gérer les ordinateurs, ou « nœuds » dans le langage du cluster, est facile quand il y en a un ou deux. Mais à l’échelle de cinq ou dix, même faire des choses simples comme redémarrer les serveurs ou lancer un nouveau travail nécessite un logiciel pour tout coordonner.

Le Raspberry Pi Dramble

En 2015, j’ai décidé de mettre en place ma première ‘ronce’. Une ronce est un cluster de serveurs Raspberry Pi.  » Pourquoi cela s’appelle-t-il une ronce ? « , vous demanderez-vous ? Eh bien, parce qu’un amas naturel de framboises que vous pourriez manger s’appelle une ‘ronce’.

J’ai donc commencé à construire une ronce en utilisant un logiciel appelé Ansible pour installer une pile logicielle commune à travers les serveurs pour exécuter Drupal. J’ai configuré Linux, Apache, MySQL et PHP, ce qui est communément appelé la pile ‘LAMP’.

Puisque ma bramble faisait tourner Drupal, j’ai inventé le portmanteau ‘dramble’, et c’est ainsi qu’est né le Raspberry Pi Dramble.

La première version du cluster avait six nœuds, et j’avais un tas de câbles micro USB branchés sur un adaptateur d’alimentation USB, plus un tas de câbles Ethernet branchés sur un commutateur Ethernet à 8 ports.

Lorsque le Raspberry Pi modèle 3 est sorti, je l’ai rogné à 5 nœuds.

Puis, lorsque le Raspberry Pi Zero a été introduit, qui a la taille d’un bâton de bubble gum, j’en ai acheté cinq et j’ai fait un minuscule cluster en utilisant des adaptateurs WiFi USB, mais j’ai réalisé rapidement que l’ancien processeur du Zero était extrêmement sous-puissant, et j’ai abandonné ce cluster.

En 2017, j’ai décidé de commencer à utiliser Kubernetes pour gérer Drupal et la pile LAMP, bien que j’utilise toujours Ansible pour configurer les Pis individuels et obtenir Kubernetes installé sur eux.

Et le Dramble d’aujourd’hui, qui est composé de quatre cartes Raspberry Pi modèle 4, utilise la carte officielle Power-over-Ethernet (PoE), ce qui m’a permis de laisser tomber l’enchevêtrement de câbles d’alimentation USB, mais nécessite un commutateur PoE plus coûteux.

Le Pi Dramble n’est pas tout à fait sérieux, cependant. Je me suis amusé avec lui, y compris en faisant un hommage à un vieux film que j’ai apprécié :

Pendant toute cette expérience, j’ai documenté chaque aspect de la construction, y compris tous les playbooks Ansible, en tant que projet open source qui est lié à pidramble.com, et beaucoup d’autres ont suivi ces plans et construit le Pi Dramble sur leur propre !

Pourquoi Raspberry Pi ?

Tout cela pour dire que j’ai passé beaucoup de temps à gérer un cluster de Raspberry Pis, et la première question que l’on me pose généralement est « pourquoi avez-vous choisi des Raspberry Pis pour votre cluster ? »

C’est une très bonne question.

Un Raspberry Pi individuel n’est pas aussi rapide que la plupart des ordinateurs modernes. Et il a une mémoire vive limitée (même le dernier Pi modèle 4 a, au maximum, 4 Go de mémoire vive). Et il n’est pas non plus génial pour un accès rapide ou fiable aux disques.

Il est légèrement plus rentable et généralement plus économe en énergie de construire ou d’acheter une petite machine NUC (« Next Unit of Computing ») qui a plus de performances brutes de CPU, plus de RAM, un SSD rapide et plus de capacités d’expansion.

Mais est-ce que construire quelques VM pour simuler un cluster sur un NUC est amusant ?

Je dirais, « Non ». Eh bien, pas autant que de construire un cluster de Raspberry Pis !

Et gérer des serveurs  » bare metal  » au lieu de machines virtuelles nécessite également plus de discipline pour le provisionnement, la mise en réseau et l’orchestration. Ces trois compétences sont très utiles dans de nombreux emplois informatiques modernes !

En outre, alors que vous pouvez vouloir optimiser les performances pures, il y a des moments, comme lors de la construction de clusters Kubernetes, où vous voulez optimiser le nombre de cœurs de processeur. Si vous vouliez construire un seul ordinateur avec 32 cœurs de CPU, vous pourriez envisager le ThreadRipper 3970x d’AMD, qui possède 32 cœurs. Le problème est que le processeur coûte près de 2 000 $, et ce n’est que le processeur – le reste des composants de l’ordinateur vous ferait dépasser les 3 000 $ au total pour cette installation.

Pour le Raspberry Pi, chaque carte de calcul a un processeur à 4 cœurs, et en rassemblant 7 Pis, vous obtenez 28 cœurs. Presque le même nombre de cœurs, mais un coût total inférieur à 300 $. Même avec le coût supplémentaire d’un Turing Pi et d’une alimentation électrique, c’est le même nombre de cœurs de CPU pour 1/4 du coût !

Oui, je sais que 1 cœur de ThreadRipper ≠ 1 cœur de Pi CM ; mais dans de nombreuses applications K8s, un cœur est un cœur, et plus on est de fous, plus on rit. Toutes les opérations ne sont pas liées au CPU et bénéficieraient d’un débit brut 4 à 8 fois plus rapide, ou des nombreuses autres petites commodités que le ThreadRipper offre (comme plus de cache).

Enfin, l’une des leçons les plus importantes que j’ai apprises en travaillant avec des Arduinos et des Raspberry Pis est la suivante : travailler avec des contraintes de ressources comme une RAM limitée ou des IO lentes met en évidence les inefficacités de votre code, d’une manière que vous ne remarqueriez jamais si vous construisez et travaillez toujours sur le dernier Core i9 ou le dernier CPU ThreadRipper avec des gobs de RAM et des 100s de milliers d’IOPS !

Si vous n’arrivez pas à faire fonctionner quelque chose correctement sur un Raspberry Pi, considérez ceci : de nombreux smartphones et ordinateurs bas de gamme ont des contraintes similaires, et les personnes utilisant ces appareils auraient le même type d’expérience.

En outre, même sur des instances de cloud computing rapides, vous rencontrerez des goulots d’étranglement réseau et IO de temps en temps, et si votre application échoue dans ces situations, vous pourriez avoir un monde de douleur. Les faire fonctionner sur un Raspberry Pi peut vous aider à identifier ces problèmes rapidement.

Pourquoi Turing Pi?

Alors, pour en revenir au Turing Pi : qu’est-ce qui le rend meilleur qu’un cluster de Raspberry Pis standard, comme le Pi Dramble?

Eh bien, abonnez-vous à ma chaîne YouTube – j’explorerai ce qui fait fonctionner le Turing Pi et comment configurer un nouveau cluster dans ma prochaine vidéo ! Si vous avez aimé ce contenu et que vous voulez en voir plus, envisagez de me soutenir sur GitHub ou Patreon.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.