Delen via


Een Azure IoT-hub handmatig migreren met behulp van een Azure Resource Manager-sjabloon

Gebruik Azure Portal, Azure Resource Manager-sjablonen en Azure IoT Hub-service-SDK's om een IoT-hub te migreren naar een nieuwe regio, een nieuwe laag of een nieuwe configuratie.

De stappen in dit artikel zijn handig als u het volgende wilt doen:

  • Voer een upgrade uit van de gratis laag naar een IoT-hub met een Basic- of Standard-laag.
  • Een IoT-hub verplaatsen naar een nieuwe regio.
  • Gegevens over ioT-hubstatussen exporteren als back-up.
  • Verhoog het aantal partities voor een IoT-hub.
  • Stel een hub in voor een ontwikkeling, in plaats van productieomgeving.
  • Een aangepaste implementatie van hoge beschikbaarheid met meerdere hubs inschakelen. Zie de sectie Hoge beschikbaarheid van IoT Hub en herstel na noodgevallen voor meerdere regio's voor meer informatie.

Als u een hub wilt migreren, hebt u een abonnement met beheerderstoegang tot de oorspronkelijke hub nodig. U kunt de nieuwe hub in een nieuwe resourcegroep en regio plaatsen, in hetzelfde abonnement als de oorspronkelijke hub of zelfs in een nieuw abonnement. U kunt niet dezelfde naam gebruiken omdat de hubnaam wereldwijd uniek moet zijn.

Automatische en handmatige migratiestappen vergelijken

Het resultaat van dit artikel is vergelijkbaar met het automatisch migreren van een IoT-hub met behulp van de Azure CLI, maar met een ander proces. Voordat u begint, moet u bepalen welk proces geschikt is voor uw scenario.

  • Het handmatige proces (dit artikel):

    • Hiermee worden uw apparaatregister en uw routerings- en eindpuntgegevens gemigreerd. U moet handmatig andere configuratiegegevens opnieuw maken in de nieuwe IoT-hub.
    • Is sneller voor het migreren van grote aantallen apparaten (bijvoorbeeld meer dan 100.000).
    • Maakt gebruik van een Azure Storage-account om het apparaatregister over te dragen.
    • Scrubs verbindingsreeks s voor routerings- en bestandsuploadeindpunten die gebruikmaken van verificatie op basis van sleutels uit de uitvoer van de ARM-sjabloon. U moet ze handmatig opnieuw toevoegen.
  • Het Azure CLI-proces:

    • Migreert uw apparaatregister, uw routerings- en eindpuntgegevens en andere configuratiegegevens, zoals IoT Edge-implementaties of automatische configuraties voor apparaatbeheer.
    • Is eenvoudiger voor het migreren van kleine aantallen apparaten (bijvoorbeeld tot 10.000).
    • Hiervoor is geen Azure Storage-account vereist.
    • Verzamelt verbindingsreeks s voor routerings- en bestandsuploadeindpunten die gebruikmaken van verificatie op basis van sleutels en deze bevat in de uitvoer van de ARM-sjabloon.

Punten die u moet in acht nemen

