Grundlegendes zu automatischen IoT Edge-Bereitstellungen für einzelne Geräte oder nach Bedarf
Gilt für: IoT Edge 1.5 IoT Edge 1.4
Wichtig
IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
Mithilfe von automatischen Bereitstellungen und einer mehrstufigen Bereitstellung können Sie Module auf einer großen Anzahl von IoT Edge Geräten verwalten und konfigurieren.
Azure IoT Edge bietet zwei Möglichkeiten zum Konfigurieren der Module, die auf IoT Edge Geräten ausgeführt werden sollen. Die erste Methode ist die Bereitstellung von Modulen pro Gerät. Sie erstellen ein Bereitstellungsmanifest und wenden es dann auf ein bestimmtes Gerät nach Name an. Die zweite Methode ist die automatische Bereitstellung auf einem beliebigen registrierten Gerät, das eine Reihe von definierten Bedingungen erfüllt. Sie erstellen ein Bereitstellungsmanifest und definieren dann, auf welche Geräte es angewendet werden soll, basierend auf Tags im Gerätezwilling.
Sie können keine gerätespezifischen und automatischen Bereitstellungen kombinieren. Sobald Sie damit beginnen, auf IoT Edge-Geräte mit automatischen Bereitstellungen (mit oder ohne mehrstufige Bereitstellungen) abzuzielen, werden gerätespezifische Bereitstellungen nicht mehr unterstützt.
Der Schwerpunkt dieses Artikels liegt auf dem Konfigurieren und Überwachen von größeren Gerätebeständen, die zusammen als automatische IoT Edge-Bereitstellungen bezeichnet werden.
Die grundlegenden Schritte zur Bereitstellung lauten wie folgt:
- Ein Bediener definiert ein Bereitstellungsmanifest, in dem ein Satz von Modulen und die Zielgeräte beschrieben werden.
- Daher kommuniziert der IoT Hub-Dienst mit allen Zielgeräten, um sie mit den deklarierten Modulen zu konfigurieren.
- Der IoT Hub-Dienst ruft den Status von den IoT Edge-Geräten ab und macht diese für den Operator verfügbar. Beispielsweise kann ein Bediener sehen, wenn ein Edge-Gerät nicht erfolgreich konfiguriert wurde oder wenn bei einem Modul während der Laufzeit ein Fehler auftritt.
- Immer, wenn neu gezielte IoT Edge-Geräte online sind und eine Verbindung mit IoT Hub herstellen, werden sie für die Bereitstellung konfiguriert.
In diesem Artikel werden die einzelnen Komponenten beschrieben, die beim Konfigurieren und Überwachen einer Bereitstellung verwendet werden. Eine exemplarische Vorgehensweise zum Erstellen und Aktualisieren einer Bereitstellung finden Sie unter Bedarfsabhängiges Bereitstellen und Überwachen von IoT Edge-Modulen.
Bereitstellung
Bei einer automatischen IoT Edge-Bereitstellung werden IoT Edge-Modulimages zugewiesen, die als Instanzen auf einem bestimmten Satz von IoT Edge-Geräten ausgeführt werden. Die automatisierte Bereitstellung konfiguriert ein IoT Edge-Bereitstellungsmanifest, um eine Liste von Modulen mit den entsprechenden Initialisierungsparametern einzuschließen. Eine Bereitstellung kann einem einzelnen Gerät (basierend auf der Geräte-ID) oder einer Gruppe von Geräten (basierend auf Tags) zugewiesen werden. Nachdem ein IoT Edge-Gerät ein Bereitstellungsmanifest erhalten hat, lädt es die Containerimages aus den entsprechenden Containerrepositorys herunter, installiert und konfiguriert sie. Sobald eine Bereitstellung erstellt wurde, kann der Operator den Bereitstellungsstatus überwachen und so erkennen, ob die Zielgeräte ordnungsgemäß konfiguriert wurden.
Nur IoT Edge-Geräte können mit einer Bereitstellung konfiguriert werden. Auf dem Gerät muss Folgendes vorhanden sein, um die Bereitstellung zu ermöglichen:
- Das Basisbetriebssystem
- Ein Containerverwaltungssystem (beispielsweise Moby oder Docker)
- Bereitstellung der IoT Edge-Laufzeit
Bereitstellungsmanifest
Ein Bereitstellungsmanifest ist ein JSON-Dokument, in dem die Module beschrieben werden, die auf den IoT Edge-Zielgeräten konfiguriert werden sollen. Es enthält die Konfigurationsmetadaten für alle Module, einschließlich der erforderlichen Systemmodule (insbesondere IoT Edge-Agent und IoT Edge-Hub).
Die Konfigurationsmetadaten für jedes Modul enthalten Folgendes:
- Version
- type
- Status (z.B. Wird ausgeführt oder Beendet)
- Neustartrichtlinie
- Image- und Containerregistrierung
- Routen für Dateneingabe und -ausgabe
Wenn das Modulimage in einer privaten Containerregistrierung gespeichert ist, befinden sich die Anmeldeinformationen für die Registrierung im IoT Edge-Agent.
Zielbedingung
Die Zielgerätebedingung wird während der Lebensdauer der Bereitstellung kontinuierlich ausgewertet. Alle neuen Geräte, die die Anforderungen erfüllen, sind enthalten, und alle vorhandenen Geräte, die die Anforderungen nicht mehr erfüllen, werden entfernt. Die Bereitstellung wird reaktiviert, wenn der Dienst Änderungen an der Zielbedingung feststellt.
Beispielsweise verfügen Sie über eine Bereitstellung mit einer Zielbedingung tags.environment = 'prod'
. Wenn Sie die Bereitstellung starten, sind 10 Produktionsgeräte vorhanden. Die Module werden erfolgreich auf diesen 10 Geräten installiert. Im Status des IoT Edge-Agents werden insgesamt 10 Geräte, 10 erfolgreiche Antworten, 0 Fehlerantworten und 0 ausstehende Antworten angezeigt. Jetzt fügen Sie fünf weitere Geräte mit tags.environment = 'prod'
. Der Dienst erkennt die Änderung, und der Status des IoT Edge-Agents zeigt nun insgesamt 15 Geräte, 10 erfolgreiche Antworten, 0 Fehlerantworten und 5 ausstehende Antworten an, während der Agent die fünf neuen Geräte bereitstellt.
Wenn eine Bereitstellung keine Zielbedingung hat, wird sie auf keine Geräte angewendet.
Verwenden Sie eine beliebige boolesche Bedingung bei Gerätezwillingstags, vom Gerätezwilling gemeldeten Eigenschaften oder für „deviceId“, um die Zielgeräte auszuwählen. Wenn Sie eine Bedingung mit Tags verwenden möchten, müssen Sie einen "tags":{}
-Abschnitt im Gerätezwilling unter der gleichen Ebene wie die Eigenschaften hinzufügen. Weitere Informationen zu Gerätezwillingen und Tags finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub. Weitere Informationen zu Abfragevorgängen finden Sie unter IoT Hub-Abfragesprachenoperatoren und IS_DEFINED-Funktion.
Beispiele für Zielbedingungen:
- deviceId ='linuxprod1'
- tags.environment ='prod'
- tags.environment = 'prod' AND tags.location = 'westus'
- tags.environment = 'prod' OR tags.location = 'westus'
- tags.operator = 'John' UND tags.environment = 'prod' UND NICHT deviceId = 'linuxprod1'
- properties.reported.devicemodel = '4000x'
- IS_DEFINED(tags.remote)
- NOT IS_DEFINED(tags.location.building)
- tags.environment != null
- [none]
Beachten Sie diese Einschränkungen, wenn Sie eine Zielbedingung erstellen:
- Sie können im Gerätezwilling eine Zielbedingung nur mithilfe von Tags, gemeldeten Eigenschaften oder von „deviceId“ erstellen.
- Doppelte Anführungszeichen sind in keinem Teil der Zielbedingung zulässig. Verwenden Sie einfache Anführungszeichen.
- Einfache Anführungszeichen werden für die Werte der Zielbedingung verwendet. Daher müssen Sie für ein einfaches Anführungszeichen ein weiteres einfaches Anführungszeichen als Escapezeichen verwenden, wenn es Teil des Gerätenamens ist. Geben Sie für die Zielbedingung des Geräts mit dem Namen
operator'sDevice
beispielsweisedeviceId='operator''sDevice'
an. - In Werten für Zielbedingungen sind Zahlen, Buchstaben und folgende Zeichen zulässig:
"()<>@,;:\\"/?={} \t\n\r
. - Die folgenden Zeichen sind in Zielbedingungsschlüsseln nicht zulässig:
/;
.
Priorität
Eine Priorität definiert, ob eine Bereitstellung auf einem Zielgerät relativ zu anderen Bereitstellungen angewendet werden soll. Eine Bereitstellungspriorität ist eine positive ganze Zahl innerhalb des Bereichs von 0 bis 2.147.483.647. Größere Zahlen geben eine höhere Priorität an. Wenn ein IoT Edge-Gerät Ziel mehrerer Bereitstellungen ist, wird die Bereitstellung mit der höchsten Priorität angewendet. Bereitstellungen mit niedrigeren Prioritäten werden nicht angewendet, und Bereitstellungen werden nicht zusammengeführt. Wenn ein Gerät Ziel von mehreren Bereitstellungen mit gleicher Priorität ist, gilt die zuletzt erstellte Bereitstellung (entsprechend dem Erstellungszeitstempel).
Bezeichnungen
Bei Bezeichnungen handelt es sich um Schlüssel-Wert-Paare als Zeichenfolgen, mit denen Sie Bereitstellungen filtern und gruppieren können. Eine Bereitstellung kann mehrere Bezeichnungen aufweisen. Bezeichnungen sind optional und haben keine Auswirkungen auf die Konfiguration von IoT Edge-Geräten.
Metriken
Alle Bereitstellungen melden standardmäßig über vier Metriken:
- Gezielt zeigt die IoT Edge-Geräte, die der Zielbedingung für die Bereitstellung entsprechen.
- Angewendet zeigt die IoT Edge-Zielgeräte, für die es keine weitere Bereitstellung mit höherer Priorität gibt.
- Erfolg gemeldet zeigt die IoT Edge-Geräte an, die ihre Module als erfolgreich bereitgestellt melden.
- Fehler gemeldet zeigt die IoT Edge-Geräte an, die mindestens ein Modul als erfolglos melden. Stellen Sie zum weiteren Untersuchen des Fehlers eine Remoteverbindung mit diesen Geräten her, und zeigen Sie die Protokolldateien an.
Darüber hinaus können Sie Ihre eigenen benutzerdefinierten Metriken zum Überwachen und Verwalten der Bereitstellung definieren.
Metriken bieten zusammenfassende Angaben zu den verschiedenen Zuständen, die Geräte nach dem Anwenden einer Bereitstellungskonfiguration möglicherweise zurückmelden. Metriken können vom edgeHub-Modulzwilling gemeldete Eigenschaften abfragen, z. B. lastDesiredStatus oder lastConnectTime.
Zum Beispiel:
SELECT deviceId FROM devices
WHERE properties.reported.lastDesiredStatus.code = 200
Das Hinzufügen Ihrer eigenen Metriken ist optional und hat keine Auswirkungen auf die tatsächliche Konfiguration von IoT Edge-Geräten.
Mehrstufige Bereitstellung
Bei mehrstufigen Bereitstellungen handelt es sich um automatische Bereitstellungen, die kombiniert werden können, um die Anzahl der eindeutigen Bereitstellungen, die erstellt werden müssen, zu verringern. Mehrstufige Bereitstellungen sind in Szenarien nützlich, in denen dieselben Module in vielen automatischen Bereitstellungen in verschiedenen Kombinationen wiederverwendet werden.
Mehrstufige Bereitstellungen bestehen aus denselben Grundkomponenten wie jede automatische Bereitstellung. Sie richten sich an Geräte, die auf Tags in den Gerätezwillingen basieren, und bieten dieselbe Funktionalität wie Bezeichnungen, Metriken und Statusberichte. Auch mehrstufigen Bereitstellungen werden Prioritäten zugewiesen. Statt anhand der Priorität zu bestimmen, welche Bereitstellung auf ein Gerät angewendet wird, bestimmt die Priorität, wie mehrere Bereitstellungen auf einem Gerät eingestuft werden. Wenn beispielsweise zwei mehrstufige Bereitstellungen ein Modul oder eine Route mit demselben Namen enthalten, wird die Bereitstellung mit der höheren Priorität angewendet und die Bereitstellung mit der niedrigeren Priorität überschrieben.
Die Systemlaufzeitmodule, bekannt als „edgeAgent“ und „edgeHub“, werden nicht als Teil einer mehrstufigen Bereitstellung konfiguriert. Auf IoT Edge-Geräte, die Ziel für eine mehrstufige Bereitstellung sind, muss zunächst eine automatische Standardbereitstellung angewendet werden. Bei der automatischen Bereitstellung wird die Basis bereitgestellt, auf der mehrstufige Bereitstellungen hinzugefügt werden können.
Ein IoT Edge-Gerät kann nur eine einzige automatische Standardbereitstellung (aber mehrere mehrstufige automatische Bereitstellungen) anwenden. Alle mehrstufigen Bereitstellungen, deren Ziel ein Gerät ist, müssen eine höhere Priorität als die automatische Bereitstellung für dieses Gerät haben.
Sehen Sie sich beispielsweise das folgende Szenario eines Unternehmens an, das Gebäude verwaltet. Das Unternehmen hat IoT Edge-Module zum Sammeln von Daten aus Sicherheitskameras, Bewegungssensoren und Aufzügen entwickelt. Allerdings können nicht in allen Gebäuden alle drei Module verwendet werden. Bei automatischen Standardbereitstellungen muss das Unternehmen individuelle Bereitstellungen für alle Modulkombinationen erstellen, die von den jeweiligen Gebäuden benötigt werden.
Sobald das Unternehmen jedoch zu mehrstufigen automatischen Bereitstellungen wechselt, können diese dieselben Modulkombinationen für die Gebäude mit weniger Bereitstellungen erstellen, die verwaltet werden können. Jedes Modul verfügt über eine eigene mehrstufige Bereitstellung, und die Gerätetags identifizieren, welche Module dem einzelnen Gebäude hinzugefügt werden.
Konfiguration von Modulzwillingen
Wenn Sie mit mehrstufigen Bereitstellungen arbeiten, verfügen Sie – absichtlich oder anderweitig – über zwei Bereitstellungen mit demselben Modul, dessen Ziel ein Gerät ist. In diesen Fällen können Sie entscheiden, ob die Bereitstellung mit höherer Priorität den Modulzwilling überschreiben oder daran angefügt werden soll. Beispielsweise können Sie über eine Bereitstellung verfügen, die das gleiche Modul auf 100 verschiedene Geräte anwendet. 10 dieser Geräte befinden sich allerdings in sicheren Einrichtungen und benötigen eine zusätzliche Konfiguration, um über Proxyserver kommunizieren zu können. Mithilfe einer mehrstufigen Bereitstellung können Sie Eigenschaften für Modulzwillinge hinzufügen, die diesen 10 Geräten eine sichere Kommunikation ermöglichen, ohne dass dadurch die vorhandenen Modulzwillingsinformationen aus der Basisbereitstellung überschrieben werden.
Sie können die gewünschten Eigenschaften des Modulzwillings im Bereitstellungsmanifest anfügen. In einer Standardbereitstellung würden Sie Eigenschaften im Abschnitt properties.desired des Modulzwillings hinzufügen. In einer mehrstufigen Bereitstellung können Sie jedoch eine neue Teilmenge der gewünschten Eigenschaften deklarieren.
So könnten Sie in einer Standardbereitstellung beispielsweise das simulierte Temperatursensor-Modul mit den folgenden gewünschten Eigenschaften hinzufügen, die es anweisen, Daten in Intervallen von 5 Sekunden zu senden:
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
In einer mehrstufigen Bereitstellung, deren Ziel einige oder alle identischen Geräte sind, können Sie eine Eigenschaft hinzufügen, die den simulierten Sensor anweist, 1000 Nachrichten zu senden und dann anzuhalten. Weil Sie die vorhandenen Eigenschaften nicht überschreiben möchten, erstellen Sie innerhalb der gewünschten Eigenschaften den neuen Abschnitt layeredProperties
, der die neue Eigenschaft enthält:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"StopAfterCount": 1000
}
}
Ein Gerät, auf das beide Bereitstellungen angewendet werden, zeigt im Modulzwilling für den simulierten Temperatursensor folgende Eigenschaften an:
"properties": {
"desired": {
"SendData": true,
"SendInterval": 5,
"layeredProperties": {
"StopAfterCount": 1000
}
}
}
Wenn Sie das Feld „properties.desired
“ des Modulzwillings in einer mehrstufigen Bereitstellung festlegen, überschreibt properties.desired
dadurch die gewünschten Eigenschaften für dieses Modul in Bereitstellungen mit niedrigerer Priorität.
Schrittweises Rollout
Bei einem schrittweisen Rollout handelt es sich um ein Verfahren, bei dem ein Operator Änderungen für einen größeren Satz von IoT Edge-Geräten bereitstellt. Hierbei werden Änderungen nach und nach vorgenommen, um das Risiko durch umfangreiche wichtige Änderungen zu reduzieren. Automatische Bereitstellungen unterstützen die Verwaltung von stufenweisen Rollouts in einer Gruppe von IoT Edge-Geräten.
Ein schrittweises Rollout wird in den folgenden Phasen und Schritten ausgeführt:
- Richten Sie eine Testumgebung mit IoT Edge-Geräten durch Bereitstellung und Festlegen eines Gerätezwillingstags wie
tag.environment='test'
ein. Die Testumgebung sollte die Produktionsumgebung spiegeln, auf die die Bereitstellung später abzielt. - Erstellen Sie eine Bereitstellung, einschließlich der gewünschten Module und Konfigurationen. Die Zielbedingung sollte die Testumgebung für IoT Edge-Geräte umfassen.
- Überprüfen Sie die neue Modulkonfiguration in der Testumgebung.
- Aktualisieren Sie die Bereitstellung mit einer Teilmenge der IoT Edge-Produktionsgeräte, indem Sie der Zielbedingung ein neues Tag hinzufügen. Stellen Sie außerdem sicher, dass die Priorität für die Bereitstellung höher ist als bei anderen Bereitstellungen, die zurzeit für diese Geräte vorgesehen sind.
- Stellen Sie sicher, dass die Bereitstellung auf den IoT Edge-Geräten erfolgreich war, indem Sie den Bereitstellungsstatus anzeigen.
- Aktualisieren Sie die Bereitstellung so, dass sie auf alle verbleibenden IoT Edge-Produktionsgeräte abzielt.
Rollback
Für Bereitstellungen kann bei Fehlern oder Fehlkonfigurationen ein Rollback ausgeführt werden. Da bei einer Bereitstellung die absolute Modulkonfiguration für ein IoT Edge-Gerät definiert wird, muss eine zusätzliche Bereitstellung auch auf das gleiche Gerät mit niedrigerer Priorität abzielen, auch wenn alle Module entfernt werden sollen.
Durch das Löschen einer Bereitstellung werden die Module nicht von den Zielgeräten entfernt. Es muss eine andere Bereitstellung vorhanden sein, die eine neue Konfiguration für die Geräte definiert – selbst wenn es sich um eine leere Bereitstellung handelt.
Durch das Löschen einer Bereitstellung können jedoch Module vom Zielgerät entfernt werden, wenn es sich um eine mehrstufige Bereitstellung handelt. Bei einer mehrstufigen Bereitstellung wird die zugrunde liegende Bereitstellung aktualisiert, und es werden möglicherweise Module hinzugefügt. Durch das Entfernen einer mehrstufigen Bereitstellung wird die Aktualisierung der zugrunde liegenden Bereitstellung entfernt, und es werden möglicherweise Module entfernt.
Ein Gerät verfügt beispielsweise über die Basisbereitstellung A und die mehrstufigen Bereitstellungen O und M (sodass die Bereitstellungen A, O und M auf dem Gerät bereitgestellt werden). Wenn die mehrstufige Bereitstellung M gelöscht wird, werden A und O auf das Gerät angewendet, und die für Bereitstellung M eindeutigen Module werden entfernt.
Führen Sie die Schritte für Rollbacks in der folgenden Reihenfolge aus:
- Vergewissern Sie sich, dass eine zweite Bereitstellung für die gleiche Gruppe von Geräten vorhanden ist. Wenn bei dem Rollback alle Module entfernt werden sollen, sollte die zweite Bereitstellung keine Module enthalten.
- Ändern oder entfernen Sie den Ausdruck für die Zielbedingung bei der Bereitstellung, für die ein Rollback ausgeführt werden soll, sodass die Geräte die Zielbedingung nicht mehr erfüllen.
- Stellen Sie sicher, dass das Rollback erfolgreich war, indem Sie den Bereitstellungsstatus anzeigen.
- Die Bereitstellung, für die das Rollback ausgeführt wurde, sollte keinen Status für die Geräte mehr anzeigen, auf die sich das Rollback bezogen hat.
- Die zweite Bereitstellung sollte den Bereitstellungsstatus für die Geräte enthalten, für die das Rollback ausgeführt wurde.
Nächste Schritte
- Führen Sie die Schritte zum Erstellen, Aktualisieren oder Löschen einer Bereitstellung in Bereitstellen und Überwachen von IoT Edge-Modulen im großen Maßstab aus.
- Erfahren Sie mehr über andere IoT Edge-Konzepte wie die IoT Edge-Runtime und IoT-Edge-Module.