Azure Sphere에 대한 Azure IoT Edge 설정

Azure IoT Edge Azure Sphere 및 Azure IoT Hub 같은 다운스트림 디바이스 간에 필터링 및 데이터 처리 계층을 제공합니다. Azure Sphere 디바이스에서 사후 처리가 필요한 상당한 양의 데이터 또는 데이터를 생성하는 경우 Azure IoT Edge 사용하는 것이 좋습니다.

이 항목에서는 Azure Sphere를 사용하여 Azure IoT Edge 디바이스를 설정하는 단계를 문서화합니다. Azure Sphere는 Azure IoT Edge 버전 1.1 및 1.2를 모두 지원합니다. 지침에 중요한 차이점이 나와 있습니다. 기본 차이점은 다음과 같습니다.

  • 패키지 이름이 에서 iotedgeaziot-edge로 변경되었습니다.
  • 기본 구성 파일에는 새 이름과 위치가 있습니다. Azure IoT Edge 1.1에서 구성 파일은 /etc/iotedge/config.yaml이었습니다. Azure IoT Edge 1.2에서 구성 파일은 /etc/aziot/config.toml입니다.
  • Azure IoT Edge 1.2에는 네트워크의 DNS 서버를 통해 액세스할 수 있는 FQDN(정규화된 도메인 이름)이 필요합니다.

이 항목의 작업을 완료하면 Azure Sphere 디바이스는 투명한 게이트웨이 역할을 하는 Azure IoT Edge 디바이스를 통해 Azure IoT Hub 데이터를 보내도록 구성됩니다. Azure IoT Edge 모듈 가이드에 따라 Azure IoT Edge 디바이스에서 모듈을 사용하여 데이터 필터링 및 처리를 추가할 수 있습니다.

시작하기 전에

이 항목의 단계에서는 다음을 가정합니다.

중요

무료로 Azure 구독을 만들 수 있지만 등록 프로세스에서는 크레딧 카드 번호를 입력해야 합니다. Azure는 여러 수준의 구독 서비스를 제공합니다. 기본적으로 월별 서비스 요금이 필요한 표준 계층은 Azure IoT Hub instance 만들 때 선택됩니다. 월별 요금을 방지하려면 무료 계층을 선택합니다. 무료 계층에는 디바이스 쌍을 포함하여 Azure IoT Hub instance 디바이스를 사용하는 데 필요한 서비스가 포함됩니다. Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니 다.

개요

Azure IoT Edge 디바이스를 설정하고 Azure Sphere 디바이스를 사용하도록 구성하려면 다단계 프로세스가 필요하며, 특히 Azure IoT Edge 익숙하지 않은 경우 단계를 진행하는 데 약 8시간을 계획해야 합니다. Azure IoT Edge 처음 사용하는 경우 각 섹션의 빠른 시작 지침에 따라 Linux 가상 머신에서 실행되는 IoT Edge 디바이스를 설정하고 구성합니다.

이러한 단계는 Azure Sphere 카탈로그 및 Azure IoT Edge 디바이스당 한 번만 완료해야 합니다. 그러나 각 Azure Sphere 디바이스는 Azure IoT Hub 수동으로 구성해야 하며 Azure IoT Edge 디바이스는 Azure Sphere 디바이스의 부모로 설정해야 합니다.

설정 단계는 다음 세 가지 논리 그룹으로 나눌 수 있습니다.

  • IoT Edge 디바이스를 투명 게이트웨이로 만들고 구성합니다.

    • 1단계. Azure IoT Edge 디바이스를 만듭니다.
    • 2단계. Azure IoT Edge 게이트웨이 디바이스를 서버로 구성합니다.
    • 3단계. 통신을 위해 Azure IoT Edge 게이트웨이 디바이스 포트를 엽니다.
    • 4단계. config.toml(Azure IoT Edge 버전 1.2) 또는 config.yaml(Azure IoT Edge 버전 1.1)에서 게이트웨이 호스트 이름을 업데이트합니다.
  • Azure IoT Hub Azure Sphere 디바이스 구성

    • 5단계. Azure IoT Edge 디바이스를 Azure Sphere 디바이스의 부모로 설정합니다.
  • Azure Sphere 디바이스와 IoT Edge 디바이스 간에 신뢰할 수 있는 연결 설정

    • 6단계. Azure Sphere 디바이스의 카탈로그 CA 인증서를 Azure IoT Edge 디바이스에 제공합니다.
    • 7단계. Azure IoT Edge 디바이스의 루트 CA 인증서를 Azure Sphere 디바이스에 제공합니다.