Er zijn verschillende aandachtspunten voordat u een IoT-hub migreert.

  • Zorg ervoor dat alle functies die beschikbaar zijn op de oorspronkelijke locatie ook beschikbaar zijn op de nieuwe locatie. Sommige services zijn in preview en niet alle functies zijn overal beschikbaar.

  • Verwijder de oorspronkelijke resources niet voordat u de gemigreerde versie maakt en verifieert. Zodra u een hub verwijdert, is deze voor altijd verdwenen en kunt u deze niet meer herstellen om de instellingen of gegevens te controleren om ervoor te zorgen dat de hub correct wordt gerepliceerd.

  • Gegevens voor de oorspronkelijke IoT-hub worden niet gemigreerd. Deze gegevens omvatten apparaatberichten, C2D-opdrachten (cloud-naar-apparaat) en taakgerelateerde informatie, zoals planningen en geschiedenis. Metrische gegevens en logboekregistratieresultaten worden ook niet gemigreerd.

  • U moet downtime voor de migratie plannen. Het klonen van de apparaten naar de nieuwe hub kost tijd. Als u de import-/exportmethode gebruikt, heeft benchmarktests aangetoond dat het ongeveer twee uur kan duren om 500.000 apparaten te verplaatsen en vier uur om een miljoen apparaten te verplaatsen.

  • U kunt apparaten naar de nieuwe hub kopiëren zonder de apparaten af te sluiten of te wijzigen.

    • Als de apparaten oorspronkelijk zijn ingericht met DPS, werkt u de inschrijvingen bij zodat deze verwijzen naar de nieuwe IoT-hub. Vervolgens moet u de apparaten opnieuw inrichten om de verbindingsgegevens bij te werken die op elk apparaat zijn opgeslagen.

    • Anders moet u de import-/exportmethode gebruiken om de apparaten te verplaatsen en moeten de apparaten worden gewijzigd om de nieuwe hub te kunnen gebruiken. U kunt bijvoorbeeld uw apparaat zo instellen dat de Hostnaam van de IoT Hub wordt gebruikt uit de gewenste eigenschappen van de dubbel. Op het apparaat wordt de hostnaam van de IoT Hub gebruikt, wordt het apparaat losgekoppeld van de oude hub en wordt het opnieuw verbonden met de nieuwe hub.

  • U moet certificaten bijwerken zodat u ze kunt gebruiken met de nieuwe resources. U hebt waarschijnlijk ook de hub ergens in een DNS-tabel gedefinieerd en moet die DNS-gegevens bijwerken.

  • Eindpunten die door het systeem toegewezen beheerde identiteiten gebruiken voor verificatie, kunnen niet worden gemigreerd. Na de migratie moet u de door het systeem toegewezen beheerde identiteit van de nieuwe IoT-hub toegang geven tot de eindpuntbronnen en vervolgens de eindpunten opnieuw maken.

Methodologie

Dit is de algemene methode die we aanbevelen voor het migreren van een IoT-hub.

  1. Exporteer de hub en de bijbehorende instellingen naar een Resource Manager-sjabloon.

  2. Breng de benodigde wijzigingen aan in de sjabloon, zoals het bijwerken van alle exemplaren van de naam en de locatie voor de gemigreerde hub. Werk voor alle resources in de sjabloon die wordt gebruikt voor eindpunten voor berichtroutering de sleutel in de sjabloon voor die resource bij.

  3. Importeer de sjabloon in een nieuwe resourcegroep op de nieuwe locatie. Met deze stap maakt u de nieuwe IoT-hub.

  4. Fouten opsporen indien nodig.

  5. Voeg iets toe dat niet is geëxporteerd naar de sjabloon.

    Consumentengroepen worden bijvoorbeeld niet geëxporteerd naar de sjabloon. U moet de consumentengroepen handmatig toevoegen aan de sjabloon of de Azure-portal gebruiken nadat de hub is gemaakt.

  6. Kopieer de apparaten van de oorspronkelijke hub naar de nieuwe hub. Dit proces wordt behandeld in de sectie De apparaten beheren die zijn geregistreerd bij de IoT-hub.

Berichtroutering afhandelen

Als uw hub berichtroutering gebruikt, bevat het exporteren van de sjabloon voor de hub de routeringsconfiguratie, maar niet de resources zelf. Als u de IoT-hub naar een nieuwe regio migreert, moet u kiezen of u de routeringsresources ook naar de nieuwe locatie wilt verplaatsen of ze wilt behouden en ze als zodanig wilt blijven gebruiken. Er kan een kleine prestatietreffer optreden van routeringsberichten naar eindpuntresources in een andere regio.

