Udostępnij za pośrednictwem


Jak ręcznie migrować centrum Azure IoT Hub przy użyciu szablonu usługi Azure Resource Manager

Użyj witryny Azure Portal, szablonów usługi Azure Resource Manager i zestawów SDK usługi Azure IoT Hub, aby przeprowadzić migrację centrum IoT do nowego regionu, nowej warstwy lub nowej konfiguracji.

Kroki opisane w tym artykule są przydatne, jeśli chcesz:

  • Uaktualnij warstwę bezpłatną do centrum IoT w warstwie Podstawowa lub Standardowa.
  • Przenieś centrum IoT do nowego regionu.
  • Eksportowanie informacji o stanie centrum IoT w celu utworzenia kopii zapasowej.
  • Zwiększ liczbę partycji dla centrum IoT.
  • Konfigurowanie centrum na potrzeby programowania, a nie środowiska produkcyjnego.
  • Włącz niestandardową implementację wysokiej dostępności w wielu centrach. Aby uzyskać więcej informacji, zobacz sekcję Jak osiągnąć wysoką dostępność w wielu regionach w usłudze IoT Hub i odzyskiwanie po awarii.

Aby przeprowadzić migrację centrum, potrzebna jest subskrypcja z dostępem administracyjnym do oryginalnego centrum. Nowe centrum można umieścić w nowej grupie zasobów i regionie w tej samej subskrypcji co oryginalne centrum, a nawet w nowej subskrypcji. Po prostu nie można użyć tej samej nazwy, ponieważ nazwa centrum musi być globalnie unikatowa.

Porównanie kroków migracji automatycznej i ręcznej

Wynik tego artykułu jest podobny do tego, jak automatycznie migrować centrum IoT Hub przy użyciu interfejsu wiersza polecenia platformy Azure, ale z innym procesem. Przed rozpoczęciem zdecyduj, który proces jest odpowiedni dla danego scenariusza.

  • Proces ręczny (ten artykuł):

    • Migruje rejestr urządzeń oraz informacje o routingu i punkcie końcowym. Musisz ręcznie odtworzyć inne szczegóły konfiguracji w nowym centrum IoT.
    • Jest szybszy w przypadku migrowania dużej liczby urządzeń (na przykład ponad 100 000).
    • Używa konta usługi Azure Storage do transferu rejestru urządzeń.
    • Czyszczenie parametry połączenia dla punktów końcowych routingu i przekazywania plików, które używają uwierzytelniania opartego na kluczach z danych wyjściowych szablonu usługi ARM, i należy ręcznie dodać je z powrotem.
  • Proces interfejsu wiersza polecenia platformy Azure:

    • Migruje rejestr urządzeń, informacje o routingu i punkcie końcowym oraz inne szczegóły konfiguracji, takie jak wdrożenia usługi IoT Edge lub konfiguracje automatycznego zarządzania urządzeniami.
    • Jest łatwiej migrować niewielką liczbę urządzeń (na przykład do 10 000).
    • Nie wymaga konta usługi Azure Storage.
    • Zbiera parametry połączenia na potrzeby routingu i przekazywania plików punktów końcowych korzystających z uwierzytelniania opartego na kluczach i uwzględnia je w danych wyjściowych szablonu usługi ARM.

Kwestie do rozważenia

