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