Azure SQL Edge – Déploiement sur Raspberry Pi3

Il y a quelques semaines j’ai au le plaisir d’animer un Webinar (de 4 heures  …) sur la modernisation de votre plateforme SQL Server. Tout le début de session était consacré à l’archéologie informatique et le retour sur les « vieilles » versions SQL Server. La genèse, les années 2000 et les versions actuelles, avec les nouvelles fonctionnalités apparues au fur et à mesure de l’évolution du produit.

Ensuite, il était fait la part belle au choix de la plateforme : Windows, Linux, Docker, Kubernetes … et bien sur toutes els possibilités offertes par Azure, autant en IaaS que PaaS.

Oui SQL Server est … partout. Ou presque ! On était sur plateforme x86, x64 et ia64 il y a presque 20 ans déjà. Mais pas de ARM ! Non, effectivement, il n’est pas possible à l’heure actuelle d’installer SQL Server pour linux sur un Raspberry (j’ai essayé … on n’est pas très loin, mais non).

Je devrais plutôt dire qu’il n’était pas possible d’installer SQL Server sur plateforme ARM. Car la sortie de l’édition Edge, encore en preview au moment où ce billet est écrit, de SQL Server va changer la donne.

Azure SQL Edge, what ?

Azure SQL Edge est une édition de SQL Server, à l’emprunte système extrêmement faible, pouvant s’exécuter sur plateforme ARM et Intel sur du matériel de type Raspberry ou équivalent (pas d’Arduino) en tant que conteneur. Elle offre des fonctionnalités son présentes dans les autres éditions SQL Server telles que le stockage et le traitement de données de type Time Series comme InfluxDB. Imaginez tout simplement les capteurs d’une chaine de production stockant toutes leurs mesures sur Azure SQL Edge. Vous pouvez requêter cette base de données en T-SQL ou bien produire des rapports de type PowerBI par exemple. Mais plus encore, SQL Edge vous permettra d’uploader vos données vers un Data Center Azure afin, par exemple, d’utiliser les services de Machine Learning et l’IA pour faire de la détection prévisionnelle de panne ou bien surveiller les métriques et être alertés en cas de déviance ou d’anomalies sur les données collectées.

Mais cela reste avant tout un « vrai » SQL Server avec tout ce que vous connaissez déjà : performance, sécurité, simplicité d’utilisation …

Ce billet se concentre sur le déploiement, on ne peut pas vraiment parer l’installation, de Azure SQL Edge. D’autres billets vont suivre pour les cas d’usage …

Installation de l’OS sur le Raspberry Pi

Mon bureau ressemble un peu à une caverne d’Alibaba, peuplé de construction en Lego, de drones, modèles réduits de voitures mythiques, vieux (et moins vieux) appareils photos, de voitures pilotées via Arduino (Uno et R3), de Raspberry Pi (2, 3 et 4) et d’autres gadgets aussi inutiles qu’indispensables. Facile donc de piocher dans cette réserve un bon vieux Raspberry Pi 3 B+ pourvu de 4 cores 1.4 Ghz et 1 GB de RAM. Je ne vous cache pas que 2GB de mémoire est quand même plus confortable. Le point crucial ici concerne le processeur qui doit nécessairement être en 64bits.

Je ne suis pas là pour vous faire un tutorial d’installation de Ubuntu sur Raspberry, mais sachez que c’est extrêmement simple.

Téléchargez l’image de Ubuntu 18.04 en 64Bits, ce point est crucial, le processeur et l’OS doivent être en 64Bits. J’ai testé avec une 20.04 mais tous les packages ne semblent pas disponibles chez Microsoft au moment où ce billet a été écrit. A l’aide de Rufus ou Win32DiskImager, rendez bootable une carte SD de 16GB minimum et … c’est tout !

Bootez le Raspberry PI 3 et connectez-vous (par défaut le user et le password sont ubuntu). Vous devez changer le mot de posse lors de votre première connexion. Attention, vous êtes en qwerty ….

Prenez le temps de renommer votre OS … Juste afin d’être plus propre.

sudo hostnamectl set-hostname UbuntuRPi3

sudo reboot

Cool, notre Raspberry est prêt à l’emploi.

Création de l’IoT Hub sur Azure

Il ne vous aura pas échappé que dans Azure SQL Edge, il y a … Azure ! On va donc créer des ressources au travers du portail.

Afin de pouvoir gérer les ressources de cette démo de manière indépendante, un groupe de ressource spécifique est créé.

Ensuite, il faut créer une ressource de type IoT Hub qui va permettre d’enrôler le Raspberry.

Vous pouvez accepter tous les paramètres par défaut des écrans suivants, du moins pour ce qui concerne cette prise en main.

Quelques minutes plus tard, votre Hub est prêt à l’emploi.

Il faut ensuite enregistrer le device, cliquer sur l’item IoT Edge et cliquer ensuite sur le bouton d’ajout :