Als de hub berichtroutering gebruikt, hebt u twee opties.

  • Verplaats de resources die worden gebruikt voor de routeringseindpunten naar de nieuwe locatie.

    1. Maak de nieuwe resources zelf handmatig in Azure Portal of met behulp van Resource Manager-sjablonen.

    2. Wijzig de naam van alle resources wanneer u ze op de nieuwe locatie maakt, omdat ze wereldwijd unieke namen vereisen.

    3. Werk de resourcenamen en de resourcesleutels in de sjabloon van de nieuwe hub bij voordat u de nieuwe hub maakt. De resources moeten aanwezig zijn wanneer de nieuwe hub wordt gemaakt.

  • Verplaats de resources die worden gebruikt voor de routeringseindpunten niet. Gebruik ze in-place.

    1. In de stap waarin u de sjabloon bewerkt, moet u de sleutels voor elke routeringsresource ophalen en deze in de sjabloon plaatsen voordat u de nieuwe hub maakt.

    2. De hub verwijst nog steeds naar de oorspronkelijke routeringsbronnen en stuurt berichten naar deze resources zoals geconfigureerd. U hebt een kleine prestatietreffer omdat de hub en de resources voor het routeringseindpunt zich niet op dezelfde locatie bevinden.

De hub migreren naar een andere regio voorbereiden

Deze sectie bevat specifieke instructies voor het migreren van de hub.

De oorspronkelijke hub exporteren naar een resourcesjabloon

  1. Meld u aan bij het Azure-portaal.

  2. Navigeer naar de IoT-hub die u wilt verplaatsen.

  3. Selecteer Sjabloon exporteren in de lijst met eigenschappen en instellingen voor de hub.

    Schermopname van de opdracht voor het exporteren van de sjabloon voor de IoT-hub.

  4. Selecteer Downloaden om de sjabloon te downloaden. Sla het bestand ergens op waar u het opnieuw kunt vinden.

    Schermopname van de opdracht voor het downloaden van de sjabloon voor de IoT-hub.

De sjabloon weergeven

Ga naar de gedownloade sjabloon, die is opgenomen in een zip-bestand. Pak het zip-bestand uit en zoek het bestand met de naam template.json.

Het volgende voorbeeld is voor een algemene hub zonder routeringsconfiguratie. Het is een S1-laaghub (met 1 eenheid) genaamd ContosoHub in regio westus:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "IotHubs_ContosoHub_connectionString": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_name": {
            "defaultValue": "ContosoHub",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2021-07-01",
            "name": "[parameters('IotHubs_ContosoHub_name')]",
            "location": "westus",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "capacity": 1
            },
            "identity": {
                "type": "None"
            },
            "properties": {
                "ipFilterRules": [],
                "eventHubEndpoints": {
                    "events": {
                        "retentionTimeInDays": 1,
                        "partitionCount": 4
                    }
                },
                "routing": {
                    "endpoints": {
                        "serviceBusQueues": [],
                        "serviceBusTopics": [],
                        "eventHubs": [],
                        "storageContainers": []
                    },
                    "routes": [],
                    "fallbackRoute": {
                        "name": "$fallback",
                        "source": "DeviceMessages",
                        "condition": "true",
                        "endpointNames": [
                            "events"
                        ],
                        "isEnabled": true
                    }
                },
                "storageEndpoints": {
                    "$default": {
                        "sasTtlAsIso8601": "PT1H",
                        "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
                        "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
                    }
                },
                "messagingEndpoints": {
                    "fileNotifications": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "enableFileUploadNotifications": false,
                "cloudToDevice": {
                    "maxDeliveryCount": 10,
                    "defaultTtlAsIso8601": "PT1H",
                    "feedback": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "features": "None",
                "disableLocalAuth": false,
                "allowedFqdnList": []
            }
        }
    ]
}

De sjabloon bewerken

U moet enkele wijzigingen aanbrengen voordat u de sjabloon kunt gebruiken om de nieuwe hub in de nieuwe regio te maken. Gebruik Visual Studio Code of een teksteditor om de sjabloon te bewerken.

