Как вручную перенести Центр Интернета вещей Azure с помощью шаблона Azure Resource Manager

Используйте портал Azure, шаблоны azure Resource Manager и пакеты SDK для служб Центр Интернета вещей Azure для переноса Центра Интернета вещей в новый регион, новый уровень или новую конфигурацию.

Действия, описанные в этой статье, полезны, если вы хотите:

  • Перейдите с бесплатного уровня на Центр Интернета вещей уровня "Базовый" или "Стандартный".
  • Перемещение Центра Интернета вещей в новый регион.
  • Экспорт сведений о состоянии Центра Интернета вещей для резервной копии.
  • Увеличьте количество секций для Центра Интернета вещей.
  • Настройте центр для среды разработки, а не для рабочей среды.
  • Включите пользовательскую реализацию высокого уровня доступности с несколькими концентраторами. Дополнительные сведения см. в статье Как добиться высокой доступности и аварийного восстановления Центра Интернета вещей в нескольких регионах.

Для переноса концентратора требуется подписка с административным доступом к исходному концентратору. Новый центр можно разместить в новой группе ресурсов и регионе в той же подписке, что и исходный центр, или даже в новой подписке. Нельзя использовать то же имя, так как имя центра должно быть глобально уникальным.

Сравнение шагов автоматической и ручной миграции

Результат этой статьи аналогичен автоматическому переносу Центра Интернета вещей с помощью Azure CLI, но с другим процессом. Прежде чем начать, определите, какой процесс подходит для вашего сценария.

  • Процесс вручную (эта статья):

    • Переносит реестр устройств, сведения о маршрутизации и конечной точке. Необходимо вручную повторно создать другие сведения о конфигурации в новом Центре Интернета вещей.
    • Быстрее переносит большое количество устройств (например, более 100 000).
    • Использует учетную запись хранения Azure для передачи реестра устройств.
    • Выполняет очистку строк подключения для конечных точек маршрутизации и отправки файлов из выходных данных шаблона ARM, и их необходимо добавить вручную.
  • Процесс Azure CLI:

    • Переносит реестр устройств, сведения о маршрутизации и конечной точке, а также другие сведения о конфигурации, такие как IoT Edge развертывания или конфигурации автоматического управления устройствами.
    • Проще переносить небольшое количество устройств (например, до 10 000).
    • Не требуется учетная запись хранения Azure.
    • Собирает строки подключения для конечных точек маршрутизации и отправки файлов и включает их в выходные данные шаблона ARM.

Полезная информация

Перед переносом Центра Интернета вещей необходимо учитывать несколько аспектов.

  • Убедитесь, что все компоненты, доступные в исходном расположении, также доступны в новом расположении. Некоторые службы могут быть доступны в предварительной версии и не все функции доступны везде.

  • Не удаляйте исходные ресурсы перед созданием и проверкой перенесенной версии. После удаления центра он пропадает навсегда, и вы не сможете восстановить его, чтобы проверить параметры или данные и убедиться в правильности его репликации.

  • Данные для исходного центра Интернета вещей не переносятся. Сюда входят сообщения телеметрии, команды из облака на устройство (C2D) и связанные с заданиями сведения, такие как расписания и журнал. Метрики и результаты ведения журнала также не переносятся.

  • Необходимо запланировать время простоя для миграции. На клонирование устройств в новый центр уходит время. Если вы используете метод импорта и экспорта, тестирование производительности показало, что для перемещения 500 000 устройств нужно примерно два часа, а для перемещения миллиона устройств около четырех часов.

  • Вы можете копировать устройства в новый концентратор без завершения работы или изменения устройств.

    • Если устройства изначально были подготовлены с помощью DPS, обновите их регистрации, чтобы они указывали на новый Центр Интернета вещей. Затем повторно настройте устройства, чтобы обновить сведения о подключении, хранящиеся на каждом устройстве.

    • В противном случае для перемещения устройств необходимо использовать метод импорта и экспорта, а затем изменить устройства для использования нового концентратора. Например, можно настроить устройство на использование имени узла центра Интернета вещей из требуемых свойств двойника. Устройство принимает это Центр Интернета вещей имя узла, отсоединяет устройство от старого концентратора и повторно подключает его к новому.

  • Необходимо обновить все сертификаты, чтобы их можно было использовать с новыми ресурсами. Кроме того, центр, вероятно, определен где-то в таблице DNS, так что эти сведения DNS необходимо обновить.