Nommez votre device et enregistrez :

J’ai opé pour le même nom que celui donné au niveau HostName sur la configuration du Raspberry, mais je pense que ces valeurs peuvent différer sans pour autant poser de problème. Mais je trouve cela bien plus clair.

Afin d’installer l’IoT Edge runtime sur le Raspberry, nous devons récupérer la chaine de connexion, cliquer sur le nom du device que vous venez de créer :

Par défaut, pour éviter tout problème de sécurité, les chaines sont masquées à l’affichage, d’où la présence de pictogrammes pour visualiser le texte masqué.
Conservez la chaine de connexion, elle va servir plus tard….

Installation du runtime IoT Edge

On peut à présent retourner sur le Raspberry afin d’y installer le package nécessaire à l’exécution du runtime IoT Edge.

Quelques lignes de code afin de récupérer les informations du repository Microsoft et d’ajouter les clés publiques.

curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list

sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/

curl https://packages.microsoft.com/keys/microsoft.asc | gpg –dearmor > microsoft.gpg

sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/

sudo apt-get update

Si vous suivez ce Blog, ou bien si vous avez eu l’occasion de me suivre durant une session lors de SQL Saturday, ou bien lors de Webinar, il ne vous aura pas échappé que je fais assez souvent référence aux conteneurs, à Docker, à Kubernetes. En effet, la containerisation semble être la virtualisation 2.0. Et SQL Server s’accommode parfaitement de ce type de plateforme. SQL Server est supporté dans un conteneur depuis la version 2017 et SQL Server 2019 apporte le support de Kubernetes.

Azure SQL Edge va s’exécuter dans un conteneur, mais pour le coup il s’agit du moteur Moby et non pas Docker … Le nom vous est familier ? Possible …. Une VM Moby se cache derrière Docker Desktop.

sudo apt-get install –y moby-engine moby-cli

La proximité avec Docker est flagrante : les lignes de commande sont absolument similaires.

Une fois installé il faut alors installer IoT Edge qui va permettre au Raspberry de se connecter à Azure.

sudo apt-get install -y iotedge

Un message explicite nous invite à modifier le fichier de configuration afin d’y spécifier note chaine de connexion obtenue dans le portail Azure.

On édite le fichier et on localise la section adéquate :

sudo nano /etc/iotedge/config.yaml

Et on redémarre IoTEdge.

sudo systemctl restart iotedge

Attention à votre connexion internet qui doit autoriser l’accès à des ports spécifiques (5671 et 8883) vers Azure. Pour ma part, je filtre les connexions sortantes, et cela m’a occasionné quelques erreurs.

sudo iotedge check

Une fois utilisé un autre routeur sur lequel je filtre beaucoup moins, les problèmes de connexion ont disparus.

IoT Edge étant démarré, deux images sont présentes sur le Runtime Moby et l’IoT Edge Agent est bien démarré

On va pouvoir procéder au déploiement de SQL Server.

Déploiement de Azure SQL Edge

Il est à présent possible de télécharger l’image de SQL Server sur notre Raspberry. L’intérêt des solution IoT Azure est de pouvoir gérer le parc de devices, qui peuvent être très nombreux, depuis la console Azure. Le déploiement de SQL Server va se faire via le portail.

Dans le Marketplace, recherchez « Azure SQL Edge » et cliquer sur Créer.

Si tout s’est correctement déroulé depuis le début, vous devriez pouvoir rechercher votre Raspberry Pi en cliquant sur le bouton adéquat.

SQL Server reste SQL Server, y compris dans un conteneur. Or, lors de la création d’un conteneur à partir d’une image SQL Server, vous devez spécifier le mot de passe pour le compte SA au travers d’une variable d’environnement. En cliquant sur AzureSQLDatabaseEdge, une page de configuration spécifique vous est présentée afin de positionner vos variables d’environnement.

Vous pouvez valider et lancer le déploiement. Il n’y a plus qu’à patienter…. En fonction du débit de votre ligne internet.

Yesssssss, SQL Server semble fonctionner.

Et l’on peut confirmer cela au travers des images installées et des containers en cours d’exécution

Tout semble en ordre. Le port 1433 semble bien être redirigé vers le conteneur … Reste donc à tester via SSMS !

Yeeeaaaahhhh, tout fonctionne parfaitement. Azure SQL Edge est déployé sur un Raspberry Pi 3.

Il n’y a plus qu’à jouer avec cette nouvelle édition de SQL Server ….

Happy SQL Server on ARM !

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM/MCSM SQL Server
Cet article, publié dans Azure, Containers, Docker, IoT, Linux, SQL Server, est tagué . Ajoutez ce permalien à vos favoris.

Un commentaire pour Azure SQL Edge – Déploiement sur Raspberry Pi3

  1. Ping : Azure SQL Edge – Synchronisation des données | Christophe LAPORTE – Consultant SQL Server

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s