Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sigma Lambda Pi - APIHour#46

147 views

Published on

Et si on parlait un peu d’ingénierie et de conception hardware! Comment avons nous créé une appliance physique 2U offrant la capacité de Function as a Service et reposant sur un cluster de Raspberry Pi 4B 4Go? 3 mois de fun entre les impressions 3D, l’électronique, le réseau, alpine, du C et même du Go ; un projet complet.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Sigma Lambda Pi - APIHour#46

  1. 1. 1 26/02/2020 APIHour #46 ΣΛΠ - Sigma Lambda Pi
  2. 2. 2 Florian Forestier Développeur Alternant @ be-ys Florian.Forestier@almerys.com / @Artheriom Christophe Prugnaud Architecte d’Entreprise @ be-ys / LavaJUG Christophe.Prugnaud@almerys.com / @khrys63
  3. 3. 3 ΣΛΠ - Kesako?1
  4. 4. 4 ΣΛΠ - Sigma Lambda Pi Une idée : Faire du Function as a Service sur un cluster de Raspberry Pi 4B 4Go dont les nœuds s’allument en fonction de la charge, le tout racké dans le datacenter. Beaucoup d’ingénierie : Création d’une appliance physique 2U avec une alimentation 220V et une seule carte réseau. Plug&play. Du fun …
  5. 5. 5 Pourquoi ce nom ?  Sigma : Somme d’une suite de termes  Lambda : Nom des fonctions anonymes en programmation fonctionnelle  Pi : Construit sur du Raspberry Pi. Le nom résume donc le clustering de Raspberry Pi pour faire du FaaS
  6. 6. 6 Objectifs  Function as a Service…  … En GreenIT  Consommation énergétique  Réutilisation de matériel  Maintenance possible pièce par pièce Innovations  Industrialisation du processus  Matériel simple et robuste  Contenu en rack serveur 2U  Green IT  On-demand au niveau physique  Démarrage et extinction des nœuds selon la charge Organisation  9 personnes  250 heures sur 3 mois (~2h30 par semaine)  Un dossier CIR
  7. 7. 7 Challenges  Hardware  Schéma électrique, plan de câblage  Choix de matériel & intégration  Conception des pièces 3D manquantes  Montage du cluster  Une seule patte réseau  Pas de micro SD sur le cluster  Entre dans 2U  Software  Boot on LAN  Gestion de l’affichage des informations (LCD)  Mesure de la consommation électrique en temps réel  Les deux  Gestion de la ventilation  Allumage/extinction des Raspberry selon la charge
  8. 8. 8 Ce qui existe déjà Cluster 4 Pi homemade Carte contrôleur 16 Pi Rack 750 Pi Rack oracle 1060 Pi  Mais rien avec un objectif autre que de l’avoir construit 
  9. 9. 9 Spécifications techniques2
  10. 10. 10 Neutral Phase Ground DC+V DC GND Network USB Signal
  11. 11. 11 Composition  Physique  Rack 2U (19 pouces) pour serveurs  18 Raspberry Pi 4 (Model B, 4Go de RAM)  4 x 250Go de SSD en serveur NAS  5 ventilateurs DELL  1 Arduino Uno  2 afficheurs LCD  1 switch 24 ports Gb  50 m de fils électrique  1 kg de plastique PLA  Coût  ~ 2300 €
  12. 12. 12 En pratique  Compute  64 cœurs @ 1,5GHz (ARMv8)  64 Go RAM (SDRAM)  518 gFLOPS (pour rappel une GeForce 2080 fournit 314gFLOPS)  Storage  1 To de SSD en partage  Réseau  1 Gbps (externe et interne)  Électricité  Consommation autour des 100W (selon l’état des nœuds et la charge)
  13. 13. 13 Construction3
  14. 14. 14 Nettoyage & conception du châssis 3.1
  15. 15. 15 Récupération du châssis Rack 2U 19", ancien serveur mail décommissionné
  16. 16. 16 Vidage du rack et réception des Raspberry & des dissipateurs de cartes graphiques
  17. 17. 17 Impression 3D des supports des Raspberry Merci à Christophe et Stéphane pour le partage de leur imprimante. <3
  18. 18. 18 Vue du prototype en 3D – Modélisation avant impression ~2U
  19. 19. 19 Vue du prototype en 3D – Modélisation avant impression
  20. 20. 20 Vue du prototype en 3D – Modélisation avant impression
  21. 21. 21 Vue du prototype en 3D – Modélisation avant impression
  22. 22. 22 Vue du prototype en 3D – Modélisation avant impression
  23. 23. 23 Aperçu des impressions réalisées
  24. 24. 24 Mise en place des 16 Raspberry Pi terminée Fin de l’étape 1 de conception.
  25. 25. 25 Alimentation électrique3.2
  26. 26. 26 Vérification des deux alimentations à découpage et conception des USB-C 1 alimentation 5V pour les Raspberry et le NAS, 1 alimentation 12V pour le reste
  27. 27. 27 Essai de l’alimentation, ça commence à faire pas mal de câbles, tout ça Au moins 8 doigts ont été blessés lors de la réalisation des câbles
  28. 28. 28 Asservissement ventilateur3.3
  29. 29. 29 Essai d’asservissement sur les ventilateurs Contrôle de la vitesse des ventilateurs pour maintenir une température constante
  30. 30. 30 Asservissement complet Carte de contrôle Arduino + affichage température
  31. 31. 31 Quelques fils et un peu de C On map la température entre 20° et 70°pour déterminer la vitesse de rotation https://github.com/be-ys/FanControler
  32. 32. 32 Mesure de la consommation électrique 3.4
  33. 33. 33 On a regroupé le 220 V au fond de la boite avec une distribution en Wago. La Terre sur le boitier ; la sécurité est l’affaire de tous.
  34. 34. 34 On trouve un PZEM-004T 100A pour essayer de répondre à notre problématique Permet sur le papier de mesurer le voltage, courant, et puissance AC.
  35. 35. 35 Et cela fonctionne sur Arduino mais on veut le brancher à un Raspberry Pi Il n’existe pas de lib pour Raspberry Pi, on en écrit donc une en Go https://github.com/be-ys/pzem-004t-v3
  36. 36. 36 Mise en réseau3.5
  37. 37. 37 Netgear 24 ports 1Gbps Et vue du début de la mise en réseau
  38. 38. 38 Mise en réseau progressive, et vue de la sortie « publique » Une carte Raspberry fait la jonction réseau public <-> privé via une carte réseau USB
  39. 39. 39 Rendu final du réseau… … Même si on a depuis remplacé les câbles.
  40. 40. 40 Création 3D du socle du Raspberry maître et de la sortie réseau publique Une pièce pour les unifier toutes, et dans le rack les faire tenir
  41. 41. 41 NAS3.6
  42. 42. 42 Une grosse clef USB… 4 x 250Go de SSD
  43. 43. 43 Mais avant de mettre en place, on doit découper les restes du vieux rack À la base, on devait conserver intacte cette partie. Adaptation aux changements …
  44. 44. 44 Vue du NAS intégré dans le châssis. Le HUB USB n’est pas fixé au châssis, car il est compressé contre la plaque.
  45. 45. 45 Vue du NAS une fois branché Et la carte qui le contrôle en cours de liaison
  46. 46. 46 Vue finale3.7
  47. 47. 47 Vue complète de l’appliance
  48. 48. 48 Vue complète du cluster (fermé)
  49. 49. 49 Vue complète du cluster (fermé)
  50. 50. 50 Et maintenant qu’on a la machine? 4
  51. 51. 51 Flash des Raspberry Pi  De base, le Pi 4 ne supporte pas le boot réseau  Utilisation d’un firmware customisé pour permettre le boot par réseau (PXE) Création d’un OS sur mesure  Les fonctionnalités d’une Linux Alpine modifiée pour la légèreté  Le kernel d’une Raspbian pour le support intégral des Raspberry Pi Genepi – une distribution musclée. https://github.com/be-ys/Genepi
  52. 52. 52 Et ça marche?5
  53. 53. 53 L’heure du bilan pour l’appliance  Hardware  Schéma électrique, plan de câblage  Choix de matériel & intégration  Conception des pièces 3D manquantes  Montage du cluster  Une seule patte réseau  Pas de micro SD sur le cluster il reste le router  Entre dans 2U  Software  Boot on LAN  Gestion de l’affichage des informations (LCD)  Mesure de la consommation électrique en temps réel  Les deux  Gestion de la ventilation  Allumage/extinction des Raspberry selon la charge comment faire?
  54. 54. 54 Et le FAAS ? Oui et non ! Installation de Docker et Lightweight Kubernetes - K3S  Support pour OpenFaaS, qui permet de répartir le calcul sur tous les nœuds GreenIT : Allumage et extinction des nœuds selon la charge  Définir quelle magie noire utiliser On reviendra vous montrer tout ça à un API Hour …
  55. 55. 55 Merci pour votre attention ! https://github.com/be-ys

×