Методика

Это общий метод, который мы рекомендуем для переноса Центра Интернета вещей.

  1. Экспортируйте центр и его параметры в шаблон Resource Manager.

  2. Внесите необходимые изменения в шаблон, например обновите все вхождения имени и расположения перенесенного концентратора. Для всех ресурсов в шаблоне, используемых как конечные точки маршрутизации сообщений, обновите ключ в шаблоне для этого ресурса.

  3. Импортируйте шаблон в новую группу ресурсов в новом расположении. На этом шаге создается новый Центр Интернета вещей.

  4. Выполните отладку по мере необходимости.

  5. Добавьте все, что не было экспортировано в шаблон.

    Например, группы потребителей не экспортируются в шаблон. Группы потребителей необходимо добавлять в шаблон вручную или использовать портал Azure после создания центра.

  6. Скопируйте устройства из исходного концентратора в новый концентратор. Этот процесс рассматривается в разделе Управление устройствами, зарегистрированными в Центре Интернета вещей.

Как управлять маршрутизацией сообщений

Если центр использует маршрутизацию сообщений, экспорт шаблона для концентратора включает конфигурацию маршрутизации, но не включает сами ресурсы. При переносе Центра Интернета вещей в новый регион необходимо выбрать, следует ли переместить ресурсы маршрутизации в новое расположение или оставить их на месте и продолжать использовать их "как есть". При маршрутизации сообщений конечных точек в другой регион может снизиться производительность.

Если в центре используется маршрутизация сообщений, у вас есть два варианта.

  • Переместите ресурсы, используемые для конечных точек маршрутизации, в новое расположение.

    1. Создайте новые ресурсы вручную в портал Azure или с помощью шаблонов Resource Manager.

    2. Переименуйте все ресурсы при их создании в новом расположении, так как для них требуются глобально уникальные имена.

    3. Обновите имена ресурсов и ключи ресурсов в шаблоне нового концентратора перед созданием нового концентратора. Ресурсы должны присутствовать при создании нового центра.

  • Не переносите ресурсы, используемые для конечных точек маршрутизации. Используйте их "на месте".

    1. На шаге редактирования шаблона необходимо получить ключи для каждого ресурса маршрутизации и разместить их в шаблоне перед созданием нового центра.

    2. Центр по-прежнему ссылается на исходные ресурсы маршрутизации и направляет сообщения в них в соответствии с настройками. Производительность немного снизится, так как центр и ресурсы конечной точки маршрутизации находятся в разных расположениях.

Подготовка к переносу центра в другой регион

В этом разделе приведены конкретные инструкции по миграции центра.

Экспорт исходного концентратора в шаблон ресурсов

  1. Войдите на портал Azure.

  2. Перейдите к центру Интернета вещей, который вы хотите переместить.

  3. Выберите Экспорт шаблона из списка свойств и параметров для центра.

    Снимок экрана: команда для экспорта шаблона для Центра Интернета вещей.

  4. Выберите Download (Скачать), чтобы скачать шаблон. Сохраните файл там, где его можно будет найти.

    Снимок экрана: команда для скачивания шаблона для Центра Интернета вещей.

Просмотрите шаблон

Перейдите к скачанном шаблону, который содержится в ZIP-файле. Извлеките файлы из ZIP-архива и найдите файл под названием template.json.

Следующий пример предназначен для универсального центра без настройки маршрутизации. Это центр уровня S1 (с 1 единицей) под названием ContosoHub в регионе 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": []
            }
        }
    ]
}