Przed migracją centrum IoT Należy wziąć pod uwagę kilka kwestii.

  • Upewnij się, że wszystkie funkcje dostępne w oryginalnej lokalizacji są również dostępne w nowej lokalizacji. Niektóre usługi są dostępne w wersji zapoznawczej, a nie wszystkie funkcje są dostępne wszędzie.

  • Nie usuwaj oryginalnych zasobów przed utworzeniem i zweryfikowaniem zmigrowanej wersji. Po usunięciu koncentratora nie będzie można go odzyskać, aby sprawdzić ustawienia lub dane, aby upewnić się, że centrum jest replikowane poprawnie.

  • Dane oryginalnego centrum IoT Nie są migrowane. Te dane obejmują komunikaty urządzeń, polecenia typu chmura-urządzenie (C2D) oraz informacje dotyczące zadań, takie jak harmonogramy i historia. Metryki i wyniki rejestrowania nie są również migrowane.

  • Należy zaplanować przestój migracji. Klonowanie urządzeń do nowego centrum zajmuje trochę czasu. Jeśli używasz metody Import/Export, testy porównawcze wykazały, że przeniesienie 500 000 urządzeń może potrwać około dwóch godzin, a cztery godziny na przeniesienie miliona urządzeń.

  • Urządzenia można kopiować do nowego centrum bez zamykania lub zmieniania urządzeń.

    • Jeśli urządzenia zostały pierwotnie aprowidowane przy użyciu usługi DPS, zaktualizuj swoje rejestracje, aby wskazać nowe centrum IoT. Następnie ponownie aprowizacja urządzeń w celu zaktualizowania informacji o połączeniu przechowywanych na każdym urządzeniu.

    • W przeciwnym razie należy użyć metody import/export, aby przenieść urządzenia, a następnie zmodyfikować urządzenia w celu użycia nowego centrum. Możesz na przykład skonfigurować urządzenie do korzystania z nazwy hosta usługi IoT Hub z żądanych właściwości bliźniaczej reprezentacji. Urządzenie przyjmuje nazwę hosta usługi IoT Hub, odłącz urządzenie od starego centrum i ponownie połącz je z nowym.

  • Należy zaktualizować wszystkie certyfikaty, aby można było ich używać z nowymi zasobami. Ponadto prawdopodobnie masz centrum zdefiniowane w tabeli DNS gdzieś i trzeba zaktualizować te informacje DNS.

  • Nie można migrować punktów końcowych korzystających z tożsamości zarządzanych przypisanych przez system do uwierzytelniania. Po migracji należy przyznać nowemu usłudze IoT Hub przypisanej przez system tożsamości zarządzanej dostęp do zasobów punktu końcowego, a następnie utworzyć ponownie punkty końcowe.

Metodologia

Jest to ogólna metoda, która jest zalecana do migrowania centrum IoT.

  1. Wyeksportuj centrum i jego ustawienia do szablonu usługi Resource Manager.

  2. Wprowadź niezbędne zmiany w szablonie, takie jak aktualizowanie wszystkich wystąpień nazwy i lokalizacji zmigrowanego centrum. W przypadku wszystkich zasobów w szablonie używanych do obsługi punktów końcowych routingu komunikatów zaktualizuj klucz w szablonie dla tego zasobu.

  3. Zaimportuj szablon do nowej grupy zasobów w nowej lokalizacji. Ten krok powoduje utworzenie nowego centrum IoT.

  4. Debuguj zgodnie z potrzebami.

  5. Dodaj wszystkie elementy, które nie zostały wyeksportowane do szablonu.

    Na przykład grupy odbiorców nie są eksportowane do szablonu. Musisz ręcznie dodać grupy odbiorców do szablonu lub użyć witryny Azure Portal po utworzeniu centrum.

  6. Skopiuj urządzenia z oryginalnego centrum do nowego centrum. Ten proces znajduje się w sekcji Zarządzanie urządzeniami zarejestrowanymi w centrum IoT Hub.

Jak obsługiwać routing komunikatów

Jeśli centrum korzysta z routingu komunikatów, eksportowanie szablonu dla centrum obejmuje konfigurację routingu, ale nie obejmuje samych zasobów. Jeśli przeprowadzasz migrację centrum IoT do nowego regionu, musisz wybrać, czy przenieść zasoby routingu do nowej lokalizacji, czy też pozostawić je na miejscu i nadal używać ich w stanie rzeczywistym. W innym regionie może wystąpić niewielka wydajność z routingu komunikatów do zasobów punktu końcowego.

