Förstå IoT Edge distributioner för enskilda enheter eller i stor skala
Gäller för:
IoT Edge 1,1
IoT Edge 1,2
Automatiska distributioner och flerlagersdistribution 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 som det gäller för baserat på taggar i enhetstvillingen.
Den här artikeln fokuserar på att konfigurera och övervaka vagnparker med enheter, vilket gemensamt kallas IoT Edge automatiska distributioner. De grundläggande distributionsstegen är följande:
- En operatör definierar en distribution som beskriver en uppsättning moduler och målenheterna. Varje distribution har ett distributionsmanifest som återspeglar den här informationen.
- Tjänsten IoT Hub kommunicerar med alla målenheter för att konfigurera dem med de deklarerade modulerna.
- Tjänsten IoT Hub hämtar status från IoT Edge och gör dem tillgängliga för operatören. En operatör kan till exempel se när en Edge-enhet inte har konfigurerats korrekt eller om en modul misslyckas under körning.
- När som helst konfigureras nya IoT Edge som uppfyller målvillkoren för distributionen.
I den här artikeln beskrivs varje komponent som ingår i konfiguration och övervakning av en distribution. En genomgång av hur du skapar och uppdaterar en distribution finns i Distribuera och övervaka IoT Edge moduler i stor skala.
Distribution
En IoT Edge automatisk distribution tilldelar IoT Edge modulavbildningar som ska köras som instanser på en riktad uppsättning IoT Edge enheter. Det fungerar genom att konfigurera 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 containerdatabas och konfigurerar dem därefter. När en distribution har skapats kan en operatör övervaka distributionsstatusen för att se om målenheterna är korrekt konfigurerade.
Endast IoT Edge enheter kan konfigureras med en distribution. Följande krav måste vara uppfyllda på enheten innan den kan ta emot distributionen:
- Det grundläggande operativsystemet
- Ett containerhanteringssystem som Moby eller Docker
- Etablering av IoT Edge körning
Distributionsmanifest
Ett distributionsmanifest är ett JSON-dokument som beskriver de moduler som ska konfigureras på IoT Edge målenheter. Den innehåller konfigurationsmetadata för alla moduler, inklusive de systemmoduler som krävs (särskilt IoT Edge agent och IoT Edge hub).
Konfigurationsmetadata för varje modul innehåller:
- Version
- Typ
- Status (till exempel körs eller stoppas)
- Starta om princip
- Avbildnings- 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ålvillkoret utvärderas kontinuerligt under hela distributionens livslängd. Alla nya enheter som uppfyller kraven inkluderas och alla befintliga enheter som inte längre gör det tas bort. Distributionen återaktiveras om tjänsten identifierar ändringar i målvillkoret.
Du kan till exempel ha en distribution med målvillkoret tags.environment = 'prod'. När du startar distributionen finns det 10 produktionsenheter. Modulerna har installerats på dessa 10 enheter. Statusen IoT Edge agent visar 10 totalt antal 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 statusen för IoT Edge-agenten blir totalt 15 enheter, 10 lyckade svar, 0 felsvar och 5 väntande svar när den distribueras till de fem nya enheterna.
Använd alla booleska villkor för taggar för enhetstvillingar, rapporterade egenskaper för enhetstvilling eller deviceId för att välja målenheterna. Om du vill använda villkor med taggar måste du lägga till avsnittet "tags": i {} enhetstvillingen på samma nivå som egenskaperna. Läs mer om taggar i enhetstvilling
Exempel på målvillkor:
- deviceId ='linuxprod1'
- tags.environment ='prod'
- tags.environment = 'prod' AND tags.location = 'westus'
- tags.environment = 'prod' OR tags.location = 'westus'
- tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
- properties.reported.devicemodel = '4000x'
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 escape-ta bort det enkla citatt offerten med ett annat enkelt citattecken om det är en del av enhetsnamnet. Om du till exempel vill rikta en enhet med namnet
operator'sDeviceskriver dudeviceId='operator''sDevice'. - 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 med större tal som anger högre prioritet. Om en IoT Edge en enhet är mål för mer än en distribution tillämpas distributionen med högst prioritet. Distributioner med lägre prioritet tillämpas inte och slås inte heller samman. 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ärdepar 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 den faktiska konfigurationen av IoT Edge enheter.
Mått
Som standard rapporterar alla distributioner om fyra mått:
- Mål visar de IoT Edge enheter som matchar villkoret Distributionsmål.
- Tillämpad visar IoT Edge enheter som inte är mål för en annan distribution med högre prioritet.
- Rapporteringen lyckades visar IoT Edge enheter som har rapporterat att modulerna har distribuerats.
- Rapporteringsfel visar IoT Edge enheter som har rapporterat att en eller flera moduler inte har distribuerats. Du kan undersöka felet ytterligare genom att fjärransluta till enheterna och visa loggfilerna.
Dessutom kan du definiera egna anpassade mått för att övervaka och hantera distributionen.
Mått ger sammanfattningar av de olika tillstånd som enheter kan rapportera tillbaka när en distributionskonfiguration tillämpas. Mått kan köra frågor mot rapporterade egenskaper för edgeHub-modultvillingen,till exempel lastDesiredStatus eller lastConnectTime. Ett exempel:
SELECT deviceId FROM devices
WHERE properties.reported.lastDesiredStatus.code = 200
Att lägga till egna mått är valfritt och påverkar inte den faktiska konfigurationen av IoT Edge enheter.
Skiktad distribution
Nivådistributioner är automatiska distributioner som kan kombineras för att minska antalet unika distributioner som behöver skapas. Nivådistributioner är användbara i scenarier där samma moduler återanvänds i olika kombinationer i många automatiska distributioner.
Skiktade distributioner har samma grundläggande komponenter som alla automatiska distributioner. De riktar in sig på enheter baserat på taggar i enhetstvillingarna och tillhandahåller samma funktioner för etiketter, mått och statusrapportering. Nivådistributioner har också tilldelade prioriteter, men 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å lagerdistributioner till exempel har en modul eller en väg med samma namn tillämpas den nivålagrade distributionen med högre prioritet medan den lägre prioriteten skrivs över.
Modulerna för systemkörning, edgeAgent och edgeHub, konfigureras inte som en del av en skiktad distribution. För IoT Edge enheter som är mål för en skiktad distribution måste en automatisk standarddistribution tillämpas på den först. Den automatiska distributionen utgör grunden för hur skiktade distributioner kan läggas till.
En IoT Edge enhet kan använda en och endast en automatisk standarddistribution, men den kan använda automatiska distributioner i flera lager. Alla flerlagersdistributioner som riktar sig mot en enhet måste ha högre prioritet än den automatiska distributionen för den enheten.
Tänk dig till exempel följande scenario för ett företag som hanterar byggnader. De har IoT Edge moduler för att samla in 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.