Изменение шаблона

Необходимо внести некоторые изменения, прежде чем можно будет использовать шаблон для создания нового центра в новом регионе. Используйте Visual Studio Code или текстовый редактор для редактирования шаблона.

Изменение имени и расположения центра

  1. Удалите раздел параметров имени контейнера в верхней части страницы. ContosoHub не имеет связанного контейнера.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. Удалите свойство storageEndpoints.

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. При перемещении концентратора в новый регион измените свойство location в разделе Resources.

    "location": "westus",
    

Обновление ресурсов конечной точки маршрутизации

При экспорте шаблона Resource Manager для концентратора с настроенной маршрутизацией вы увидите, что ключи для этих ресурсов не указаны в экспортированном шаблоне. Их размещение обозначается звездочками. Их необходимо заполнить, перейдя к этим ресурсам на портале и извлекая ключи перед импортом шаблона нового концентратора и созданием центра.

Если вы также переместили ресурсы маршрутизации, обновите имя, идентификатор и группу ресурсов каждой конечной точки.

  1. Получите ключи, необходимые для любого из ресурсов маршрутизации, и вставьте их в шаблон. Ключи можно получить из ресурса на портале Azure.

    • Например, если вы направляете сообщения в контейнер хранилища, найдите учетную запись хранения на портале. В разделе Settings (Параметры) выберите Access keys (Ключи доступа), а затем скопируйте один из ключей. Вот как выглядит ключ при первом экспорте шаблона:

      "connectionString": "DefaultEndpointsProtocol=https;
      AccountName=fabrikamstorage1234;AccountKey=****",
      "containerName": "fabrikamresults",
      

      После получения ключа учетной записи хранения поместите его в шаблон в AccountKey=**** предложении вместо звездочек.

    • Для очередей служебной шины получите ключ общего доступа, соответствующий SharedAccessKeyName. Ключ и SharedAccessKeyName в JSON будут следующими:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • То же самое относится к разделам Служебной шины и подключениям Центра событий.

Создайте новый центр, загрузив шаблон.

Создайте новый центр с помощью измененного шаблона. При наличии ресурсов маршрутизации, которые планируется переместить, ресурсы должны быть настроены в новом расположении, а ссылки в шаблоне обновлены, чтобы соответствовать этому расположению. Если вы не перемещаете ресурсы маршрутизации, они должны быть в шаблоне с обновленными ключами.

  1. Войдите на портал Azure.

  2. Выберите Создать ресурс.

  3. В поле поиска найдите и выберите развертывание шаблона (развертывание с помощью пользовательских шаблонов). На экране развертывания шаблона выберите Создать.

  4. На странице Пользовательское развертывание выберите Создать собственный шаблон в редакторе, чтобы вы могли отправить шаблон из файла.

    Снимок экрана: команда для создания собственного шаблона.

  5. Выберите Load file (Загрузить файл).

    Снимок экрана: команда для отправки файла шаблона.

  6. Найдите новый шаблон, который вы редактировали, и выберите его, а затем нажмите кнопку Open (Открыть). Шаблон загружается в окно редактирования. Щелкните Сохранить.

    Снимок экрана: загрузка шаблона.

  7. Заполните следующие поля на странице настраиваемого развертывания.

    Подписка. Выберите нужную подписку.

    Группа ресурсов. Выберите существующую группу ресурсов или создайте новую.

    Регион. Если выбрана существующая группа ресурсов, это поле будет заполнено, чтобы соответствовать расположению группы ресурсов. Если вы создали новую группу ресурсов, это ее расположение.

    Строка подключения. Введите строку подключения для центра.

    Имя концентратора. Присвойте новому концентратору имя.

    Снимок экрана: страница настраиваемого развертывания

  8. Нажмите кнопку Просмотреть и создать.

  9. Нажмите кнопку Создать. Портал проверяет шаблон и развертывает новый центр. Если у вас есть данные конфигурации маршрутизации, они включаются в новый концентратор, но указывают на ресурсы в предыдущем расположении.

    Снимок экрана: страница окончательного настраиваемого развертывания