Jeśli centrum korzysta z routingu komunikatów, masz dwie opcje.

  • Przenieś zasoby używane na potrzeby punktów końcowych routingu do nowej lokalizacji.

    1. Utwórz nowe zasoby ręcznie w witrynie Azure Portal lub przy użyciu szablonów usługi Resource Manager.

    2. Zmień nazwę wszystkich zasobów podczas tworzenia ich w nowej lokalizacji, ponieważ wymagają one globalnie unikatowych nazw.

    3. Przed utworzeniem nowego centrum zaktualizuj nazwy zasobów i klucze zasobów w szablonie nowego centrum. Zasoby powinny być obecne podczas tworzenia nowego centrum.

  • Nie przenosij zasobów używanych dla punktów końcowych routingu. Używaj ich w miejscu.

    1. W kroku, w którym edytujesz szablon, należy pobrać klucze dla każdego zasobu routingu i umieścić je w szablonie przed utworzeniem nowego centrum.

    2. Centrum nadal odwołuje się do oryginalnych zasobów routingu i kieruje do nich komunikaty zgodnie z konfiguracją. Wydajność będzie niewielka, ponieważ centrum i zasoby punktu końcowego routingu nie są w tej samej lokalizacji.

Przygotowanie do migracji koncentratora do innego regionu

Ta sekcja zawiera szczegółowe instrukcje dotyczące migrowania centrum.

Eksportowanie oryginalnego centrum do szablonu zasobu

  1. Zaloguj się w witrynie Azure Portal.

  2. Przejdź do centrum IoT, które chcesz przenieść.

  3. Wybierz pozycję Eksportuj szablon z listy właściwości i ustawień centrum.

    Zrzut ekranu przedstawiający polecenie eksportowania szablonu dla centrum IoT Hub.

  4. Wybierz pozycję Pobierz , aby pobrać szablon. Zapisz plik w miejscu, w którym można go znaleźć ponownie.

    Zrzut ekranu przedstawiający polecenie pobierania szablonu dla centrum IoT.

Wyświetlanie szablonu

Przejdź do pobranego szablonu, który znajduje się w pliku zip. Wyodrębnij plik zip i znajdź plik o nazwie template.json.

Poniższy przykład dotyczy ogólnego centrum bez konfiguracji routingu. Jest to centrum warstwy S1 (z 1 jednostką) o nazwie ContosoHub w regionie 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": []
            }
        }
    ]
}

Edytowanie szablonu

Zanim będzie można użyć szablonu do utworzenia nowego centrum w nowym regionie, musisz wprowadzić pewne zmiany. Edytowanie szablonu przy użyciu programu Visual Studio Code lub edytora tekstów.

Edytowanie nazwy centrum i lokalizacji

  1. W sekcji parameters usuń element ... connectionString i ... parametry containerName.

    "IotHubs_ContosoHub_connectionString": {
        "type": "SecureString"
    },
    "IotHubs_ContosoHub_containerName": {
        "type": "SecureString"
    },
    
  2. W sekcji właściwości usuń właściwość storageEndpoints.

    "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
    },
    
  3. Jeśli przenosisz centrum do nowego regionu, zmień właściwość location w obszarze zasobów.

    "location": "westus",
    

Aktualizowanie zasobów punktu końcowego routingu

Podczas eksportowania szablonu usługi Resource Manager dla centrum, w którym skonfigurowano routing, zobaczysz, że klucze dla tych zasobów nie są podane w wyeksportowanym szablonie. Ich umieszczanie jest oznaczone gwiazdkami. Należy je wypełnić, przechodząc do tych zasobów w portalu i pobierając klucze przed zaimportowaniem szablonu nowego centrum i utworzeniem centrum.

Jeśli również przeniesiono zasoby routingu, zaktualizuj także nazwę, identyfikator i grupę zasobów każdego punktu końcowego.

  • W przypadku punktów końcowych z uwierzytelnianiem opartym na kluczach pobierz klucze wymagane dla dowolnego zasobu routingu i umieść je w szablonie. Klucz można pobrać z każdego zasobu w witrynie Azure Portal.
  • W przypadku punktów końcowych z uwierzytelnianiem opartym na tożsamościach:
    • Osoby korzystające z tożsamości zarządzanej przypisanej przez użytkownika mają wartość userAssignedIdentity wypełniona informacjami o identyfikatorze tożsamości jako parametrem.
    • Nie można migrować tożsamości zarządzanej przypisanej przez system. Usuń te punkty końcowe i powiązane trasy z szablonu i zanotuj je, aby utworzyć je ponownie w nowym centrum IoT.