1단계. Azure IoT Edge 디바이스 만들기

Azure IoT Edge 디바이스를 설정하고 아직 등록하지 않은 경우 Azure IoT Hub 등록해야 합니다.

DPS(Device Provisioning Service)를 사용하여 Azure IoT Edge 디바이스를 프로비전할 수 있습니다. 그러나 DPS를 사용하여 Azure Sphere 디바이스를 프로비전할 수는 없습니다. Azure IoT Hub DPS를 사용하여 Azure IoT Edge 디바이스 다운스트림 디바이스의 자동 프로비저닝은 지원되지 않습니다.

IoT Edge 빠른 시작의 단계에 따라 Linux VM 또는 Windows 디바이스에서 실행되는 Azure IoT Edge 디바이스를 설정하고 Azure IoT Hub 등록할 수 있습니다.

빠른 시작의 단계를 사용하여 다음을 수행합니다.

  • Azure IoT Edge 디바이스를 Azure IoT Hub instance 등록합니다. 이 단계에서는 새 IoT Hub를 만들지 말고 Azure IoT Edge 디바이스를 이미 만든 IoT Hub에 등록하기만 하면 됩니다.
  • Azure IoT Edge 디바이스에서 Azure IoT Edge 런타임을 설치하고 시작합니다.

참고

IoT Edge 빠른 시작에서 모듈을 배포하기 전에 중지합니다.

2단계. IoT Edge 게이트웨이 디바이스를 서버로 구성

Azure IoT Edge 디바이스가 투명한 게이트웨이(Azure IoT Edge 1.2) 또는 Azure IoT Edge 1.1로 작동하도록 구성의 지침에 따라 "게이트웨이 디바이스에서 포트 열기" 섹션에 도달하면 중지합니다. 이러한 지침은 인증서 파일을 IoT Edge 디바이스에 복사하도록 지시하지만 이 절차의 8단계까지 VM에 파일을 복사하지 마세요.

디바이스 게이트웨이를 서버로 구성하기 위해 완료한 단계의 일부로 이미 다음이 있습니다.

  • Azure IoT Edge 디바이스 인증서를 구성했습니다.
  • Azure IoT Edge 허브 모듈을 배포했습니다.
  • Azure IoT Edge 통해 메시지 라우팅을 구성했습니다.

또한 이러한 단계의 일부로 다음 인증서를 만들었습니다.

  • 루트 CA 인증서: certs/azure-iot-test-only.root.ca.cert.pem
  • 디바이스 CA 인증서 및 프라이빗 키(IoT Hub IoT Edge 디바이스를 등록하는 데 사용됨):
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge CA 인증서 및 프라이빗 키(IoT Edge 디바이스에 복사되고 해당 구성 파일에서 참조될 수 있음)
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

빠른 시작을 따르는 경우 인증서를 생성하는 컴퓨터가 Linux 기반 컴퓨터인 경우 데모 인증서를 구성하기 위한 Linux 지침을 사용합니다. 인증서를 생성하는 컴퓨터가 Windows 기반 컴퓨터인 경우 Windows 지침을 사용하여 데모 인증서를 생성합니다. 루트 인증서를 Linux VM 또는 로컬 Windows 컴퓨터에 복사하려면 섹션을 참조하세요.

Azure IoT Edge 루트 CA 인증서는 7단계에서 수정되지만 8단계에서 원래 인증서가 필요합니다. 다시 사용할 수 있도록 원본 인증서의 복사본을 유지합니다.

참고

config.toml(Azure IoT Edge 1.2) 또는 config.yaml(Azure IoT Edge 1.1) 파일의 인증서 섹션을 업데이트하는 경우 config.toml(Azure IoT Edge 1.2) 또는 config.yaml(Azure IoT Edge 1.1)의 줄에 앞의 공백이 없고 중첩된 각 인증서가 두 개의 공백으로 들여쓰기되었는지 확인 certificates: 합니다.

파일을 업데이트한 후 edgehub 모듈이 Azure IoT Edge 디바이스에서 실행되고 있는지 확인합니다.

sudo iotedge list

자세한 내용은 IoT Edge 디바이스를 게이트웨이로 사용하는 방법(Azure IoT Edge 1.2) 또는 Azure IoT Edge 1.1을 참조하세요.