De hubnaam en -locatie bewerken

  1. Verwijder in de sectie Parameters de ... connectionString en ... containerName-parameters .

    "IotHubs_ContosoHub_connectionString": {
        "type": "SecureString"
    },
    "IotHubs_ContosoHub_containerName": {
        "type": "SecureString"
    },
    
  2. Verwijder in de sectie Eigenschappen de eigenschap storageEndpoints .

    "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
    },
    
  3. Als u de hub naar een nieuwe regio verplaatst, wijzigt u de locatie-eigenschap onder resources.

    "location": "westus",
    

De resources voor het routeringseindpunt bijwerken

Wanneer u de Resource Manager-sjabloon exporteert voor een hub waarvoor routering is geconfigureerd, ziet u dat de sleutels voor deze resources niet zijn opgegeven in de geëxporteerde sjabloon. Hun plaatsing wordt aangeduid met sterretjes. U moet ze invullen door naar die resources in de portal te gaan en de sleutels op te halen voordat u de sjabloon van de nieuwe hub importeert en de hub maakt.

Als u ook de routeringsresources hebt verplaatst, werkt u ook de naam, id en resourcegroep van elk eindpunt bij.

  • Voor eindpunten met verificatie op basis van sleutels haalt u de sleutels op die vereist zijn voor een van de routeringsbronnen en plaatst u deze in de sjabloon. U kunt de sleutel ophalen uit elke resource in Azure Portal.
  • Voor eindpunten met verificatie op basis van identiteit:
    • Degenen die een door de gebruiker toegewezen beheerde identiteit gebruiken, hebben de waarde userAssignedIdentity ingevuld met de identiteits-id-informatie als parameter.
    • Gebruikers die een door het systeem toegewezen beheerde identiteit gebruiken, kunnen niet worden gemigreerd. Verwijder deze eindpunten en de bijbehorende routes uit de sjabloon en noteer deze om ze opnieuw te maken in de nieuwe IoT-hub.

De nieuwe hub maken door de sjabloon te laden

Maak de nieuwe hub met behulp van de bewerkte sjabloon. Als u resources wilt routeren die worden verplaatst, moeten de resources worden ingesteld op de nieuwe locatie en moeten de verwijzingen in de sjabloon overeenkomen. Als u de routeringsbronnen niet verplaatst, moeten ze zich in de sjabloon met de bijgewerkte sleutels hebben.

  1. Meld u aan bij het Azure-portaal.

  2. Selecteer Een resource maken.

  3. Zoek en selecteer sjabloonimplementatie (implementeren met aangepaste sjablonen) in het zoekvak. Selecteer Maken op het scherm voor de sjabloonimplementatie.

  4. Selecteer op de pagina Aangepaste implementatie uw eigen sjabloon maken in de editor, waarmee u uw sjabloon vanuit een bestand kunt uploaden.

    Schermopname van de opdracht voor het bouwen van uw eigen sjabloon.

  5. Selecteer Bestand laden.

    Schermopname van de opdracht voor het uploaden van een sjabloonbestand.

  6. Blader naar de nieuwe sjabloon die u hebt bewerkt en selecteer deze en selecteer vervolgens Openen. De sjabloon wordt geladen in het bewerkingsvenster. Selecteer Opslaan.

    Schermopname van het laden van de sjabloon.

  7. Vul de volgende velden in op de aangepaste implementatiepagina.

    Abonnement: selecteer het abonnement dat u wilt gebruiken.

    Resourcegroep: Selecteer een bestaande resourcegroep of maak een nieuwe.

    Regio: Als u een bestaande resourcegroep hebt geselecteerd, wordt de regio ingevuld zodat deze overeenkomt met de locatie van de resourcegroep. Als u een nieuwe resourcegroep hebt gemaakt, is dit de locatie.

    Hubnaam: Geef de nieuwe hub een naam.

    Schermopname van de pagina aangepaste implementatie

  8. Selecteer de knop Controleren en maken.

  9. Selecteer de knop Maken. De portal valideert uw sjabloon en implementeert uw nieuwe hub. Als u routeringsconfiguratiegegevens hebt, worden deze opgenomen in de nieuwe hub, maar verwijst deze naar de resources op de vorige locatie.

    Schermopname van de uiteindelijke pagina voor aangepaste implementatie