Управление устройствами, зарегистрированными в Центре Интернета вещей

Теперь, когда новый концентратор запущен и запущен, необходимо скопировать все устройства из исходного концентратора в новый.

Существует несколько способов копирования устройств. Изначально вы либо использовали, либо не использовали Службу подготовки устройств (DPS) для подготовки устройств. В первом случае процесс будет несложным. В последнем он может усложниться.

Если вы не использовали DPS для подготовки устройств, можно пропустить следующий раздел и начать с использования импорта и экспорта для перемещения устройств в новый центр.

Использование DPS для повторной подготовки устройств в новом концентраторе

Сведения об использовании DPS для перемещения устройств в новое расположение см. в статье Повторная подготовка устройств. По завершении можно просмотреть устройства на портале Azure и убедиться в том, что они находятся в новом расположении.

Перейдите к новому центру через портал Azure. Выберите центр, а затем выберите IoT Devices (Устройства Интернета вещей). Вы увидите устройства, которые были повторно подготовлены в новом концентраторе. Вы также можете просмотреть свойства нового концентратора.

Если вы реализовали маршрутизацию, проверьте и убедитесь, что сообщения правильно направляются к ресурсам.

Откат изменений после использования DPS

Если вы хотите откатить изменения, повторно подготавливайте устройства из нового концентратора в старый.

Миграция центра и его устройств завершена. Можно перейти к очистке.

Использование импорта и экспорта для перемещения устройств в новый центр

Приложение предназначено для .NET Core, поэтому его можно запустить как в Windows, так и в Linux. Вы можете скачать пример, получить строки подключения, задать флаги для того, что требуется запустить, и запустить его. Это можно сделать даже не открывая код.

Скачивание примера приложения

  1. Используйте примеры IoT C# здесь: Пакет SDK Для Интернета вещей Azure для C#. Скачайте ZIP-файл и распакуйте его на своем компьютере.

  2. Соответствующий код находится в ./iothub/service/samples/how to guides/ImportExportDevicesSample. Для запуска приложения не нужно просматривать или изменять этот код.

  3. Чтобы запустить приложение, укажите три строки подключения и пять параметров. Эти данные передаются в виде аргументов командной строки или используют переменные среды либо используют сочетание этих двух вариантов. Мы будем передавать параметры в виде аргументов командной строки, а строки подключения — в виде переменных среды.

    Причина этого заключается в том, что строки подключения слишком длинные, громоздкие и вряд ли изменятся, но, возможно, потребуется изменить параметры и запустить приложение несколько раз. Чтобы изменить значение переменной среды, необходимо закрыть командное окно и Visual Studio или Visual Studio Code в зависимости от используемого.

Варианты

Ниже приведены пять параметров, которые вы указываете при запуске приложения.

  • addDevices (аргумент 1) — установите для этого параметра значение , True если вы хотите добавить созданные виртуальные устройства. Эти устройства добавляются в исходный концентратор. Кроме того, задайте numToAdd (аргумент 2), чтобы указать, сколько устройств нужно добавить. Максимальное количество устройств, которые можно зарегистрировать в одном центре  — один миллион. Этот параметр предназначен для тестирования. Вы можете создать определенное количество устройств, а затем скопировать их в другой центр.

  • copyDevices (аргумент 3) — установите для этого параметра True значение , чтобы копировать устройства из одного концентратора в другой.

  • deleteSourceDevices (аргумент 4) — установите для этого параметра True значение , чтобы удалить все устройства, зарегистрированные в исходном концентраторе. Перед выполнением этого действия рекомендуется подождать и убедиться, что переданы все устройства. После удаления устройств их нельзя вернуть.

  • deleteDestDevices (аргумент 5) — установите для этого параметра True значение , чтобы удалить все устройства, зарегистрированные в целевом концентраторе. Это может потребоваться, если вы хотите скопировать устройства несколько раз.

