Carte PINE A64, Node.js, Balena, PM2 et ResinOS (Partie 2) …

Image for post
Image for post

Je pars ici d’un nouveau design qui va exploiter à la fois des cartes PINE A64, Raspberry Pi 3 et OrangePi Zero …

Image for post
Image for post

avec ces descriptions techniques :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Comme d’habitude, j’utilise Etcher pour flasher les images d’OS sur ces cartes :

Image for post
Image for post
Image for post
Image for post

Je vais utiliser Debian Stretch comme OS pour ces cartes via Armbian :

Image for post
Image for post

et DietPi :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Pour cela il faut commencer après avoir effectuer le flash des images sur les cartes à scanner son réseau pour retrouver les adresses IP fournies via le DHCP de ma passerelle :

Image for post
Image for post

et je peux voir les caractéristiques de ces dernières :

Image for post
Image for post

Jen profite pour y installer de nouveau un moteur Docker CE :

Image for post
Image for post

et je peux initier un cluster via Docker Swarm Mode très rapidement :

Image for post
Image for post
Image for post
Image for post

C’est la carte Orange Pi Zero qui sert de noeud maître ici :

Image for post
Image for post

avec un overlay local :

Image for post
Image for post

Je peux tagger ces noeuds de ce cluster pour les différencier en fonction de leur architecture matérielle respective :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Je peux alors tester l’installation de Portainer pour visualiser graphiquement les caractéristiques du cluster :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

J’en profite alors pour modifier légèrement le design précédent pour substituer une carte PINE A64 par une carte OrangePi Zero :

Image for post
Image for post

Et je peux recréer un cluster Docker Swarm Mode où la carte RPi3 sert de noeud maître :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Là encore je différencie les noeuds du cluster en fonction de leurs caractéristiques matérielles (ARMv7 32 Bits ou ARMv8 64 Bits) :

Image for post
Image for post
Image for post
Image for post

avec comme d’habitude le test du démonstrateur FranceConnect Particulier en ARMv7 :

Image for post
Image for post
Image for post
Image for post

ou en ARMv8 :

Image for post
Image for post
Image for post
Image for post

Je peux utiliser les binaires multi-architectures de Traefik sous la forme d’images Docker pour obtenir un endpoint global pour mon cluster :

Image for post
Image for post
Image for post
Image for post

Lancement de Traefik dans le cluster :

Image for post
Image for post

et lancement des démonstrateurs FranceConnect Particulier :

Image for post
Image for post

Ils apparaissent dans le tableau de bord de Traefik avec deux endpoints specifiques aux architectures ARMv7 et ARMv8 :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Et pour permettre l’accès externe à ces cartes qui tournent localement, on peut reprendre encore une fois Ngrok :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

ou bien de la stack OpenFaaS pour y tester des fonctions à la demande en mode Serverless :

Image for post
Image for post
Image for post
Image for post

avec sa ligne de commande :

Image for post
Image for post

ou bien graphiquement :

Image for post
Image for post
Image for post
Image for post

Et si je souhaite une alternative à l’utilisation du moteur Docker, encore une fois PM2 de Keymetrics peut oeuvrer avec ces cartes :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

et PM2 Plus offre un tableau de bord :

Image for post
Image for post

On peut imiter un mode de déploiement à la “Capistrano” pour les Rubyistes avec un fichier de configuration qui va exploiter des connexions SSH vers ces cartes :

Image for post
Image for post
Image for post
Image for post

Ici je déploie le démonstrateur FC Agent directement depuis les sources sur Github vers ces cartes via PM2 :

Image for post
Image for post

et le mode cluster de PM2 est actif sur celles-çi :

Image for post
Image for post
Image for post
Image for post

avec les métriques dans une logique d’APM avec PM2 Plus et son tableau de bord :

Image for post
Image for post
Image for post
Image for post

ou plus classiquement vers l’ancienne formule offerte par Keymetrics :

Image for post
Image for post
Image for post
Image for post

L’utilisation d’un utilitaire dédié au Reverse Proxy via le registre NPM me permet d’obtenir un seul endpoint local pointant sur les différents endpoints locaux fournis par PM2 pour accéder au démonstrateur FC Agent :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Finalement avec toutes ces opérations, la consommation CPU/mémoire est restée relativement correcte …

Image for post
Image for post

Pour boucler avec l’article précédent, on pourrait retrouver ici la logique du Edge Computing :

Image for post
Image for post

D’ailleurs je teste ici le service Azure IoT Hub de Microsoft :

Image for post
Image for post

Je peux installer le runtime d’Azure IoT Edge sur la carte RPi3 qui va utiliser encore une fois le moteur Docker CE :

Image for post
Image for post
Image for post
Image for post

On peut prendre en compte le fait que ce noeud Edge pourrait servir à analyser localement les données avec Azure Stream Analytics on IoT Edge (via un container Docker utilisant des briques de Machine Learning) pour n’envoyer que certaines données utiles à Azure IoT Hub (pour le moment ceci est limité aux périphériques ARMv7 32 Bits : https://hub.docker.com/r/microsoft/azureiotedge-azure-stream-analytics/ ) :

Image for post
Image for post
Image for post
Image for post

et je peux connecter toutes ces cartes à Azure IoT Hub :

Image for post
Image for post

avec les première remontées :

Image for post
Image for post

En utilisant sur chacune des cartes le SDK Node.js d’Azure IoT :

Image for post
Image for post
Image for post
Image for post

et ces exemples : ici remontées de données de capteurs simulés sur ces cartes avec le protocole MQTT

Image for post
Image for post
Image for post
Image for post

en y insérant la chaine de connexion pour chaques cartes :

Image for post
Image for post

et les données sont remontées :

Image for post
Image for post

attention au fait que pour le plan gratuit on est limité à 8000 messages par jour …

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Enfin pour finir, je peux aussi utiliser le service cloud de monitoring dédié à l’IoT fourni par la société Datadog en compilant sur ces cartes les sources de son agent dedié :

Image for post
Image for post

et ces graphes dans des tableaux de bord :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Ces cartes pourraient servir à la constitution de micro datacenters de proximité comme l’explique la société Picocluster et ses différents designs :

Image for post
Image for post
Image for post
Image for post

Un domaine à suivre puisque l’Edge computing constitue un nouveau terrain de bataille des géants du Cloud computing ! …

Image for post
Image for post

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store