De apparaten beheren die zijn geregistreerd bij de IoT-hub

Nu uw nieuwe hub actief is, moet u alle apparaten van de oorspronkelijke hub naar de nieuwe kopiëren.

Er zijn meerdere manieren om de apparaten te kopiëren. U hebt oorspronkelijk DPS (Device Provisioning Service) gebruikt om de apparaten in te richten of niet. Als u dat hebt gedaan, is dit proces niet moeilijk. Als u dat niet hebt gedaan, kan dit proces ingewikkeld zijn.

Als u DPS niet hebt gebruikt om uw apparaten in te richten, kunt u de volgende sectie overslaan en beginnen met Importeren/exporteren gebruiken om de apparaten naar de nieuwe hub te verplaatsen.

DPS gebruiken om de apparaten opnieuw in te richten in de nieuwe hub

Zie Apparaten opnieuw inrichten als u DPS wilt gebruiken om de apparaten naar de nieuwe locatie te verplaatsen. Wanneer u klaar bent, kunt u de apparaten bekijken in Azure Portal en controleren of ze zich op de nieuwe locatie bevinden.

Ga naar de nieuwe hub met behulp van Azure Portal. Selecteer uw hub en selecteer vervolgens IoT-apparaten. U ziet de apparaten die opnieuw zijn ingerichte voor de nieuwe hub. U kunt ook de eigenschappen voor de nieuwe hub bekijken.

Als u routering hebt geïmplementeerd, test u deze en controleert u of uw berichten correct naar de resources worden doorgestuurd.

De wijzigingen terugdraaien na het gebruik van DPS

Als u de wijzigingen wilt terugdraaien, moet u de apparaten opnieuw inrichten van de nieuwe hub naar de oude.

U bent nu klaar met het migreren van uw hub en de bijbehorende apparaten. U kunt doorgaan naar Opschonen.

Import-export gebruiken om de apparaten naar de nieuwe hub te verplaatsen

De toepassing is gericht op .NET Core, zodat u deze kunt uitvoeren op Windows of Linux. U kunt het voorbeeld downloaden, uw verbindingsreeks s ophalen, de vlaggen instellen voor welke bits u wilt uitvoeren en uitvoeren. U kunt dit doen zonder dat u de code ooit hoeft te openen.

Het voorbeeld downloaden

Gebruik de ImportExportDevicesSample van de IoT C#-SDK. Kloon of download de opslagplaats om de voorbeeldcode op te halen.

Opties

Als u de toepassing wilt uitvoeren, geeft u drie verbindingsreeks s en vijf opties op. U geeft deze gegevens door als opdrachtregelargumenten of gebruikt omgevingsvariabelen of gebruikt een combinatie van de twee. We geven de opties door als opdrachtregelargumenten en de verbindingsreeks s als omgevingsvariabelen. De reden hiervoor is dat de verbindingsreeks s lang en onaangevig zijn en waarschijnlijk niet veranderen, maar u kunt de opties misschien wijzigen en de toepassing meer dan één keer uitvoeren. Als u de waarde van een omgevingsvariabele wilt wijzigen, moet u het opdrachtvenster en Visual Studio of Visual Studio Code sluiten, afhankelijk van wat u gebruikt.