Tworzenie nowego centrum przez załadowanie szablonu

Utwórz nowe centrum przy użyciu edytowanego szablonu. Jeśli masz zasoby routingu, które mają zostać przeniesione, zasoby powinny zostać skonfigurowane w nowej lokalizacji i odwołania w szablonie zaktualizowane tak, aby były zgodne. Jeśli nie przenosisz zasobów routingu, powinny one znajdować się w szablonie ze zaktualizowanymi kluczami.

  1. Zaloguj się w witrynie Azure Portal.

  2. Wybierz pozycję Utwórz zasób.

  3. W polu wyszukiwania wyszukaj i wybierz wdrożenie szablonu (wdróż przy użyciu szablonów niestandardowych). Na ekranie wdrożenia szablonu wybierz pozycję Utwórz.

  4. Na stronie Wdrożenie niestandardowe wybierz pozycję Skompiluj własny szablon w edytorze, co umożliwia przekazanie szablonu z pliku.

    Zrzut ekranu przedstawiający polecenie służące do tworzenia własnego szablonu.

  5. Wybierz pozycję Załaduj plik.

    Zrzut ekranu przedstawiający polecenie przekazywania pliku szablonu.

  6. Wyszukaj nowy szablon, który został edytowany i wybierz go, a następnie wybierz pozycję Otwórz. Ładuje on szablon w oknie edycji. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający ładowanie szablonu.

  7. Wypełnij następujące pola na stronie wdrożenia niestandardowego.

    Subskrypcja: wybierz subskrypcję, której chcesz użyć.

    Grupa zasobów: wybierz istniejącą grupę zasobów lub utwórz nową.

    Region: Jeśli wybrano istniejącą grupę zasobów, region zostanie wypełniony, aby był zgodny z lokalizacją grupy zasobów. Jeśli utworzono nową grupę zasobów, jest to jego lokalizacja.

    Nazwa centrum: nadaj nowemu koncentratorowi nazwę.

    Zrzut ekranu przedstawiający stronę wdrożenia niestandardowego

  8. Wybierz przycisk Przejrzyj i utwórz.

  9. Zaznacz przycisk Utwórz. Portal weryfikuje szablon i wdraża nowe centrum. Jeśli masz dane konfiguracji routingu, jest on uwzględniony w nowym koncentratonie, ale wskazuje zasoby w poprzedniej lokalizacji.

    Zrzut ekranu przedstawiający ostatnią stronę wdrożenia niestandardowego

Zarządzanie urządzeniami zarejestrowanymi w centrum IoT

Teraz, gdy masz już uruchomione centrum, musisz skopiować wszystkie urządzenia z oryginalnego centrum do nowego.

Istnieje wiele sposobów kopiowania urządzeń. Usługa Device Provisioning Service (DPS) została pierwotnie użyta do aprowizacji urządzeń lub nie. Jeśli tak, ten proces nie jest trudny. Jeśli tego nie zrobisz, ten proces może być skomplikowany.

Jeśli nie użyto usługi DPS do aprowizacji urządzeń, możesz pominąć następną sekcję i rozpocząć od opcji Użyj importu/eksportu, aby przenieść urządzenia do nowego centrum.

Ponowne aprowidowania urządzeń w nowym centrum za pomocą usługi DPS

Aby przenieść urządzenia do nowej lokalizacji przy użyciu usługi DPS, zobacz Jak ponownie aprowizacji urządzeń. Po zakończeniu możesz wyświetlić urządzenia w witrynie Azure Portal i sprawdzić, czy znajdują się one w nowej lokalizacji.

Przejdź do nowego centrum przy użyciu witryny Azure Portal. Wybierz centrum, a następnie wybierz pozycję Urządzenia IoT. Zobaczysz urządzenia, które zostały ponownie aprowidowane w nowym koncentratonie. Możesz również wyświetlić właściwości nowego centrum.

Jeśli wdrożono routing, przetestuj i upewnij się, że komunikaty są prawidłowo kierowane do zasobów.

Wycofywanie zmian po użyciu usługi DPS

Jeśli chcesz wycofać zmiany, ponownie aprowizuj urządzenia z nowego centrum do starego.