Основной командой будет dotnet run, которая указывает .NET создать локальный файл csproj и запустить его. Перед запуском аргументы командной строки добавляются в конец.

Командная строка будет выглядеть, как в следующих примерах:

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

Использование переменных среды для строк подключения

  1. Чтобы запустить пример, необходимы строки подключения к старому и новому центрам Интернета вещей, а также к учетной записи хранения, которую можно использовать для временных рабочих файлов. Их значения будут храниться в переменных среды.

  2. Чтобы получить значения строк подключения, войдите на портал Azure.

  3. Разместите строки подключения в любом месте, откуда их легко извлечь например в блокноте. Если скопировать следующий текст, строки подключения можно вставить непосредственно туда, где они должны находиться. Не добавляйте пробелы вокруг знака равенства, так как это изменит имя переменной. Кроме того, не нужно использовать двойные кавычки вокруг строк подключения. Если поместить в кавычки строку подключения к учетной записи хранения, скрипт завершается ошибкой.

    Установка переменных среды в 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>
    

    Установка переменных среды в 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. Для строк подключения центра Интернета вещей перейдите к каждому из центров в портале. Вы можете выполнять поиск в Ресурсах центра. Если вы знакомы с группой ресурсов, перейдите в раздел Resource groups (Группы ресурсов), выберите группу ресурсов, а затем выберите центр из списка ресурсов в этой группе ресурсов.

  5. Выберите Shared access policies (Политики общего доступа) в параметрах для центра, а затем выберите iothubowner и скопируйте одну из строк подключения. Сделайте то же самое для целевого центра. Добавьте их в соответствующие команды SET.

  6. В строке подключения к учетной записи хранения найдите учетную запись хранения в разделе Resource (Ресурсы) или в ее Resource group (Группе ресурсов) и откройте ее.

  7. В разделе Settings (Параметры) слева выберите Access keys (Ключи доступа) и скопируйте одну из строк подключения. Вставьте строку подключения в текстовый файл для соответствующей команды SET.

Теперь у вас есть переменные среды в файле с командами SET, и вы знакомы со своими аргументами командной строки. Запустим пример кода.

Запуск примера приложения и использование аргументов командной строки

  1. Откройте окно командной строки. Выберите Windows и введите command prompt, чтобы открыть окно командной строки.

  2. Скопируйте команды, которые задают переменные среды, по одной за раз, а затем вставьте их в окно командной строки и нажмите клавишу ВВОД. По завершении введите SET в окне командной строки, чтобы просмотреть переменные среды и их значения. После копирования этих данных в окно командной строки их не нужно будет копировать снова, если не открывать новое окно командной строки.

  3. В окне командной строки переходите по каталогам, пока не окажетесь в ./ImportExportDevicesSample (где находится файл ImportExportDevicesSample.csproj). Затем введите следующую команду и укажите свои аргументы командной строки.

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

    Команда dotnet соберет и запустит приложение. Так как вы передаете параметры при запуске приложения, их значения можно изменять при каждом запуске приложения. Например, может потребоваться запустить его один раз и создать новые устройства, затем снова запустить его и скопировать эти устройства в новый центр и т. д. Вы также можете выполнить все действия в одном и том же запуске, хотя мы рекомендуем не удалять устройства, пока не будете уверены, что миграция завершена. Ниже приведен пример, который создает 1000 устройств, а затем копирует их в другой центр.

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

    Убедившись, что устройства успешно скопированы, можно удалить устройства из исходного центра следующим образом:

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

