Dela via


Förstå IoT Edge automatiserade implementeringar för en enstaka enhet eller för storskalig användning

Applies to:IoT Edge 1.5 bock IoT Edge 1.5

Viktigt!

IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphörde den 12 november 2024. Om du använder en tidigare version läser du Update IoT Edge.

Automatisk distribution och distribution i flera lager hjälper dig att hantera och konfigurera moduler på ett stort antal IoT Edge enheter.

Azure IoT Edge finns två sätt att konfigurera modulerna så att de körs på IoT Edge enheter. Den första metoden är att distribuera moduler per enhet. Du skapar ett distributionsmanifest och tillämpar det sedan på en viss enhet efter namn. Den andra metoden är att distribuera moduler automatiskt till alla registrerade enheter som uppfyller en uppsättning definierade villkor. Du skapar ett distributionsmanifest och definierar sedan vilka enheter det gäller för baserat på taggar i enhetstvillingen.

Du kan inte kombinera per enhet-distributioner och automatiska distributioner. När du börjar rikta in dig på IoT Edge enheter med automatiska distributioner (med eller utan lagerdistributioner) stöds inte längre distributioner per enhet.

Den här artikeln fokuserar på att konfigurera och övervaka enhetsflottor, kollektivt benämnda IoT Edge automatiska distributioner.

De grundläggande distributionsstegen är följande:

  1. En operator definierar ett distributionsmanifest som beskriver en uppsättning moduler och målenheterna.
  2. Därför kommunicerar IoT Hub-tjänsten med alla målenheter för att konfigurera dem med de deklarerade modulerna.
  3. Tjänsten IoT Hub hämtar status från IoT Edge enheter och gör dem tillgängliga för operatorn. En operatör kan till exempel se när en Edge-enhet inte har konfigurerats eller om en modul misslyckas under körningen.
  4. Vid varje tidpunkt, när nyligen inriktade IoT Edge-enheter är online och ansluter till IoT Hub, konfigureras de för driftsättningen.

I den här artikeln beskrivs varje komponent som ingår i konfigurationen och övervakningen av en distribution. En genomgång av hur du skapar och uppdaterar en distribution finns i Distribuera IoT Edge moduler i stor skala med hjälp av Azure-portalen.

Distribution

En automatisk IoT Edge-distribution tilldelar IoT Edge modulavbildningar som ska köras som instanser på en riktad uppsättning av IoT Edge-enheter. Den automatiserade distributionen konfigurerar ett IoT Edge distributionsmanifest för att inkludera en lista över moduler med motsvarande initieringsparametrar. En distribution kan tilldelas till en enskild enhet (baserat på enhets-ID) eller till en grupp med enheter (baserat på taggar). När en IoT Edge-enhet tar emot ett distributionsmanifest laddar den ned och installerar containeravbildningarna från respektive containerlagringsplatser och konfigurerar dem därefter. När en distribution har skapats kan en operatör övervaka distributionsstatusen för att se om målenheter är korrekt konfigurerade.

Endast IoT Edge-enheter kan konfigureras med en tillämpning. Följande krav måste finnas på enheten innan den kan ta emot distributionen:

  • Basoperativsystemet
  • Ett containerhanteringssystem som Moby eller Docker
  • Driftsättning av IoT Edge-runtime

Distributionsmanifest

Ett distributionsmanifest är ett JSON-dokument som beskriver de moduler som ska konfigureras på målenheterna IoT Edge. Den innehåller konfigurationsmetadata för alla moduler, inklusive de systemmoduler som krävs (särskilt IoT Edge-agenten och IoT Edge hubb).

Konfigurationsmetadata för varje modul innehåller:

  • Utgåva
  • Typ
  • Status (till exempel Körs eller Stoppad)
  • Omstartsprincip
  • Bild- och containerregister
  • Vägar för indata och utdata

Om modulavbildningen lagras i ett privat containerregister innehåller IoT Edge-agenten autentiseringsuppgifterna för registret.

Målvillkor