테스트 인증서를 사용하는 경우 다운스트림 디바이스 인증서 만들기(Azure IoT Edge 1.2) 또는 Azure IoT Edge 1.1에 설명된 대로 다운스트림 디바이스 인증서를 생성하기 전에 중지합니다.

3단계. 통신을 위해 Azure IoT Edge 게이트웨이 디바이스 포트 열기

게이트웨이 디바이스는 다운스트림 디바이스에서 메시지를 받을 수 있어야 합니다. 게이트웨이 시나리오가 작동하려면 다운스트림 디바이스의 인바운드 트래픽에 대해 IoT Hub의 지원되는 프로토콜 중 하나 이상을 열어야 합니다.

Azure Sphere는 프로토콜 MQTT를 사용합니다. 이 프로토콜은 포트 8883을 사용합니다.

자세한 내용은 게이트웨이 디바이스에서 포트 열기(Azure IoT Edge 1.2) 또는 Azure IoT Edge 1.1을 참조하세요.

빠른 시작에서 Edge 디바이스를 설정한 후 다음 단계에 따라 Windows VM에서 포트 8883을 엽니다.

  1. 필요한 경우 Azure 계정을 사용하여 Azure Portal 로그인합니다.
  2. 1단계: Azure IoT Edge 디바이스 만들기 섹션에서 만든 가상 머신으로 이동합니다.
  3. 왼쪽의 설정 섹션에서 네트워킹, 인바운드 포트 규칙 추가 차례로 선택합니다.
  4. 인바운드 포트 규칙 추가 블레이드의 대상 포트 범위에서 값을 8883으로 변경합니다.
  5. 프로토콜에서 TCP를 선택합니다.
  6. 이름에서 값을 MQTT로 변경합니다.
  7. 다른 모든 설정을 기본값으로 두고 추가를 선택합니다.

빠른 시작에서 Azure IoT Edge 디바이스를 설정한 후 Linux VM에서 포트 8883을 열려면 다음 단계를 수행합니다.

  1. 다음 명령을 실행하여 MQTT에 대한 포트가 열려 있는지 여부를 검사.

    sudo netstat -lptu

  2. 필요한 경우 다음 명령을 사용하여 포트를 엽니다.

    sudo ufw allow 8883

이렇게 하면 Azure IoT Edge Gateway에 대한 MQTT 프로토콜에 대한 통신을 허용하는 인바운드 보안 규칙이 정의됩니다.

4단계. 게이트웨이 호스트 이름 업데이트

이 단계에서는 사용 중인 Azure IoT Edge 버전(Azure IoT Edge 1.2 또는 Azure IoT Edge 1.1)에 따라 다른 절차를 사용합니다.

Azure IoT Edge 1.2: config.toml에서 게이트웨이 호스트 이름 업데이트

Azure IoT Edge 런타임은 64자 미만의 호스트 이름을 지원합니다. 물리적 컴퓨터에는 일반적으로 긴 호스트 이름이 없지만 빠른 시작의 예제와 같이 가상 머신을 Azure IoT Edge 디바이스로 사용하는 경우 호스트 이름을 수동으로 구성해야 합니다.

잘못된 호스트 이름을 해결하려면 일반적인 오류 해결을 참조하세요.

빠른 시작에서 MQTT 포트를 구성한 후 Azure IoT Edge 디바이스 호스트 이름을 구성하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 IoT Edge 디바이스(Linux VM)로 이동하고 개요 페이지에서 DNS 이름 값을 복사하여 IoT Edge 게이트웨이에 대한 FQDN(정규화된 도메인 이름)을 찾습니다.

  2. 필요한 경우 Azure IoT Edge 디바이스에 로그인합니다.

  3. 텍스트 편집기에서 config.toml 파일을 엽니다.

    /etc/aziot/config.toml

  4. FQDN을 config.toml의 호스트 이름 섹션에 붙여넣습니다. 이름이 모두 소문자인지 확인합니다.

    hostname: "<iotedge_machinename>.<mydomain>"
    

    참고

    Azure IoT Edge v1.2 이상으로 디자인된 호스트 이름은 FQDN 이름이어야 합니다(IP 주소는 v1.1에서와 같이 더 이상 허용되지 않음). 따라서 동일한 네트워크에 적절한 A 레코드가 있는 DNS 서버는 필수입니다.

  5. 디먼을 iotedge 다시 시작합니다.

    sudo systemctl restart iotedge

  6. 상태 오류("[ERROR]"가 접두사로 지정된 색 텍스트)가 표시되는 경우 디먼 로그에서 자세한 오류 정보를 확인합니다.

    sudo journalctl -u iotedge --no-pager --no-full

  7. 경고를 방지하려면 /etc/docker/daemon.json에 구성 파일을 포함하도록 Azure IoT Edge 디바이스의 모듈에 대한 DNS 구성을 설정합니다. 예를 들면 다음과 같습니다.

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1: config.yaml에서 게이트웨이 호스트 이름 업데이트