Zakończono migrację centrum i jego urządzeń. Możesz przejść do sekcji Czyszczenie.

Przenoszenie urządzeń do nowego centrum za pomocą polecenia import-export

Aplikacja jest przeznaczona dla platformy .NET Core, więc można ją uruchomić w systemie Windows lub Linux. Możesz pobrać przykład, pobrać parametry połączenia, ustawić flagi, dla których bitów chcesz uruchomić, i uruchomić go. Możesz to zrobić bez konieczności otwierania kodu.

Pobierz przykład

Użyj zestawu IoT C# SDK ImportExportDevicesSample. Sklonuj lub pobierz repozytorium, aby pobrać przykładowy kod.

Opcje

Aby uruchomić aplikację, określ trzy parametry połączenia i pięć opcji. Te dane można przekazać jako argumenty wiersza polecenia lub użyć zmiennych środowiskowych albo użyć kombinacji tych dwóch. Przekażemy opcje jako argumenty wiersza polecenia, a parametry połączenia jako zmienne środowiskowe. Przyczyną jest to, że parametry połączenia są długie i niewzględne i mało prawdopodobne, aby się zmienić, ale możesz chcieć zmienić opcje i uruchomić aplikację więcej niż raz. Aby zmienić wartość zmiennej środowiskowej, musisz zamknąć okno poleceń i program Visual Studio lub Visual Studio Code, niezależnie od tego, którego używasz.

Poniżej przedstawiono pięć opcji, które określisz podczas uruchamiania aplikacji:

  • addDevices (argument 1) — ustaw tę opcję na True wartość , jeśli chcesz dodać urządzenia wirtualne, które są generowane dla Ciebie. Te urządzenia są dodawane do centrum źródłowego. Ponadto ustaw wartość numToAdd (argument 2), aby określić liczbę urządzeń, które chcesz dodać. Maksymalna liczba urządzeń, które można zarejestrować w centrum, wynosi milion. Celem tej opcji jest testowanie. Można wygenerować określoną liczbę urządzeń, a następnie skopiować je do innego centrum.

  • copyDevices (argument 3) — ustaw tę opcję, aby skopiować True urządzenia z jednego koncentratora do innego.

  • deleteSourceDevices (argument 4) — ustaw tę opcję, aby True usunąć wszystkie urządzenia zarejestrowane w centrum źródłowym. Zalecamy poczekanie na pewność, że wszystkie urządzenia zostały przeniesione przed uruchomieniem tego polecenia. Po usunięciu urządzeń nie można ich odzyskać.

  • deleteDestDevices (argument 5) — ustaw tę opcję, aby True usunąć wszystkie urządzenia zarejestrowane w centrum docelowym. Możesz to zrobić, jeśli chcesz skopiować urządzenia więcej niż raz.

Podstawowe polecenie to dotnet run, które informuje platformę .NET o skompilowanie lokalnego pliku csproj, a następnie uruchomienie go. Argumenty wiersza polecenia są dodawane na końcu przed jego uruchomieniem.

Wiersz polecenia wygląda następująco:

    // 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 

