Mit Azure IoT Edge für Linux unter Windows (GA seit dem 23. Juni 2021), welches kurz als Eflow bezeichnet wird, liefert Microsoft eine Möglichkeit Windows-Geräte mit Azure IoT Edge auszustatten. Damit wird es nun möglich Linux-basierte Container bzw. IoT Edge Module, welche im Folgenden als Workloads bezeichnet werden, über die Funktionen des IoT Hubs und der Azure IoT Edge Runtime auf Windows Geräte auszurollen. In diesem Artikel erfahren Sie mehr darüber, wie Sie diese Lösung für ihre industriellen IoT Szenarien einsetzen können, welche Vorteile sie mit sich bringt aber auch mit welchen Herausforderungen gerechnet werden muss.
Windows Geräte als Edge Gateway
Der Einsatz von Linux-basierten Workloads auf Windows könnte insbesondere für die Umsetzung von IoT Edge Szenarien im mittelständischen Maschinenbau / der mittelständischen Fertigung interessant werden, da diese oftmals ohnehin schon auf Windows-basierte Systeme setzen. Damit kann die Anschaffung von weiterer Linux-basierter Hardware vermieden werden. Die Hürden für einen Einstieg zur Umsetzung erster industrieller IoT Szenarien werden damit reduziert.
Des Weiteren wird in der Regel die Administration von Geräten im Shopfloor auf den Support eines Systems begrenzt. Damit ist oftmals nur das Knowhow zur Wartung von beispielsweise Windows vorhanden. Mit Azure IoT Edge für Linux unter Windows wird versucht die volle Power von zahlreichen und leichtgewichtigen Linux-Workloads auf Windows-Geräten nutzbar zu machen, während aus Administrationssicht nur das Management eines Windows-Systems mit den für Windowsadministratoren bekannten Werkzeugen notwendig ist.
Azure IoT Edge System Architektur
Um Azure IoT Edge auf einem Windows-System auszuführen wird auf dem Gerät eine Linux VM basierend auf der Distribution CBL Mariner installiert. Diese wird auf Hyper-V ausgeführt und bringt die notwendigen Komponenten mit, um Azure IoT Edge Module auszuführen. Zu den benötigten Komponenten gehören Azure IoT Edge und die Moby Engine zur Containerverwaltung. Die Linux VM ist dabei komplett verwaltet von Windows. Das heißt alle Updates und Patches können direkt über Windows Update mittels eines A/B Updates (Ersetzen des VM Images) eingespielt werden, wodurch man sich nicht um die Aktualisierung der VM kümmern muss.
Dieses Vorgehen führt allerdings dazu, dass man keinerlei Kontrolle über die Linux VM hat. Sollte man beispielsweise den Bedarf haben native Applikationen auf der Linux VM zu installieren, um ein Host Monitoring von CPU und RAM zu ermöglichen, ist das nicht möglich, da das System über keinerlei Paketmanager verfügt und gleichzeitig die Applikationsverzeichnisse nur einen lesenden Zugriff ermöglichen.
Zusätzliche Software muss also immer auf dem Windows Host installiert werden. Um von dort aus mit der Linux VM zu kommunizieren kann man den von Eflow bereitgestellten PowerShell Befehl Invoke-EflowVmCommand
verwenden, um auf der Linux VM einen Bash-Befehl auszuführen. Nicht gerade eine elegante aber wenigstens funktionale Lösung.
Über eine Interop Schnittstelle wird zudem die Kommunikation zwischen dem Windows System und den Azure IoT Edge Modulen ermöglicht. Dazu ist es allerdings erforderlich am IoT Hub zusätzlich zum Edge Gerät ein sogenanntes Blattgerät anzulegen, also ein dem Edge Gerät untergeordnetes Gerät. Dies führt zu einem erhöhten Administrationsaufwand, da ein einzelnes physisches Gerät als zwei Geräte am IoT-Hub verwaltet werden muss. Auf GitHub sind konkrete Beispiele zu finden, wie die Interop Schnittstelle zu nutzen ist.
Die Gesamtarchitektur von Eflow ist in Abbildung 1 dargestellt.
Abbildung 1: Azure IoT Edge für Linux unter Windows; Quelle: GitHub
Aufgrund der Installation in einer separaten VM stellt sich zudem die Frage, wie man sich mit Schnittstellen / Web UI’s verbinden kann, welche über Module bereitgestellt werden. Wenn ein Port aus einem Workload auf den Host gebunden wird, liegt das Portbinding erst mal in der Linux VM. Das heißt eine Verbindung über localhost:<port>
oder <hostname>:<port>
von dem Windows-Gerät aus ist erst mal nicht möglich. Um auf solche Schnittstellen zuzugreifen verfolgt Eflow ein bestimmtes Muster. Der Hostname der Linux VM entspricht dabei dem Hostnamen des Windows Host mit „-Eflow“-Suffix. Also <WindowsHostName>-Eflow
. Um außerdem einen Zugriff aus dem lokalen Netzwerk zu ermöglichen ist es empfehlenswert in Hyper-V einen externen Adapter anstatt eines internen Adapters zu verwenden. Damit treten im lokalen Netzwerk der Windows Host und die Linux VM allerdings auch als getrennte Geräte auf.
Installation von Azure IoT Edge für Linux unter Windows
Um Eflow auf Ihren Windows-basierten Geräten zu installieren kann prinzipiell auf zwei Varianten zurückgegriffen werden:
-
- Installation über MSI-Installer und PowerShell-Befehle
- Installation über das Windows Admin Center
Dabei sind allerdings folgende Voraussetzungen zu beachten:
-
- Windows 10 Version 1809 oder neuer; Build 17763 oder neuer
- Windows Professional, Enterprise oder Server
- Mindestens 1 GB freier Arbeitsspeicher
- Mindestens 10 GB freier Festplattenspeicher
- Aktiviertes Hyper-V
Installation über MSI-Installer und PowerShell-Befehlen
Den aktuellen Installer können Sie unter https://aka.ms/AzEflowMSI herunterladen. Nach der Installation stehen zahlreiche neue PowerShell-Befehle zur Verfügung.
Mit dem Befehl Deploy-Eflow
wird eine verwaltete Linux VM zur Verfügung gestellt, die standardmäßig mit 1 GB RAM, 1 CPU und 10 GB Festplattenspeicher ausgestattet ist. Mit dem Befehl Provision-EflowVm
wird das Gerät am IoT-Hub provisioniert. Detaillierte Dokumentationen zur Verwendung der einzelnen Befehle und zur Installation von Eflow mittels PowerShell sind hier und hier zu finden. An dieser Stelle wird explizit auf die GitHub Dokumentationen verwiesen, da diese am aktuellsten zu sein scheinen und es bei der Anwendung der offiziellen Dokumentation auf docs.microsoft.com immer wieder zu Unstimmigkeiten kam.
Installation über Windows Admin Center
Durch das Windows Admin Center besteht die Möglichkeit auf einfache und für Administratoren bekannte Art und Weise Azure IoT Edge für Linux unter Windows lokal oder auf einem remote zugänglichen Windows-Gerät zu installieren. Dazu ist eine zusätzliche Erweiterung notwendig, welche sich zum Zeitpunkt dieses Artikels noch in Preview befindet. Die detaillierte Dokumentation zur Installation mit dem Admin Center ist in GitHub zu finden.
Kompatibilität mit AIT Smart Edge
Die Kombination von Azure IoT Edge für Linux auf Windows und AIT Smart Edge ermöglicht nun auch das einfache Verwalten von Workloads für Windows Edge Devices im Shopfloor. Dazu steht eine intuitive Web Oberfläche, das AIT Smart Edge Control Center, zur Verfügung. Somit kann der Betrieb von unterschiedlichen IoT Edge Szenarien erleichtert werden. Auf der Webseite https://smartedge.aitgmbh.de können Sie mehr über unsere IIoT- Lösung erfahren.
Fazit
Auch wenn die Architektur über die Linux VM Schwächen im Hinblick auf die Installation weiterer Software und der Netzwerkverwaltung aufweist, entsteht mit der Nutzung von Eflow ein starker Mehrwert durch den Support von Windows-Geräten. Die Nutzung von bestehenden Windows-Systemen im Shopfloor erleichtert den Einstieg in IoT Szenarien. Zudem muss kein zusätzliches Knowhow für die Administration von Linux-Systemen aufgebaut werden.
Haben Sie Ideen für IoT Lösungen auf der Edge oder in der Cloud? Wir unterstützen Sie gerne bei der Planung und der Umsetzung Ihrer Lösung. Mit unserem Baukastensystem AIT Smart Edge ermöglichen wir Ihnen schneller zu einem ersten Produkt zu gelangen, damit Sie möglichst schnell einen Mehrwert für Ihre Kunden schaffen können.