MQTT 브로커를 사용하여 MQTT 메시지 게시 및 구독
Important
Azure IoT 작업 미리 보기 - Azure Arc에서 지원되는 Azure IoT 작업은 현재 preview로 제공됩니다. 프로덕션 환경에서는 이 미리 보기 소프트웨어를 사용하면 안 됩니다.
일반적으로 릴리스되는 릴리스가 제공되면 새로운 Azure IoT 작업 설치를 배포해야 합니다. 미리 보기 설치는 업그레이드할 수 없습니다.
베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
MQTT 브로커는 확장 가능하고, 고가용성이며, Kubernetes 네이티브인 엔터프라이즈급 표준 규격 MQTT 브로커를 제공합니다. Azure IoT 작업 미리 보기에 대한 메시징 평면을 제공하고, 양방향 에지/클라우드 통신을 가능하게 하며, 에지에서 이벤트 기반 애플리케이션을 기능을 제공합니다.
MQTT 규격
MQTT 브로커는 MQTT v3.1.1 및 MQTT v5를 모두 지원하는 표준 규격 MQTT 브로커를 제공합니다.
MQTT(메시지 큐 원격 분석 전송)는 IoT 공간의 프로토콜 중 공통어로 등장했습니다. MQTT의 간단한 디자인을 통해 단일 브로커는 가벼운 게시-구독 토픽 생성 및 관리를 통해 동시에 수만 명의 클라이언트에게 서비스를 제공할 수 있습니다. 많은 IoT 디바이스는 MQTT를 기본적으로 지원하며, IoT 프로토콜의 긴 꼬리는 다운스트림 변환 게이트웨이를 통해 MQTT로 합리화됩니다.
MQTT 브로커는 MQTT 프로토콜을 메시징 계층의 기초로 사용합니다. 지원되는 MQTT 기능에 대한 자세한 내용은 MQTT 브로커의 MQTT 기능 지원을 참조하세요.
고가용성 및 뛰어난 스케일링 성능
Kubernetes는 여러 인스턴스에서 실행되도록 워크로드를 수평적으로 확장할 수 있습니다. 이 중복성은 인스턴스가 다운되는 경우 요청 및 안정성을 제공할 수 있는 추가 용량을 의미합니다. Kubernetes에는 자체 복구가 기본 제공되고 인스턴스는 자동으로 복구됩니다.
Kubernetes는 탄력적 크기 조정 기술일 뿐만 아니라 DevOps의 표준이기도 합니다. MQTT가 IoT 프로토콜 사이의 공통어라면 Kubernetes는 컴퓨팅 인프라 계층의 공통어입니다. Kubernetes를 채택하면 어디서나 동일한 CI/CD 파이프라인, 도구, 모니터링, 앱 패키징, 직원 기술을 사용할 수 있습니다. 그 결과 클라우드 컴퓨팅, 온-프레미스 서버 및 공장 현장의 소규모 IoT 게이트웨이에서 단일 엔드투엔드 시스템이 생성됩니다. 인프라 또는 DevOps를 처리하는 데 소요되는 시간을 줄이고 비즈니스에 집중할 수 있습니다.
MQTT 브로커는 Kubernetes 에코시스템에 매끄럽게 적응하면서도 제공할 수 있는 고유한 에지 네이티브 데이터 평면 가치에 중점을 둡니다. MQTT를 기반으로 구축된 고성능 및 확장성 있는 메시징 플랫폼 평면을 제공하며, 확장 가능한 다른 Kubernetes 워크로드 및 Azure에 원활하게 통합됩니다.
기본적으로 보안 적용
MQTT 브로커는 전투에서 테스트된 Azure 및 Kubernetes 네이티브 보안 및 ID 개념을 기반으로 구축되어 매우 안전하고 유용합니다. 개별 MQTT 토픽 수준까지 세분화된 액세스 제어 메커니즘과 함께 유연성을 위한 여러 인증 메커니즘을 지원합니다.
팁
클러스터 IP, TLS 및 서비스 계정 토큰을 사용하여 기본 MQTT broker 배포에만 액세스할 수 있습니다. 클러스터 외부에서 연결하는 클라이언트는 연결하기 전에 추가 구성이 필요합니다.
Azure Arc integration(Azure Arc 통합)
Microsoft의 하이브리드 플랫폼은 Azure Arc를 단일 컨트롤 플레인으로 사용하여 Kubernetes 주변에 고정됩니다. 기존 Azure가 아닌, 온-프레미스 또는 기타 클라우드 리소스를 Azure Resource Manager에 프로젝트하는 관리 평면을 제공합니다. 그 결과 가상 머신, Kubernetes 클러스터 및 Azure 데이터 센터에서 실행되지 않는 데이터베이스를 관리하는 단일 제어 창이 생성됩니다.
MQTT 브로커는 Kubernetes용 Azure Arc 확장으로 배포되며 완전한 기능을 갖춘 Azure RP(리소스 공급자)인 microsoft/IoTOperationsMQ를 통해 관리할 수 있습니다. 즉, Virtual Machines, Storage 등과 같은 네이티브 Azure 클라우드 리소스처럼 관리할 수 있습니다.
Azure Arc 기술을 사용하면 변경 내용이 온-프레미스 Kubernetes 클러스터에서 실행되는 MQTT 브로커 서비스에 적용됩니다. 필요에 따라 완전히 Kubernetes 네이티브 접근 방식을 선호하는 경우 Kubernetes CRD(사용자 지정 리소스 정의)를 로컬로 사용하거나 Flux와 같은 GitOps 기술을 사용하여 MQTT 브로커를 관리할 수 있습니다.
클라우드 커넥터
클라우드 시나리오에 대한 메시징 요구 사항이 다를 수 있습니다. 예를 들어 우선순위가 높은 데이터를 위한 또는 거의 실시간 클라우드 대시보드를 지원하는 양방향 클라우드/에지 빠른 경로, 일괄적으로 업데이트할 수 있는 시간이 덜 중요한 데이터를 위한 낮은 비용의 느린 경로가 있습니다.
유연성을 제공하기 위해 MQTT 브로커는 Event Hubs에 기본 제공 Azure Connectors(Kafka 엔드포인트 사용), Event Grid의 MQTT 브로커 기능, Microsoft Fabric 및 Blob Storage를 제공합니다. MQTT 브로커는 확장 가능하므로 솔루션에서 작동하는 기본 클라우드 메시징 솔루션을 선택할 수 있습니다.
Azure Arc를 기반으로 구축하면 강력한 Azure RBAC(역할 기반 액세스 제어)를 사용하여 클라우드 서비스에 액세스하기 위해 Azure 관리 ID를 사용하도록 커넥터를 구성할 수 있습니다. 수동적이고, 안전하지 않고, 번거로운 자격 증명 관리가 필요하지 않습니다.
Dapr 프로그래밍 모델
Dapr는 상태 관리, 서비스 간 호출 및 게시-구독 메시징과 같은 일반적인 분산 애플리케이션 기능을 노출하여 분산 애플리케이션 간의 배관을 간소화합니다. Dapr 구성 요소는 빌딩 블록 아래에 있으며 각 기능에 대한 구체적인 구현을 제공합니다. 비즈니스 논리에 집중하고 Dapr에서 분산 애플리케이션 세부 정보를 처리하도록 할 수 있습니다.
MQTT 브로커는 플러그형 Dapr 게시-구독 및 상태 저장 빌딩 블록을 제공하여 에지에서 이벤트 기반 애플리케이션을 쉽고 기술에 구애받지 않고 개발 및 배포할 수 있도록 합니다.
아키텍처
MQTT 브로커에는 다음 세 개의 계층이 있습니다.
- 클라이언트 요청을 처리하는 상태 비지정 프런트 엔드 계층
- 요청을 라우팅하고 브로커를 다른 사용자에게 연결하는 부하 분산 장치
- 데이터를 저장하고 처리하는 상태 저장 및 분할된 백 엔드 계층
백 엔드 계층은 클라이언트 세션의 클라이언트 ID 및 토픽 메시지의 토픽 이름과 같은 다양한 키로 데이터를 분할합니다. 체인 복제를 사용하여 각 파티션 내에서 데이터를 복제합니다. 모든 파티션에서 공유하는 데이터의 경우 모든 파티션에 걸쳐 있는 단일 체인을 사용합니다.
아키텍처의 목표는 다음과 같습니다.
- 내결함성 및 격리: 백 엔드 노드가 실패하고 오류가 시스템의 나머지 부분에 전파되지 않도록 하는 경우 메시지 게시가 계속됩니다.
- 오류 복구: 운영자 개입 없이 자동 오류 복구
- 메시지 손실 없음: 하나 이상의 프런트 엔드 노드와 하나의 백 엔드 노드가 실행 중인 경우 메시지 전달
- 탄력적 크기 조정: 에지 및 클라우드 배포를 지원하기 위해 게시 및 구독 처리량의 수평적 크기 조정
- 규모에 따라 일관된 성능: 체인 복제로 인한 메시지 대기 시간 오버헤드 제한
- 운영 단순성: 유지 관리 및 복잡성을 간소화하기 위해 외부 구성 요소에 대한 최소 종속성