Używanie zmiennych środowiskowych dla parametry połączenia

  1. Aby uruchomić przykład, potrzebujesz parametry połączenia do starych i nowych centrów IoT oraz do konta magazynu, którego można użyć do tymczasowych plików służbowych. Zapiszemy wartości tych parametry połączenia w zmiennych środowiskowych.

  2. Aby uzyskać wartości parametry połączenia, zaloguj się do witryny Azure Portal.

  3. Umieść parametry połączenia w miejscu, w którym można je pobrać, na przykład Notatnik. Jeśli skopiujesz następujące elementy, możesz wkleić parametry połączenia bezpośrednio tam, gdzie idą. Nie dodawaj spacji wokół znaku równości ani nie zmienia nazwy zmiennej. Ponadto nie potrzebujesz podwójnych cudzysłowów wokół parametry połączenia. Jeśli umieścisz cudzysłowy wokół konta magazynu parametry połączenia, skrypt zakończy się niepowodzeniem.

    Ustaw zmienne środowiskowe w systemie Windows:

    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>
    

    Ustaw zmienne środowiskowe w systemie Linux:

    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. W przypadku parametry połączenia centrum IoT Hub przejdź do każdego centrum w portalu. Możesz wyszukać w obszarze Zasoby dla centrum. Jeśli znasz grupę zasobów, możesz przejść do pozycji Grupy zasobów, wybrać grupę zasobów, a następnie wybrać centrum z listy zasobów w tej grupie zasobów.

  5. Wybierz pozycję Zasady dostępu współużytkowanego w obszarze Ustawienia centrum, a następnie wybierz pozycję iothubowner i skopiuj jeden z parametry połączenia. Zrób to samo dla centrum docelowego. Dodaj je do odpowiednich poleceń SET.

  6. W przypadku konta magazynu parametry połączenia znajdź konto magazynu w obszarze Zasoby lub w grupie Zasobów i otwórz je.

  7. W sekcji Ustawienia wybierz pozycję Klucze dostępu i skopiuj jeden z parametry połączenia. Umieść parametry połączenia w pliku tekstowym odpowiedniego polecenia SET.

Teraz masz zmienne środowiskowe w pliku z poleceniami SET i wiesz, jakie są argumenty wiersza polecenia. Uruchommy przykład.

Uruchamianie przykładowej aplikacji i używanie argumentów wiersza polecenia

  1. Otwórz okno wiersza polecenia. Wybierz pozycję Windows i wpisz polecenie , command prompt aby uzyskać okno wiersza polecenia.

  2. Skopiuj polecenia, które ustawiają zmienne środowiskowe pojedynczo, i wklej je w oknie wiersza polecenia, a następnie wybierz Enter. Po zakończeniu wpisz SET w oknie wiersza polecenia, aby wyświetlić zmienne środowiskowe i ich wartości. Po skopiowaniu ich do okna wiersza polecenia nie trzeba ich ponownie kopiować, chyba że otworzysz nowe okno wiersza polecenia.

  3. W oknie wiersza polecenia zmień katalogi do momentu, gdy znajdujesz się w pliku ./ImportExportDevicesSample (gdzie istnieje plik ImportExportDevicesSample.csproj). Następnie wpisz następujące polecenie i dołącz argumenty wiersza polecenia.

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

    Polecenie dotnet kompiluje i uruchamia aplikację. Ponieważ przekazujesz opcje podczas uruchamiania aplikacji, możesz zmienić ich wartości za każdym razem, gdy uruchamiasz aplikację. Na przykład możesz chcieć uruchomić go raz i utworzyć nowe urządzenia, a następnie uruchomić je ponownie i skopiować te urządzenia do nowego centrum itd. Możesz również wykonać wszystkie kroki w tym samym przebiegu, chociaż zalecamy, aby nie usuwać żadnych urządzeń, dopóki nie skończysz z migracją. Oto przykład, który tworzy 1000 urządzeń, a następnie kopiuje je do innego centrum.

    // 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 
    

    Po upewnieniu się, że urządzenia zostały pomyślnie skopiowane, możesz usunąć urządzenia z centrum źródłowego w następujący sposób:

    // 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 
    

Uruchamianie przykładowej aplikacji przy użyciu programu Visual Studio

  1. Jeśli chcesz uruchomić aplikację w programie Visual Studio, zmień bieżący katalog na folder, w którym znajduje się plik azureiot.sln. Następnie uruchom to polecenie w oknie wiersza polecenia, aby otworzyć rozwiązanie w programie Visual Studio. Należy to zrobić w tym samym oknie polecenia, w którym ustawiono zmienne środowiskowe, aby te zmienne były znane.

    azureiot.sln
    
  2. Kliknij prawym przyciskiem myszy projekt ImportExportDevicesSample i wybierz pozycję Ustaw jako projekt startowy.

  3. Ustaw zmienne w górnej części Program.cs w folderze ImportExportDevicesSample dla pięciu opcji.

    // 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. Wybierz F5, aby uruchomić aplikację. Po zakończeniu działania można wyświetlić wyniki.

Wyświetlanie wyników