Hier volgen de vijf opties die u opgeeft wanneer u de toepassing uitvoert:

  • addDevices (argument 1): stel deze optie True in op als u virtuele apparaten wilt toevoegen die voor u worden gegenereerd. Deze apparaten worden toegevoegd aan de bronhub. Stel ook numToAdd (argument 2) in om op te geven hoeveel apparaten u wilt toevoegen. Het maximum aantal apparaten dat u kunt registreren bij een hub is 1 miljoen. Het doel van deze optie is voor testen. U kunt een specifiek aantal apparaten genereren en deze vervolgens naar een andere hub kopiëren.

  • copyDevices (argument 3): stel deze optie in om True de apparaten van de ene hub naar de andere te kopiëren.

  • deleteSourceDevices (argument 4): stel deze optie in om alle apparaten te True verwijderen die zijn geregistreerd bij de bronhub. We raden u aan te wachten totdat u zeker weet dat alle apparaten zijn overgedragen voordat u dit uitvoert. Nadat u de apparaten hebt verwijderd, kunt u ze niet meer terughalen.

  • deleteDestDevices (argument 5): stel deze optie in om alle apparaten te True verwijderen die zijn geregistreerd bij de doelhub. U kunt dit doen als u de apparaten meerdere keren wilt kopiëren.

De basisopdracht is dotnet-uitvoering, waarmee .NET het lokale csproj-bestand moet worden gebouwd en vervolgens moet worden uitgevoerd. U voegt de opdrachtregelargumenten toe aan het einde voordat u deze uitvoert.

Uw opdrachtregel ziet er als volgt uit:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices

    // Add 1000 devices, don't copy them to the other hub, or delete them. 
    // The first argument is true, numToAdd is 50, and the other arguments are false.
    dotnet run true 1000 false false false 

    // Copy the devices you just added to the other hub; don't delete anything.
    // The first argument is false, numToAdd is 0, copy-devices is true, and the delete arguments are both false
    dotnet run false 0 true false false 

Omgevingsvariabelen gebruiken voor de verbindingsreeks s

  1. Als u het voorbeeld wilt uitvoeren, hebt u de verbindingsreeks nodig naar de oude en nieuwe IoT-hubs en naar een opslagaccount dat u kunt gebruiken voor tijdelijke werkbestanden. We slaan de waarden voor deze verbindingsreeks s op in omgevingsvariabelen.

  2. Meld u aan bij Azure Portal om de verbindingsreeks waarden op te halen.

  3. Plaats de verbindingsreeks ergens die u kunt ophalen, zoals Kladblok. Als u het volgende kopieert, kunt u de verbindingsreeks s rechtstreeks plakken waar ze naartoe gaan. Voeg geen spaties toe rond het gelijkteken of wijzigt de naam van de variabele. U hebt ook geen dubbele aanhalingstekens nodig rond de verbindingsreeks s. Als u aanhalingstekens plaatst rond het opslagaccount verbindingsreeks, mislukt het script.

    Stel de omgevingsvariabelen in Windows in:

    SET IOTHUB_CONN_STRING=<put connection string to original IoT hub here>
    SET DEST_IOTHUB_CONN_STRING=<put connection string to destination IoT hub here>
    SET STORAGE_ACCT_CONN_STRING=<put connection string to the storage account here>
    

    Stel de omgevingsvariabelen in Linux in:

    export IOTHUB_CONN_STRING="<put connection string to original IoT hub here>"
    export DEST_IOTHUB_CONN_STRING="<put connection string to destination IoT hub here>"
    export STORAGE_ACCT_CONN_STRING="<put connection string to the storage account here>"
    
  4. Ga voor de IoT-hub-verbindingsreeks s naar elke hub in de portal. U kunt zoeken in Resources voor de hub. Als u de resourcegroep kent, kunt u naar Resourcegroepen gaan, uw resourcegroep selecteren en vervolgens de hub selecteren in de lijst met assets in die resourcegroep.

  5. Selecteer Beleid voor gedeelde toegang in de instellingen voor de hub, selecteer vervolgens iothubowner en kopieer een van de verbindingsreeks s. Doe hetzelfde voor de doelhub. Voeg ze toe aan de juiste SET-opdrachten.

  6. Zoek voor het opslagaccount verbindingsreeks het opslagaccount in Resources of onder de resourcegroep en open het.

  7. Selecteer in de sectie Instellingen de optie Toegangssleutels en kopieer een van de verbindingsreeks s. Plaats de verbindingsreeks in het tekstbestand voor de juiste SET-opdracht.