Målenhetens tillstånd utvärderas kontinuerligt under distributionens hela livslängd. Alla nya enheter som uppfyller kraven ingår och alla befintliga enheter som inte längre uppfyller kraven tas bort. Distributionen återaktiveras om tjänsten identifierar någon ändring av målvillkoret.

Du har till exempel en distribution med ett målvillkor tags.environment = 'prod'. När du initierar distributionen finns det 10 produktionsenheter. Modulerna har installerats på dessa 10 enheter. Statusen IoT Edge agent visar totalt 10 enheter, 10 lyckade svar, 0 felsvar och 0 väntande svar. Nu lägger du till ytterligare fem enheter med tags.environment = 'prod'. Tjänsten identifierar ändringen och IoT Edge agentstatus visar nu totalt 15 enheter, 10 lyckade svar, 0 felsvar och 5 väntande svar medan den distribueras till de fem nya enheterna.

Om en distribution inte har något målvillkor tillämpas den på inga enheter.

Använd alla booleska villkor för enhetstvillingtaggar, rapporterade egenskaper för enhetstvillingar eller deviceId för att välja målenheterna. Om du vill använda ett villkor med taggar måste du lägga till ett "tags":{} avsnitt i device twin under samma nivå som egenskaper. Mer information om taggar i en enhetstvilling finns i Förstå och använda enhetstvillingar i IoT Hub. Mer information om frågeåtgärder finns i IoT Hub frågespråkoperatorer och IS_DEFINED funktion.

Exempel på målvillkor:

  • deviceId ='linuxprod1'
  • tags.environment ='produktion'
  • tags.environment = 'prod' AND tags.location = 'westus'
  • tags.environment = 'prod' ELLER tags.location = 'westus'
  • tags.operator = 'John' OCH tags.environment = 'prod' OCH INTE deviceId = 'linuxprod1'
  • properties.reported.devicemodel = "4000x"
  • IS_DEFINED(tags.remote) // Kontrollerar om 'tags.remote' är definierad
  • INTE IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [ingen]

Tänk på dessa begränsningar när du skapar ett målvillkor:

  • I enhetstvillingen kan du bara skapa ett målvillkor med hjälp av taggar, rapporterade egenskaper eller deviceId.
  • Dubbla citattecken tillåts inte i någon del av målvillkoret. Använd enkla citattecken.
  • Enkla citattecken representerar värdena för målvillkoret. Därför måste du undvika det enkla citatet med ett annat citattecken om det är en del av enhetsnamnet. Om du till exempel vill rikta in dig på en enhet med namnet operator'sDeviceskriver deviceId='operator''sDevice'du .
  • Siffror, bokstäver och följande tecken tillåts i målvillkorsvärden: "()<>@,;:\\"/?={} \t\n\r.
  • Följande tecken tillåts inte i målvillkorsnycklar:/;.

Prioritet

En prioritet definierar om en distribution ska tillämpas på en målenhet i förhållande till andra distributioner. En distributionsprioritet är ett positivt heltal inom intervallet från 0 till 2 147 483 647. Större tal anger en högre prioritet. Om fler än en distribution riktar sig mot en IoT Edge enhet gäller distributionen med högsta prioritet. Distributioner med lägre prioritet tillämpas inte och de sammanfogas inte heller. Om en enhet är riktad mot två eller flera distributioner med samma prioritet gäller den senast skapade distributionen (bestäms av tidsstämpeln för skapande).

Etiketter

Etiketter är strängnyckel/värde-par som du kan använda för att filtrera och gruppera distributioner. En distribution kan ha flera etiketter. Etiketter är valfria och påverkar inte konfigurationen av IoT Edge enheter.

Mått

Som standardläge rapporterar alla distributioner om fyra parametrar.

  • Targeted visar de IoT Edge enheter som matchar distributionsmålvillkoret.
  • Applied visar målinriktade IoT Edge-enheter som inte riktas mot en annan distribution med högre prioritet.
  • Rapporteringens framgång visar de IoT Edge-enheter som rapporterar sina moduler som framgångsrikt distribuerade.
  • Rapporteringsfel visar de IoT Edge enheter som rapporterar en eller flera moduler som distribuerade utan framgång. Om du vill undersöka felet ytterligare ansluter du till dessa enheter och visar loggfilerna.