Urządzenia można wyświetlić w witrynie Azure Portal i sprawdzić, czy znajdują się w nowej lokalizacji.

  1. Przejdź do nowego centrum przy użyciu witryny Azure Portal. Wybierz centrum, a następnie wybierz pozycję Urządzenia IoT. Zobaczysz urządzenia skopiowane ze starego centrum do nowego centrum. Możesz również wyświetlić właściwości nowego centrum.

  2. Sprawdź błędy importu/eksportu, przechodząc do konta usługi Azure Storage w witrynie Azure Portal i wyszukując devicefiles w kontenerze ImportErrors.log. Jeśli ten plik jest pusty (rozmiar to 0), nie wystąpiły błędy. Jeśli spróbujesz zaimportować to samo urządzenie więcej niż raz, urządzenie zostanie odrzucone po raz drugi i doda komunikat o błędzie do pliku dziennika.

Zatwierdzanie zmian

W tym momencie centrum zostało skopiowane do nowej lokalizacji i zmigrowane urządzenia do nowego centrum. Teraz musisz wprowadzić zmiany, aby urządzenia działały z nowym koncentratorem.

Aby zatwierdzić zmiany, poniżej przedstawiono kroki, które należy wykonać:

  • Zaktualizuj każde urządzenie, aby zmienić nazwę hosta usługi IoT Hub, aby wskazywało nazwę hosta usługi IoT Hub na nowe centrum. Należy to zrobić przy użyciu tej samej metody, która została użyta podczas pierwszej aprowizacji urządzenia.

  • Zmień wszystkie aplikacje, które odwołują się do starego centrum, aby wskazywały nowe centrum.

  • Po zakończeniu nowy koncentrator powinien być uruchomiony. Stary koncentrator nie powinien mieć aktywnych urządzeń i być w stanie odłączenia.

Wycofywanie zmian

Jeśli zdecydujesz się wycofać zmiany, wykonaj następujące kroki:

  • Zaktualizuj każde urządzenie, aby zmienić nazwę hosta usługi IoT Hub, aby wskazywało nazwę hosta usługi IoT Hub dla starego centrum. Należy to zrobić przy użyciu tej samej metody, która została użyta podczas pierwszej aprowizacji urządzenia.

  • Zmień wszystkie aplikacje, które odwołują się do nowego centrum, aby wskazywały stare centrum. Jeśli na przykład używasz usługi Azure Analytics, może być konieczne ponowne skonfigurowanie danych wejściowych usługi Azure Stream Analytics.

  • Usuń nowe centrum.

  • Jeśli masz zasoby routingu, konfiguracja na starym koncentratoście powinna nadal wskazywać prawidłową konfigurację routingu i powinna współpracować z tymi zasobami po ponownym uruchomieniu centrum.

Sprawdzanie wyników

Aby sprawdzić wyniki, zmień rozwiązanie IoT, aby wskazywało centrum w nowej lokalizacji i uruchom je. Innymi słowy, wykonaj te same akcje z nowym koncentratorem wykonanym z poprzednim koncentratorem i upewnij się, że działają prawidłowo.

Jeśli wdrożono routing, przetestuj i upewnij się, że komunikaty są prawidłowo kierowane do zasobów.

Czyszczenie

Nie usuwaj, dopóki nie masz pewności, że nowe centrum jest uruchomione i urządzenia działają prawidłowo. Pamiętaj również, aby przetestować routing, jeśli używasz tej funkcji. Gdy wszystko będzie gotowe, wyczyść stare zasoby, wykonując następujące kroki:

  • Jeśli jeszcze tego nie zrobiono, usuń stare centrum. Spowoduje to usunięcie wszystkich aktywnych urządzeń z centrum.

  • Jeśli masz zasoby routingu przeniesione do nowej lokalizacji, możesz usunąć stare zasoby routingu.

Następne kroki

Centrum IoT Zostało zmigrowane do nowego centrum w nowym regionie, wraz z urządzeniami. Aby uzyskać więcej informacji na temat wykonywania operacji zbiorczych względem rejestru tożsamości w centrum IoT Hub, zobacz Importowanie i eksportowanie tożsamości urządzeń usługi IoT Hub zbiorczo.