U hebt nu de omgevingsvariabelen in een bestand met de SET-opdrachten en u weet wat uw opdrachtregelargumenten zijn. Laten we het voorbeeld uitvoeren.

De voorbeeldtoepassing uitvoeren en opdrachtregelargumenten gebruiken

  1. Open een opdrachtpromptvenster. Selecteer Windows en typ het command prompt opdrachtpromptvenster.

  2. Kopieer de opdrachten die de omgevingsvariabelen instellen, één voor één, en plak deze in het opdrachtpromptvenster en selecteer Enter. Wanneer u klaar bent, typt SET u het opdrachtpromptvenster om uw omgevingsvariabelen en de bijbehorende waarden te zien. Nadat u deze hebt gekopieerd naar het opdrachtpromptvenster, hoeft u ze niet meer te kopiëren, tenzij u een nieuw opdrachtpromptvenster opent.

  3. Wijzig de mappen in het opdrachtpromptvenster totdat u zich in ./ImportExportDevicesSample bevindt (waarbij het bestand ImportExportDevicesSample.csproj bestaat). Typ vervolgens het volgende en neem de opdrachtregelargumenten op.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    dotnet run arg1 arg2 arg3 arg4 arg5
    

    Met de dotnet-opdracht wordt de toepassing gebouwd en uitgevoerd. Omdat u de opties doorgeeft wanneer u de toepassing uitvoert, kunt u de waarden ervan wijzigen telkens wanneer u de toepassing uitvoert. U kunt deze bijvoorbeeld één keer uitvoeren en nieuwe apparaten maken, het opnieuw uitvoeren en deze apparaten kopiëren naar een nieuwe hub, enzovoort. U kunt ook alle stappen in dezelfde uitvoering uitvoeren, hoewel u wordt aangeraden geen apparaten te verwijderen totdat u zeker weet dat u klaar bent met de migratie. Hier volgt een voorbeeld waarmee 1000 apparaten worden gemaakt en deze vervolgens naar de andere hub worden gekopieerd.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    
    // Add 1000 devices, don't copy them to the other hub or delete them. 
    dotnet run true 1000 false false false 
    
    // Do not add any devices. Copy the ones you just created to the other hub; don't delete anything.
    dotnet run false 0 true false false 
    

    Nadat u hebt gecontroleerd of de apparaten zijn gekopieerd, kunt u de apparaten als volgt verwijderen uit de bronhub:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    // Delete the devices from the source hub.
    dotnet run false 0 false true false 
    

De voorbeeldtoepassing uitvoeren met Visual Studio

  1. Als u de toepassing in Visual Studio wilt uitvoeren, wijzigt u de huidige map in de map waarin het azureiot.sln-bestand zich bevindt. Voer vervolgens deze opdracht uit in het opdrachtpromptvenster om de oplossing in Visual Studio te openen. U moet dit doen in hetzelfde opdrachtvenster waarin u de omgevingsvariabelen instelt, zodat deze variabelen bekend zijn.

    azureiot.sln
    
  2. Klik met de rechtermuisknop op het project ImportExportDevicesSample en selecteer Instellen als opstartproject.

  3. Stel de variabelen bovenaan Program.cs in de map ImportExportDevicesSample in voor de vijf opties.

    // Add randomly created devices to the source hub.
    private static bool addDevices = true;
    //If you ask to add devices, this will be the number added.
    private static int numToAdd = 0; 
    // Copy the devices from the source hub to the destination hub.
    private static bool copyDevices = false;
    // Delete all of the devices from the source hub. (It uses the IoTHubConnectionString).
    private static bool deleteSourceDevices = false;
    // Delete all of the devices from the destination hub. (Uses the DestIotHubConnectionString).
    private static bool deleteDestDevices = false;
    
  4. Selecteer F5 om de toepassing uit te voeren. Nadat de uitvoering is voltooid, kunt u de resultaten bekijken.

De resultaten bekijken

