Настройка модулей и подключений IoT Edge

Внимание

Azure SQL Edge больше не поддерживает платформу ARM64.

В части 2 (из 3) этого руководства по прогнозированию примеси железной руды в SQL Azure для пограничных вычислений вы настроите следующие модули IoT Edge:

  • SQL Azure для пограничных вычислений
  • Модуль генератора данных IoT Edge

Указание учетных данных реестра контейнеров

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

  • Имя реестра
  • Сервер входа
  • Username
  • Пароль

Теперь укажите учетные данные контейнера в модуле IoT Edge.

  1. Перейдите в центр Интернета вещей, созданный в группе ресурсов.

  2. В разделе IoT Edge в разделе "Автоматический Управление устройствами" выберите идентификатор устройства. В этом руководстве используется идентификатор IronOrePredictionDevice.

  3. Выберите раздел Выбор модулей.

  4. В разделе Учетные данные реестра контейнеров введите следующие значения:

    Поле Значение
    Имя. Имя реестра
    Адрес Сервер входа
    Имя пользователя Username
    Пароль Пароль

Создание, отправка и развертывание модуля генератора данных

  1. Клонируйте файлы проекта на компьютер.

  2. Откройте файл IronOre_Silica_Predict.sln в Visual Studio 2019.

  3. Обновите сведения о реестре контейнеров в файле deployment.template.json.

    "registryCredentials": {
         "RegistryName": {
             "username": "",
             "password": "",
             "address": ""
         }
    }
    
  4. Обновите файл modules.json, чтобы указать целевой реестр контейнеров (или репозиторий для модуля).

    "image": {
         "repository":"samplerepo.azurecr.io/ironoresilicapercent",
         "tag":
    }
    
  5. Выполните проект в режиме отладки или выпуска, чтобы убедиться в отсутствии проблем.

  6. Отправьте проект в реестр контейнеров, щелкнув правой кнопкой мыши имя проекта и выбрав Создать и отправить модули IoT Edge.

  7. Разверните модуль генератора данных в качестве модуля IoT Edge на устройстве Edge.

Развертывание модуля SQL Azure для пограничных вычислений

  1. Разверните модуль Sql Azure, выбрав " + Добавить ", а затем модуль IoT Edge.

  2. Задайте параметры конфигурации на странице "Добавление модулей IoT Edge" для развертывания модуля SQL Azure Для пограничных вычислений. Дополнительные сведения о параметрах конфигурации см. в статье Развертывание SQL Azure для пограничных вычислений.

  3. Добавьте переменную среды MSSQL_PACKAGE в развертывание модуля SQL Azure для пограничных вычислений и укажите URL-адрес SAS DACPAC-файла базы данных, созданного на шаге 8 в первой части этого учебника.

  4. Выбор обновления

  5. На странице "Задать модули" на устройстве нажмите кнопку "Далее: маршруты>".

  6. В области "Маршруты" на странице Настройка модулей на устройстве: укажите маршруты для связи модуля с центром IoT Edge, как описано ниже. Обязательно обновите имена модулей в следующих определениях маршрутов.

    FROM /messages/modules/<your_data_generator_module>/outputs/IronOreMeasures
    INTO BrokeredEndpoint("/modules/<your_azure_sql_edge_module>/inputs/IronOreMeasures")
    

    Например:

    FROM /messages/modules/ASEDataGenerator/outputs/IronOreMeasures
    INTO BrokeredEndpoint("/modules/AzureSQLEdge/inputs/IronOreMeasures")
    
  7. На странице "Установка модулей" на устройстве нажмите кнопку "Далее: проверка и создание">

  8. На странице "Установка модулей" на странице устройства нажмите кнопку "Создать"

Создайте и запустите задание потоковой передачи T-SQL в SQL Azure для пограничных вычислений.

  1. Откройте Azure Data Studio.

  2. На вкладке Приветствие запустите новое подключение со следующими сведениями:

    Поле значение
    Connection type Microsoft SQL Server
    Сервер Общедоступный IP-адрес, упомянутый в виртуальной машине, созданной для этой демо-версии
    Username sa
    Пароль Надежный пароль, который использовался при создании экземпляра SQL Azure для пограничных вычислений.
    База данных По умолчанию.
    Группа серверов По умолчанию.
    Name (optional) (Имя [необязательно]) Укажите необязательное имя
  3. Нажмите Подключиться.

  4. На вкладке меню "Файл" откройте новую записную книжку или используйте сочетание клавиш CTRL+N.

  5. В новом окне запроса выполните приведенный ниже скрипт, чтобы создать задание потоковой передачи T-SQL. Перед выполнением скрипта обязательно измените следующие переменные:

    • @SQL_SA_Password: значение, указанное MSSQL_SA_PASSWORD при развертывании модуля SQL Azure Edge.
    USE IronOreSilicaPrediction;
    GO
    
    DECLARE @SQL_SA_Password VARCHAR(200) = '<SQL_SA_Password>';
    DECLARE @query VARCHAR(MAX);
    
    /* Create objects required for streaming */
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyStr0ng3stP@ssw0rd';
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_file_formats
            WHERE name = 'JSONFormat'
            )
    BEGIN
        CREATE EXTERNAL FILE FORMAT [JSONFormat]
            WITH (FORMAT_TYPE = JSON)
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_data_sources
            WHERE name = 'EdgeHub'
            )
    BEGIN
        CREATE EXTERNAL DATA SOURCE [EdgeHub]
            WITH (LOCATION = N'edgehub://')
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_streams
            WHERE name = 'IronOreInput'
            )
    BEGIN
        CREATE EXTERNAL STREAM IronOreInput
            WITH (
                    DATA_SOURCE = EdgeHub,
                    FILE_FORMAT = JSONFormat,
                    LOCATION = N'IronOreMeasures'
                    )
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.database_scoped_credentials
            WHERE name = 'SQLCredential'
            )
    BEGIN
        SET @query = 'CREATE DATABASE SCOPED CREDENTIAL SQLCredential
                     WITH IDENTITY = ''sa'', SECRET = ''' + @SQL_SA_Password + ''''
    
        EXECUTE (@query)
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_data_sources
            WHERE name = 'LocalSQLOutput'
            )
    BEGIN
        CREATE EXTERNAL DATA SOURCE LocalSQLOutput
            WITH (
                    LOCATION = 'sqlserver://tcp:.,1433',
                    CREDENTIAL = SQLCredential
                    )
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_streams
            WHERE name = 'IronOreOutput'
            )
    BEGIN
        CREATE EXTERNAL STREAM IronOreOutput
            WITH (
                    DATA_SOURCE = LocalSQLOutput,
                    LOCATION = N'IronOreSilicaPrediction.dbo.IronOreMeasurements'
                    )
    END
    
    EXEC sys.sp_create_streaming_job @name = N'IronOreData',
        @statement = N'Select * INTO IronOreOutput from IronOreInput';
    
    EXEC sys.sp_start_streaming_job @name = N'IronOreData';
    
  6. Используйте следующий запрос, чтобы убедиться, что данные модуля создания данных передаются в базу данных.

    SELECT TOP 10 *
    FROM dbo.IronOreMeasurements
    ORDER BY timestamp DESC;
    

В этом руководстве мы развернули модуль генератора данных и модуль SQL Azure для пограничных вычислений. Затем мы создали задание потоковой передачи, чтобы передать данные, созданные модулем создания данных, в SQL.

Следующие шаги