Dessutom kan du definiera dina egna anpassade mått för att övervaka och hantera distributionen.

Metrik ger sammanfattande antal av de olika tillstånd som enheter kan rapportera tillbaka som ett resultat av att en distributionskonfiguration tillämpas. Mått kan fråga edgeHub-modultvillingens rapporterade egenskaper, till exempel lastDesiredStatus eller lastConnectTime.

Till exempel:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

Det är valfritt att lägga till egna mått och påverkar inte den faktiska konfigurationen av IoT Edge enheter.

Distribution i lager

Lagerdistributioner är automatiska distributioner som kan kombineras för att minska antalet unika distributioner som behöver skapas. Lagerdistributioner är användbara i scenarier där samma moduler återanvänds i olika kombinationer i många automatiska distributioner.

Nivåindelade distributioner har samma grundläggande komponenter som alla automatiska distributioner. De riktar in sig på enheter baserat på taggar i enhetstvillingarna och ger samma funktioner kring etiketter, mått och statusrapportering. Skiktade distributioner har också tilldelats prioriteringar. I stället för att använda prioriteten för att avgöra vilken distribution som tillämpas på en enhet avgör prioriteten hur flera distributioner rangordnas på en enhet. Om två distributioner i flera lager till exempel har en modul eller en väg med samma namn tillämpas den skiktade distributionen med högre prioritet medan den lägre prioriteten skrivs över.

Systemkörningsmodulerna, som kallas edgeAgent och edgeHub, konfigureras inte som en del av en distribution i flera lager. Alla IoT Edge-enheter som chosats för en lagerindelad distribution behöver först en automatisk standarddistribution tillämpad på dessa. Den automatiska distributionen tillhandahåller grunden på vilken lagerbaserade distributioner kan läggas till.

En IoT Edge-enhet kan tillämpa en och endast en standardbaserad automatisk distribution, men den kan använda flera automatiska distributioner i flera lager. Alla lagerdistributioner som riktar sig till en enhet måste ha högre prioritet än den automatiska distributionen för den enheten.

Tänk till exempel på följande scenario för ett företag som hanterar byggnader. Företaget utvecklade IoT Edge moduler för insamling av data från säkerhetskameror, rörelsesensorer och hissar. Alla byggnader kan dock inte använda alla tre modulerna. Med automatiska standarddistributioner måste företaget skapa enskilda distributioner för alla modulkombinationer som deras byggnader behöver.

Skärmbild som visar att automatiska standarddistributioner måste hantera varje modulkombination.

Men när företaget växlar till lagerbaserade automatiska utplaceringar kan de skapa samma modulkombinationer för sina byggnader med färre utplaceringar som behöver hanteras. Varje modul har en egen skiktad implementering, och taggar på enheter används för att identifiera vilka moduler som läggs till i varje byggnad.

Skärmbild som visar hur automatiska distributioner i lager förenklar scenarier där samma moduler kombineras på olika sätt.

Konfiguration av modultvilling

När du arbetar med distributioner i flera lager kan du avsiktligt eller på annat sätt ha två distributioner med samma modul riktad mot en enhet. I dessa fall kan du bestämma om distributionen med högre prioritet ska skriva över modultvillingen eller lägga till den. Du kan till exempel ha en distribution som tillämpar samma modul på 100 olika enheter. Men 10 av dessa enheter är i säkra anläggningar och behöver extra konfiguration för att kommunicera via proxyservrar. Du kan använda en distribution i flera lager för att lägga till egenskaper för modultvillingar som gör att dessa 10 enheter kan kommunicera säkert utan att skriva över den befintliga modultvillinginformationen från basdistributionen.

Du kan lägga till önskade egenskaper för modultvillingar i distributionsmanifestet. I en standarddistribution lägger du till egenskaper i avsnittet properties.desired i modultvillingen. Men i en distribution i flera lager kan du deklarera en ny delmängd av önskade egenskaper.