U kunt de apparaten bekijken in Azure Portal en controleren of ze zich op de nieuwe locatie bevinden.

  1. Ga naar de nieuwe hub met behulp van Azure Portal. Selecteer uw hub en selecteer vervolgens IoT-apparaten. U ziet de apparaten die u van de oude hub naar de nieuwe hub hebt gekopieerd. U kunt ook de eigenschappen voor de nieuwe hub bekijken.

  2. Controleer op import-/exportfouten door naar het Azure-opslagaccount in Azure Portal te gaan en naar de devicefiles container voor de ImportErrors.logcontainer te zoeken. Als dit bestand leeg is (de grootte is 0), zijn er geen fouten opgetreden. Als u hetzelfde apparaat meerdere keren probeert te importeren, wordt het apparaat de tweede keer geweigerd en wordt er een foutbericht aan het logboekbestand toegevoegd.

De wijzigingen doorvoeren

Op dit moment hebt u uw hub gekopieerd naar de nieuwe locatie en de apparaten naar de nieuwe hub gemigreerd. Nu moet u wijzigingen aanbrengen, zodat de apparaten met de nieuwe hub werken.

Als u de wijzigingen wilt doorvoeren, volgt u de stappen die u moet uitvoeren:

  • Werk elk apparaat bij om de naam van de IoT Hub-host te wijzigen zodat deze de naam van de IoT Hub-host verwijst naar de nieuwe hub. U moet dit doen met dezelfde methode die u hebt gebruikt toen u het apparaat voor het eerst inrichtte.

  • Wijzig alle toepassingen die naar de oude hub verwijzen om naar de nieuwe hub te verwijzen.

  • Nadat u klaar bent, moet de nieuwe hub actief zijn. De oude hub mag geen actieve apparaten hebben en hebben een niet-verbonden status.

De wijzigingen terugdraaien

Als u besluit de wijzigingen terug te draaien, volgt u de volgende stappen:

  • Werk elk apparaat bij om de Hostnaam van de IoT Hub te wijzigen zodat deze naar de Hostnaam van de IoT Hub voor de oude hub verwijst. U moet dit doen met dezelfde methode die u hebt gebruikt toen u het apparaat voor het eerst inrichtte.

  • Wijzig alle toepassingen die naar de nieuwe hub verwijzen om naar de oude hub te verwijzen. Als u bijvoorbeeld Azure Analytics gebruikt, moet u mogelijk uw Azure Stream Analytics-invoer opnieuw configureren.

  • Verwijder de nieuwe hub.

  • Als u routeringsbronnen hebt, moet de configuratie op de oude hub nog steeds verwijzen naar de juiste routeringsconfiguratie en moet deze resources gebruiken nadat de hub opnieuw is opgestart.

De resultaten controleren

Als u de resultaten wilt controleren, wijzigt u uw IoT-oplossing zodat deze verwijst naar uw hub op de nieuwe locatie en voert u deze uit. Met andere woorden, voer dezelfde acties uit met de nieuwe hub die u met de vorige hub hebt uitgevoerd en zorg ervoor dat ze correct werken.

Als u routering hebt geïmplementeerd, test u deze en controleert u of uw berichten correct naar de resources worden doorgestuurd.

Opschonen

Schoon pas op als u zeker weet dat de nieuwe hub actief is en de apparaten correct werken. Zorg er ook voor dat u de routering test als u die functie gebruikt. Wanneer u klaar bent, schoont u de oude resources op door de volgende stappen uit te voeren:

  • Als u dat nog niet hebt gedaan, verwijdert u de oude hub. Hiermee verwijdert u alle actieve apparaten uit de hub.

  • Als u routeringsbronnen hebt die u naar de nieuwe locatie hebt verplaatst, kunt u de oude routeringsbronnen verwijderen.

Volgende stappen

U hebt een IoT-hub gemigreerd naar een nieuwe hub in een nieuwe regio, compleet met de apparaten. Zie IoT Hub-apparaatidentiteiten bulksgewijs importeren en exporteren voor meer informatie over het uitvoeren van bulkbewerkingen op het identiteitsregister in een IoT-hub.