Men när företaget växlar till automatiska distributioner i flera lager upptäcker de att de kan skapa samma modulkombinationer för sina byggnader med färre distributioner att hantera. Varje modul har en egen skiktad distribution och enhetstaggarna identifierar vilka moduler som läggs till i varje byggnad.

Konfiguration av modultvilling
När du arbetar med nivådistributioner kan du avsiktligt eller på annat sätt ha två distributioner med samma modul som riktar sig 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. 10 av dessa enheter finns dock i säkra anläggningar och behöver ytterligare konfiguration för att kunna kommunicera via proxyservrar. Du kan använda en skiktad distribution för att lägga till egenskaper för modultvilling som gör att dessa 10 enheter kan kommunicera säkert utan att skriva över den befintliga informationen om modultvillingen från basdistributionen.
Du kan lägga till önskade egenskaper för modultvilling i distributionsmanifestet. I en standarddistribution skulle du lägga till egenskaper i avsnittet properties.desired i modultvillingen. I en skiktad distribution kan du deklarera en ny delmängd av önskade egenskaper.
I en standarddistribution kan du till exempel lägga till den simulerade temperatursensormodulen med följande önskade egenskaper som säger till den att skicka data med fem sekunders mellanrum:
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
I en skiktad distribution som riktar in sig på några eller alla av samma enheter kan du lägga till en egenskap som talar om för 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 som har båda distributionerna tillämpade återspeglar följande egenskaper i modultvillingen för den simulerade temperatursensorn:
"properties": {
"desired": {
"SendData": true,
"SendInterval": 5,
"layeredProperties": {
"StopAfterCount": 1000
}
}
}
Om du anger fältet för modultvillingen i en skiktad distribution, kommer de önskade egenskaperna för modulen att skrivas över i eventuella distributioner properties.desired med lägre prioritet.
Fasad utrullning
En fasad distribution är en övergripande process där en operatör distribuerar ändringar till en utvidgad 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örre ändringar. Automatiska distributioner hjälper till att hantera faserna i en vagnpark med IoT Edge enheter.
En stegvis utrullning körs i följande faser och steg:
- Upprätta en testmiljö för IoT Edge genom att etablera dem och ange en tagg för enhetstvilling som
tag.environment='test'. Testmiljön bör spegla produktionsmiljön som distributionen så småningom ska rikta in sig på. - Skapa en distribution, inklusive önskade moduler och konfigurationer. Målvillkoret ska riktas mot testmiljön IoT Edge enhet.
- Verifiera den nya modulkonfigurationen i testmiljön.
- Uppdatera distributionen så att den innehåller en delmängd av IoT Edge genom att lägga till en ny tagg i målvillkoret. Kontrollera också att prioriteten för distributionen är högre än andra distributioner som för närvarande är riktade till dessa enheter
- Kontrollera att distributionen lyckades på mål-IoT-enheterna genom att visa distributionsstatusen.
- Uppdatera distributionen för att rikta in dig på alla återstående IoT Edge enheter.
Återställning
Distributioner kan återställas om du får fel eller felkonfigurationer. Eftersom en distribution definierar den absoluta modulkonfigurationen för en IoT Edge-enhet måste en ytterligare distribution också riktas till samma enhet med lägre prioritet även om målet är att ta bort alla moduler.
Om du tar bort en distribution tas modulerna inte bort från målenheterna. Det måste finnas en annan distribution som definierar en ny konfiguration för enheterna, även om det är en tom distribution.
Utför återställningar i följande ordning:
- 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 ska den andra distributionen inte innehålla några moduler.
- Ändra eller ta bort uttrycket för målvillkoret för distributionen som du vill återställa så att enheterna inte längre uppfyller målvillkoret.
- Kontrollera att återställningen har lyckats genom att visa distributionsstatusen.
- Den återställda distributionen bör inte längre visa status för de enheter som återställdes.
- Den andra distributionen bör nu innehålla distributionsstatus för de enheter som återställdes.
Nästa steg
- Gå igenom stegen för att skapa, uppdatera eller ta bort en distribution i Distribuera och övervaka IoT Edge moduler i stor skala.
- Läs mer om andra IoT Edge begrepp som IoT Edge runtime och IoT Edge moduler.