Azure IoT Edge 런타임은 64자 미만의 호스트 이름을 지원합니다. 물리적 컴퓨터에는 일반적으로 긴 호스트 이름이 없지만 빠른 시작의 예제와 같이 가상 머신을 Azure IoT Edge 디바이스로 사용하는 경우 호스트 이름을 수동으로 구성해야 합니다.

잘못된 호스트 이름을 해결하려면 일반적인 오류 해결을 참조하세요.

빠른 시작에서 MQTT 포트를 구성한 후 Azure IoT Edge 디바이스 호스트 이름을 구성하려면 다음 단계를 수행합니다.

  1. Azure Portal 가상 머신으로 이동합니다. 개요 섹션에서 DNS 이름(컴퓨터의 FQDN) 값을 복사합니다.

  2. 필요한 경우 Azure IoT Edge 디바이스에 로그인합니다.

  3. 텍스트 편집기에서 config.yaml 파일을 엽니다.

    /etc/iotedge/config.yaml

  4. FQDN을 config.yaml의 호스트 이름 섹션에 붙여넣습니다. 이름이 모두 소문자인지 확인합니다.

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    참고

    Azure Sphere는 netbios를 지원하지 않으므로 DNS 확인자를 네트워크에 있는 경우 호스트 이름(IP 주소 또는 실제 호스트 이름)에 대해 운영 체제 미설정 이름을 사용해야 할 수 있습니다.

  5. 디먼을 iotedge 다시 시작합니다.

    sudo systemctl restart iotedge

  6. 상태 오류("[ERROR]"가 접두사로 지정된 색 텍스트)가 표시되는 경우 디먼 로그에서 자세한 오류 정보를 확인합니다.

    sudo journalctl -u iotedge --no-pager --no-full

  7. 경고를 방지하려면 /etc/docker/daemon.json에 구성 파일을 포함하도록 Azure IoT Edge 디바이스의 모듈에 대한 DNS 구성을 설정합니다. 예를 들면 다음과 같습니다.

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

5단계. Azure IoT Edge 디바이스를 Azure Sphere 디바이스의 부모로 설정

다음 단계에 따라 Azure IoT Edge 디바이스를 Azure Sphere 디바이스의 부모로 설정합니다.

  1. 위에서 수동으로 프로비전된 Azure Sphere 디바이스로 이동합니다.
  2. 디바이스 ID를 선택합니다.
  3. 부모 디바이스 없음에서 기어 아이콘을 선택합니다.
  4. 부모로 설정할 Azure IoT Edge 디바이스를 선택합니다.
  5. 확인을 선택한 다음 저장을 선택합니다.

이제 Azure IoT Edge 디바이스가 Azure Sphere 디바이스의 부모가 됩니다.

6단계. azure Sphere 디바이스의 카탈로그 CA 인증서를 IoT Edge 디바이스에 제공합니다.