I en standarddistribution kan du till exempel lägga till modulen för simulerad temperatursensor med följande önskade egenskaper som uppmanar den att skicka data i 5-sekundersintervall:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

I en distribution i flera lager som riktar sig till vissa eller alla dessa enheter kan du lägga till en egenskap som instruerar den simulerade sensorn att skicka 1 000 meddelanden och sedan stoppa. Du vill inte skriva över de befintliga egenskaperna, så du skapar ett nytt avsnitt i de önskade egenskaperna med namnet layeredProperties, som innehåller den nya egenskapen:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

En enhet med båda driftsättningarna tillämpade återspeglar följande egenskaper hos modulens tvilling för den simulerade temperatursensorn.

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Om du anger properties.desired fältet för modultvillingen i en lagerdistribution properties.desired skriver du över de önskade egenskaperna för modulen i eventuella distributioner med lägre prioritet.

Stegvis distribution

En stegvis distribution är en övergripande process där en operatör distribuerar ändringar till en bredare uppsättning IoT Edge enheter. Målet är att göra ändringar gradvis för att minska risken för att göra storskaliga störande ändringar. Automatiska distributioner hjälper till att hantera stegvisa distributioner i en flotta av IoT Edge enheter.

En stegvis distribution körs i följande faser och steg:

  1. Upprätta en testmiljö för IoT Edge-enheter genom att provisionera dem och ange en tagg för enhetstvilling som tag.environment='test'. Testmiljön bör spegla den produktionsmiljö som distributionen slutligen riktar in sig på.
  2. Skapa en distribution, inklusive önskade moduler och konfigurationer. Målvillkoret bör riktas mot IoT Edge-testenhetsmiljön.
  3. Verifiera den nya modulkonfigurationen i testmiljön.
  4. Uppdatera distributionen så att den innehåller en delmängd av produktions-IoT Edge-enheter genom att lägga till en ny etikett i det målinriktade villkoret. Se också till att prioriteten för distributionen är högre än andra distributioner som för närvarande är riktade till dessa enheter.
  5. Kontrollera att distributionen lyckades på målenheterna IoT Edge genom att visa distributionsstatusen.
  6. Uppdatera distributionen så att den inriktar sig på alla återstående produktions-IoT Edge-enheter.

Återställning

Utplaceringar kan rullas tillbaka om du får felmeddelanden eller felkonfigurationer. Eftersom en distribution definierar den absoluta modulkonfigurationen för en IoT Edge enhet måste en extra distribution också riktas mot samma enhet med lägre prioritet även om målet är att ta bort alla moduler.

Om du tar bort en distribution tas inte modulerna bort från målenheter. Det måste finnas en annan distribution som definierar en ny konfiguration för enheterna, även om det är en tom distribution.

Om du tar bort en distribution kan det dock ta bort moduler från målenheten om det var en distribution i flera lager. En distribution i flera lager uppdaterar den underliggande distributionen och kan eventuellt lägga till moduler. Om du tar bort en distribution i flera lager tas uppdateringen bort till den underliggande distributionen, vilket kan ta bort moduler.

En enhet har till exempel basdistributionen A och lagerdistributionerna O och M tillämpade på den (så att A-, O- och M-distributionerna distribueras till enheten). Om lagerdistribution M sedan tas bort tillämpas A och O på enheten och modulerna som är unika för distribution M tas bort.

Utför återställningar i följande sekvens:

  1. Bekräfta att en andra distribution också är riktad mot samma enhetsuppsättning. Om målet med återställningen är att ta bort alla moduler bör den andra distributionen inte innehålla några moduler.
  2. Ändra eller ta bort målvillkorsuttrycket för den distribution som du vill återställa så att enheterna inte längre uppfyller målvillkoret.
  3. Kontrollera att återställningen lyckades genom att visa distributionsstatusen.
    • Den återställda distributionen bör inte längre visa status för de enheter som återställts.
    • Den andra distributionen bör nu innehålla distributionsstatus för de enheter som återställdes.

Nästa steg