Запуск примера приложения с помощью Visual Studio

  1. Если вы хотите запустить приложение в Visual Studio, измените текущий каталог на папку, в которой находится файл azureiot.sln. Затем выполните эту команду в окне командной строки, чтобы открыть решение в Visual Studio. Это необходимо сделать в том же командном окне, где заданы переменные среды, чтобы эти переменные были известны.

    azureiot.sln
    
  2. Щелкните проект ImportExportDevicesSample правой кнопкой мыши и выберите команду Set as startup project (Назначить запускаемым проектом).

  3. Задайте переменные для пяти вариантов в верхней части файла Program.cs, в папке ImportExportDevicesSample.

    // 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. Нажмите клавишу F5 для запуска приложения. По завершении работы можно просмотреть результаты.

Просмотр результатов

Можно просмотреть устройства на портале Azure и убедиться в том, что они находятся в новом расположении.

  1. Перейдите к новому центру через портал Azure. Выберите центр, а затем выберите IoT Devices (Устройства Интернета вещей). Вы увидите устройства, скопированные из старого концентратора в новый. Вы также можете просмотреть свойства нового концентратора.

  2. Проверьте наличие ошибок импорта и экспорта, перейдя в учетную запись хранения Azure на портале Azure и просмотрев контейнер devicefiles для ImportErrors.log. Если этот файл пуст (размер равен 0), ошибки отсутствуют. Если вы попытаетесь импортировать одно устройство несколько раз, на второй раз устройство будет отклонено и сообщение об ошибке добавлено в файл журнала.

Фиксация изменений

На этом этапе вы скопировали центр в новое расположение и перенесли устройства в новый центр. Теперь необходимо внести изменения, чтобы устройства работали с новым концентратором.

Чтобы зафиксировать изменения, необходимо выполнить следующие действия.

  • Обновите каждое устройство, чтобы изменить имя узла центра Интернета вещей, чтобы оно указывало на новый центр. Это следует делать с помощью того же метода, который использовался при предварительной подготовке устройства.

  • Измените все приложения, которые ссылаются на старый центр, чтобы они указывали на новый центр.

  • После этого новый центр должен быть готов к работе. Старый центр не должен иметь активных устройств и должен находиться в отключенном состоянии.

Откат изменений

Если вы решили выполнить откат изменений, выполните следующие действия:

  • Обновите все устройства, изменяя имя узла центра Интернета вещей, чтобы оно указывало имя узла центра Интернета вещей для старого центра. Это следует делать с помощью того же метода, который использовался при предварительной подготовке устройства.

  • Измените все приложения, которые ссылаются на новый центр, чтобы он указывали на старый центр. Например, если вы используете Azure Analytics, может потребоваться перенастроить входные данные Azure Stream Analytics.

  • Удалите новый центр.

  • При наличии ресурсов маршрутизации конфигурация старого центра должна указывать на правильную конфигурацию маршрутизации и должна работать с этими ресурсами после перезапуска центра.

Проверка результатов

Чтобы проверить результаты, измените решение Интернета вещей так, чтобы оно указывало на центр в новом расположении и запускало его. Иными словами, выполните те же действия с новым центром, который вы выполняли с предыдущим центром, и убедитесь, что все работает правильно.

Если вы реализовали маршрутизацию, проверьте и убедитесь, что сообщения правильно направляются к ресурсам.

Очистка

Не выполняйте очистку, пока не убедитесь, что новый концентратор работает и устройства работают правильно. Кроме того, обязательно протестируйте маршрутизацию, если вы используете эту функцию. Когда все будет готово, очистите старые ресурсы, выполнив следующие действия:

  • Если вы еще не сделали этого, удалите старый центр. Это приведет к удалению всех активных устройств из центра.

  • При наличии ресурсов маршрутизации, перемещенных в новое расположение, можно удалить старые ресурсы маршрутизации.

Дальнейшие действия

Вы перенесли Центр Интернета вещей в новый центр в новом регионе вместе с устройствами. Дополнительные сведения о выполнении массовых операций с реестром удостоверений в Центре Интернета вещей см. в статье Массовый импорт и экспорт Центр Интернета вещей удостоверений устройств.