Azure Sphere 디바이스 인증서를 확인하려면 Azure IoT Edge 디바이스에 카탈로그 CA의 자체 복사본이 있어야 합니다.

  1. 카탈로그 CA 인증서를 아직 다운로드하지 않은 경우 다운로드합니다. 참고: Azure IoT Hub 구성의 일부로 이미 완료했어야 합니다.

    • 명령 프롬프트에서 Azure 로그인으로 로그인합니다.

      az login
      
    • Azure Sphere 카탈로그에 대한 CA 인증서를 다운로드합니다. 이 명령은 인증서를 현재 작업 디렉터리의 CAcertificate.cer 파일에 다운로드합니다. 쓰기 권한이 있는 디렉터리에 파일을 다운로드하거나 다운로드 작업이 실패하는지 확인합니다. 출력 파일에는 .cer 확장명이 있어야 합니다.

      az sphere ca-certificate download --resource-group MyResourceGroup --catalog MyCatalog --output-file CACertificate.cer
      
  2. 카탈로그 CA 인증서를 PEM 형식으로 변환합니다. Windows 컴퓨터에서 형식을 변환하기 위한 예제 지침은 다음과 같습니다.

    • 컴퓨터에서 인증서의 경로를 찾고 인증서를 두 번 클릭하여 엽니다.
    • 세부 정보 탭을 열고 파일에 복사를 선택합니다.
    • 인증서 내보내기 마법사에서 다음을 선택합니다.
    • Base-64로 인코딩된 X.509(CER) 형식을 선택한 다음, 다음을 선택합니다.
    • 내보낼 인증서의 파일 이름을 입력한 다음, 다음을 선택합니다.
    • 마침을 선택하여 마법사를 완료합니다.
    • 다운로드한 인증서 파일의 이름을 .pem 파일 확장명으로 바꿉니다.
  3. Azure IoT Edge 루트 인증서에 카탈로그 인증서를 추가합니다. 2단계에서 Azure IoT Edge 인증서를 만들었습니다.

    • 필요한 경우 Azure IoT Edge 디바이스에 로그인합니다.
    • IoT Edge 디바이스의 루트 CA 인증서 경로를 찾아 텍스트 편집기에서 엽니다. 빠른 시작을 따라 Azure IoT Edge git 리포지토리에 제공된 스크립트를 사용하여 데모 인증서를 만든 경우 루트 CA 인증서의 이름은 azure-iot-test-only.root.ca.cert.pem입니다.
    • 텍스트 편집기에서 Azure Sphere 카탈로그 CA 인증서(PEM 형식)를 엽니다. 콘텐츠를 복사하여 IoT Edge 루트 CA 인증서 끝에 붙여넣습니다.
    • Azure IoT Edge 루트 CA 인증서에 대한 변경 내용을 저장한 다음 파일을 닫습니다.
    • Azure IoT Edge 디바이스를 다시 시작합니다. Linux Azure IoT Edge 디바이스의 경우 를 sudo systemctl restart iotedge실행합니다.
    • 모듈이 Azure IoT Edge 디바이스에서 실행되고 있는지 확인합니다. Linux Azure IoT Edge 디바이스의 경우 를 sudo iotedge list실행합니다.

7단계. Azure Sphere 디바이스에 Azure IoT Edge 디바이스의 루트 CA 인증서 제공

Azure IoT Edge 디바이스 인증서를 확인하려면 Azure Sphere 디바이스(다운스트림 디바이스)에 2단계에서 구성한 Azure IoT Edge 디바이스 루트 CA 인증서의 자체 복사본이 있어야 합니다.

자세한 내용은 Azure IoT Edge 게이트웨이에 다운스트림 디바이스 연결을 참조하세요.

  1. 원래 Azure IoT Edge 디바이스 루트 인증서를 찾습니다.

    • 원래 Azure IoT Edge 디바이스 루트 인증서는 2단계에서 만든 인증서입니다.
    • 빠른 시작을 수행하고 IoT Edge git 리포지토리에 제공된 스크립트를 사용하여 데모 인증서를 만든 경우 루트 CA 인증서를 azure-iot-test-only.root.ca.cert.pem이라고 합니다.
  2. Azure IoT Edge 루트 인증서를 애플리케이션 패키지에 추가하여 Azure Sphere 디바이스에 복사합니다.

8단계. 원격 컴퓨터에 IoT 루트 인증서 복사

Azure IoT Edge 루트 인증서를 원격 Linux VM 또는 로컬 Windows 컴퓨터에 복사하려면 다음 단계를 수행합니다.

  • WinSCP 도구를 설치하여 파일을 전송할 수 있습니다. 이 도구는 명령줄 접근 방식보다 사용하기 쉽도록 GUI를 제공합니다.

  • 명령줄을 사용하려면 SCP(보안 복사) 명령줄 도구를 사용합니다.

  • 로컬 Windows 컴퓨터에서 원격 Linux VM으로 파일을 전송하려면 Windows PowerShell 다음 명령을 실행합니다.

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    샘플 구문:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • 원격 Linux VM에서 로컬 Windows 컴퓨터로 파일을 전송하려면 Windows PowerShell 다음 명령을 실행합니다.

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    샘플 구문:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

문제 해결

사용자 환경에서 Azure IoT Edge 실행하는 데 문제가 발생하는 경우 문제 해결 및 진단 다음 문서를 사용합니다.

다음 단계

  • 이 항목의 단계를 완료한 후 Azure IoT Edge 사용하여 연결하는 지침에 따라 Azure IoT 샘플을 실행할 수 있습니다.