Teilen über


Grundlegendes zu automatischen IoT Edge-Bereitstellungen für einzelne Geräte oder nach Bedarf

Gilt für:Häkchen für IoT Edge 1.5 IoT Edge 1.5

Wichtig

IoT Edge 1.5 LTS ist das unterstützte Release. IoT Edge 1.4 LTS wurde am 12. November 2024 eingestellt. 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:

  1. Ein Bediener definiert ein Bereitstellungsmanifest, in dem ein Satz von Modulen und die Zielgeräte beschrieben werden.
  2. Daher kommuniziert der IoT Hub-Dienst mit allen Zielgeräten, um sie mit den deklarierten Modulen zu konfigurieren.
  3. 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.
  4. 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 Bereitstellen von IoT Edge-Modulen im großen Maßstab mithilfe des Azure-Portals.

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 in den 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 beispielsweise deviceId='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 mehrere Bereitstellungen auf ein IoT Edge-Gerät ausgerichtet sind, gilt die Bereitstellung mit der höchsten Priorität. 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 wirken sich nicht auf die Konfiguration von IoT Edge-Geräten aus.

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 stellen eine Zusammenfassung der verschiedenen Zustände bereit, die Geräte aufgrund der Anwendung einer Bereitstellungskonfiguration melden können. 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 eigener Metriken ist optional und wirkt sich nicht auf die tatsächliche Konfiguration von IoT Edge-Geräten aus.

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 ebenenbasierte Bereitstellungen ein Modul oder eine Route mit demselben Namen haben, wird die mehrstufige Bereitstellung mit der höheren Priorität angewendet, während die niedrigere Priorität überschrieben wird.

Die Systemlaufzeitmodule, die als edgeAgent und EdgeHub bezeichnet werden, werden nicht als Teil einer mehrschichtigen 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.

Screenshot, der zeigt, dass standardmäßige automatische Bereitstellungen jede Modulkombination berücksichtigen müssen.

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.

Screenshot, der zeigt, wie mehrstufige automatische Bereitstellungen Szenarien vereinfachen, in denen dieselben Module auf unterschiedliche Weise kombiniert werden.

Konfiguration von Modulzwillingen

Wenn Sie mit mehrschichtigen Bereitstellungen arbeiten, verfügen Sie möglicherweise absichtlich oder anderweitig über zwei Bereitstellungen mit demselben Modul für ein Gerät. 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. Sie können beispielsweise über eine Bereitstellung verfügen, die dasselbe Modul auf 100 verschiedene Geräte anwendet. 10 dieser Geräte befinden sich jedoch in sicheren Einrichtungen und benötigen zusätzliche Konfiguration, um über Proxyserver zu kommunizieren. 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 mehrschichtigen Bereitstellung, die auf einige oder alle diese Geräte ausgerichtet ist, könnten Sie eine Eigenschaft hinzufügen, die dem simulierten Sensor angibt, 1.000 Nachrichten zu senden und dann zu beenden. 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:

  1. 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 letztendlich ausgerichtet ist.
  2. Erstellen Sie eine Bereitstellung, einschließlich der gewünschten Module und Konfigurationen. Die Zielbedingung sollte die Testumgebung für IoT Edge-Geräte umfassen.
  3. Überprüfen Sie die neue Modulkonfiguration in der Testumgebung.
  4. 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.
  5. Stellen Sie sicher, dass die Bereitstellung auf den IoT Edge-Geräten erfolgreich war, indem Sie den Bereitstellungsstatus anzeigen.
  6. Aktualisieren Sie die Bereitstellung so, dass sie auf alle verbleibenden IoT Edge-Produktionsgeräte abzielt.

Rückgängigmachen

Für Bereitstellungen kann bei Fehlern oder Fehlkonfigurationen ein Rollback ausgeführt werden. Da eine Bereitstellung die absolute Modulkonfiguration für ein IoT Edge-Gerät definiert, muss auch eine zusätzliche Bereitstellung auf dasselbe Gerät mit niedrigerer Priorität ausgerichtet werden, auch wenn das Ziel darin besteht, alle Module zu entfernen.

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.

Das Löschen einer Bereitstellung kann jedoch Module aus dem Zielgerät entfernen, wenn es sich um eine mehrschichtige 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:

  1. Vergewissern Sie sich, dass eine zweite Bereitstellung für die gleiche Gruppe von Geräten vorhanden ist. Wenn das Ziel des Rollbacks darin besteht, alle Module zu entfernen, sollte die zweite Bereitstellung keine Module enthalten.
  2. Ä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.
  3. 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