Azure IoT Operations 기본 제공 로컬 MQTT 브로커
Important
이 페이지에는 미리 보기 상태인 Kubernetes 배포 매니페스트를 사용하여 Azure IoT Operations 구성 요소를 관리하기 위한 지침이 포함되어 있습니다. 이 기능은 몇 가지 제한 사항을 제공하며 프로덕션 워크로드에 사용하면 안 됩니다.
베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
Azure IoT Operations는 확장 가능하고 고가용성 및 Kubernetes 네이티브인 엔터프라이즈급 표준 규격 MQTT 브로커를 제공합니다. Azure IoT 작업에 대한 메시징 평면을 제공하고, 양방향 에지/클라우드 통신을 가능하게 하며, 에지에서 이벤트 기반 애플리케이션을 기능을 제공합니다.
MQTT 규정 준수
MQTT(메시지 큐 원격 분석 전송)는 IoT 공간의 프로토콜 중 공통어로 등장했습니다. MQTT의 간단한 디자인을 통해 단일 브로커는 가벼운 게시-구독 토픽 생성 및 관리를 통해 동시에 수만 명의 클라이언트에게 서비스를 제공할 수 있습니다. 많은 IoT 디바이스는 MQTT를 기본적으로 지원하며, IoT 프로토콜의 긴 꼬리는 다운스트림 변환 게이트웨이를 통해 MQTT로 합리화됩니다.
MQTT 브로커는 IoT Operations의 메시징 계층을 뒷받침하고 MQTT v3.1.1 및 MQTT v5를 모두 지원합니다. 지원되는 MQTT 기능에 대한 자세한 내용은 MQTT 브로커의 MQTT 기능 지원을 참조하세요.
아키텍처
MQTT 브로커에는 다음 두 가지 주요 계층이 있습니다.
- 상태 비지정 프런트 엔드 계층입니다.
- 상태 저장 및 분할된 백 엔드 계층입니다.
프런트 엔드 계층은 클라이언트 연결 및 요청을 처리하고 백 엔드로 라우팅합니다. 백 엔드 계층은 클라이언트 세션의 클라이언트 ID 및 토픽 메시지의 토픽 이름과 같은 다양한 키로 데이터를 분할합니다. 체인 복제를 사용하여 각 파티션 내에서 데이터를 복제합니다.
아키텍처의 목표는 다음과 같습니다.
- 내결함성 및 격리: 백 엔드 Pod가 실패하고 오류가 시스템의 나머지 부분에 전파되지 않도록 하는 경우 메시지 게시가 계속됩니다.
- 오류 복구: 운영자 개입 없이 자동 오류 복구
- 메시지 손실 없음: 파티션에 하나 이상의 프런트 엔드 Pod와 백 엔드 Pod가 실행 중인 경우 메시지 배달
- 탄력적 크기 조정: 에지 및 클라우드 배포를 지원하기 위해 게시 및 구독 처리량의 수평적 크기 조정
- 규모에 따라 일관된 성능: 체인 복제로 인한 메시지 대기 시간 오버헤드 제한
- 운영 단순성: 유지 관리 및 복잡성을 간소화하기 위해 외부 구성 요소에 대한 최소 종속성
구성
구성의 경우 MQTT broker는 broker의 동작 및 기능의 다양한 측면을 정의하는 여러 Kubernetes 사용자 지정 리소스로 구성됩니다.
- 주 리소스는 카디널리티, 메모리 사용 프로필 및 진단 설정과 같은 전역 설정을 정의하는 Broker입니다.
- Broker는 각각 지정된 서비스 유형(NodePort, LoadBalancer 또는 ClusterIP)에서 들어오는 MQTT 연결을 수신 대기하는 BrokerListeners를 최대 3개까지 포함할 수 있습니다. 각 BrokerListener에는 여러 포트가 있을 수 있습니다.
- BrokerListener 내의 각 포트는 BrokerAuthentication 리소스 및 BrokerAuthorization 리소스와 연결할 수 있습니다. 포트에 연결할 수 있는 클라이언트와 브로커에서 수행할 수 있는 작업을 결정하는 인증 및 권한 부여 정책입니다.
따라서 Broker와 BrokerListener 간의 관계는 일대다이며 BrokerListener와 BrokerAuthentication/BrokerAuthorization 간의 관계는 다 대 다입니다. 이러한 리소스에 대한 ERD(엔터티 관계 다이어그램)는 다음과 같습니다.
기본적으로 Azure IoT Operations는 기본 Broker, 기본 BrokerListener 및 기본 BrokerAuthentication을 배포합니다. 이러한 모든 리소스는 기본값으로 명명됩니다. 이러한 리소스는 함께 Azure IoT Operations가 작동하는 데 필요한 기본 MQTT Broker 설정을 제공합니다. 기본 설정은 다음과 같습니다.
Important
Azure IoT Operations 내부 구성 요소 간의 통신으로 의도하지 않은 중단을 방지하려면 기본 구성을 수정하지 않는 것이 좋습니다.
MQTT broker 배포를 사용자 지정하려면 BrokerListeners, BrokerAuthentication 및 BrokerAuthorization과 같은 새 리소스를 기본 Broker에 추가 합니다.
Broker 리소스 자체는 변경할 수 없으며 배포 후에는 수정할 수 없지만 고급 시나리오에서만 사용자 지정이 필요합니다. Broker 리소스를 사용자 지정하는 방법에 대한 자세한 내용은 기본 Broker 사용자 지정을 참조하세요.
전체 배포에서는 각각 여러 포트가 있는 여러 BrokerListeners를 가질 수 있으며 각 포트에는 서로 다른 BrokerAuthentication 및 BrokerAuthorization 리소스가 연결될 수 있습니다.
예를 들어 기본 설정부터 다음을 추가합니다.
- 두 개의 포트가 1883 및 8883인 example-lb-listener라는 LoadBalancer BrokerListener
- 단일 포트가 1884인 example-nodeport-listener라는 NodePort BrokerListener (nodePort 31884)
- 사용자 지정 인증 방법을 사용하는 example-authn이라는 BrokerAuthentication 리소스
- 사용자 지정 권한 부여 설정을 사용하는 example-authz라는 BrokerAuthorization 리소스
그런 다음 모든 새 포트가 동일한 BrokerAuthentication 및 BrokerAuthorization 리소스를 사용하도록 구성하면 설정은 다음과 같습니다.
이렇게 하면 기본 설정을 그대로 유지하고 필요에 따라 MQTT broker 배포를 사용자 지정하는 새 리소스를 추가합니다.
기본 Broker 리소스
각 Azure IoT Operations 배포에는 하나의 Broker만 있을 수 있으며 기본값으로 이름이 지정되어야 합니다. Azure IoT Operations가 작동하려면 기본 Broker 리소스가 필요합니다. 변경할 수 없으며 배포 후에는 수정할 수 없습니다.
주의
기본 Broker 리소스를 삭제하지 마세요. 이렇게 하면 Azure IoT Operations 내부 구성 요소 간의 통신이 중단되고 배포가 작동을 중지합니다.
기본 Broker 사용자 지정
대부분의 설정에는 기본 Broker 리소스를 사용자 지정할 필요가 없습니다. 사용자 지정이 필요한 설정은 다음과 같습니다.
- 카디널리티: 더 많은 연결 및 메시지를 처리할 브로커의 용량을 결정하고 Pod 또는 노드 오류가 있는 경우 고가용성을 향상시킵니다.
- 메모리 프로필: broker의 최대 메모리 사용량 및 broker가 확장됨에 따라 메모리 사용량을 처리하는 방법을 설정합니다.
- 디스크 지원 메시지 버퍼: RAM이 채워짐에 따라 디스크에 메시지를 버퍼링하기 위한 구성입니다.
- 진단 설정: 로그 수준 및 메트릭 엔드포인트와 같은 진단 설정에 대한 구성입니다.
- 고급 MQTT 클라이언트 옵션: 세션 만료, 메시지 만료 및 연결 유지 설정과 같은 고급 MQTT 클라이언트 옵션에 대한 구성입니다.
- 내부 트래픽 암호화: broker 프런트 엔드와 백 엔드 Pod 간의 내부 트래픽을 암호화하기 위한 구성입니다.
Azure CLI 또는 Azure Portal을 사용하여 초기 배포 시간 동안 기본 브로커를 사용자 지정해야 합니다. 다른 Broker 구성 설정이 필요한 경우 새 배포가 필요합니다.
배포하는 동안 기본 Broker를 사용자 지정하려면 다음을 수행합니다.
Azure IoT Operations를 배포하기 위한 다음 가이드의 경우 구성 섹션에서 MQTT broker 구성을 살펴봅니다. 여기서 카디널리티 및 메모리 프로필 설정을 사용자 지정할 수 있습니다. 디스크 지원 메시지 버퍼 및 고급 MQTT 클라이언트 옵션을 비롯한 다른 설정을 구성하려면 Azure CLI를 사용합니다.
기본 Broker 설정 보기
기본 Broker에 대한 설정을 보려면 다음을 수행합니다.
- Azure Portal에서 Azure IoT Operations 인스턴스로 이동합니다.
- 구성 요소 아래에서 MQTT Broker를 선택합니다.
- Broker 세부 정보에서 JSON 보기를 선택합니다.