맷 5 브로커 (EMQX) - AWS IoT Greengrass

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

맷 5 브로커 (EMQX)

EMQX MQTT 브로커 구성 요소 (aws.greengrass.clientdevices.mqtt.EMQX) 는 클라이언트 디바이스와 그린그래스 코어 디바이스 간의 MQTT 메시지를 처리합니다. 이 구성 요소는 EMQX MQTT 5.0 브로커의 수정된 버전을 제공합니다. 이 MQTT 브로커를 배포하여 클라이언트 디바이스와 코어 디바이스 간 통신에 MQTT 5 기능을 사용할 수 있습니다. MQTT 브로커를 선택하는 방법에 대한 자세한 내용은 을 참조하십시오. MQTT 브로커를 선택하세요

이 브로커는 MQTT 5.0 프로토콜을 구현합니다. 여기에는 세션 및 메시지 만료 간격, 사용자 속성, 공유 구독, 주제 별칭 등에 대한 지원이 포함됩니다. MQTT 5는 MQTT 3.1.1과 역호환되므로 Moquette MQTT 3.1.1 브로커를 실행하는 경우 이를 EMQX MQTT 5 브로커로 교체할 수 있으며 클라이언트 디바이스는 평소와 같이 계속 연결되고 작동할 수 있습니다.

참고

클라이언트 디바이스는 Greengrass 코어 디바이스에 연결하여 MQTT 메시지와 데이터를 전송하여 처리하는 로컬 IoT 디바이스입니다. 자세한 정보는 로컬 IoT 기기와 상호작용을 참조하세요.

버전

이 구성 요소의 버전은 다음과 같습니다.

  • 2.0.x

  • 1.2.x

  • 1.1.x

  • 1.0.x

유형

구성 요소는 일반 구성 요소 () aws.greengrass.generic 입니다. Greengrass 핵은 구성 요소의 라이프사이클 스크립트를 실행합니다.

자세한 정보는 구성 요소 유형을 참조하세요.

운영 체제

이 구성 요소는 다음 운영 체제를 실행하는 코어 디바이스에 설치할 수 있습니다.

  • Linux

  • Windows

요구 사항

이 구성 요소의 요구 사항은 다음과 같습니다.

  • 코어 디바이스는 MQTT 브로커가 작동하는 포트에서 연결을 수락할 수 있어야 합니다. 이 구성 요소는 기본적으로 포트 8883에서 MQTT 브로커를 실행합니다. 이 구성 요소를 구성할 때 다른 포트를 지정할 수 있습니다.

    다른 포트를 지정하고 MQTT 브리지 구성 요소를 사용하여 MQTT 메시지를 다른 브로커에 릴레이하는 경우 MQTT 브리지 v2.1.0 이상을 사용해야 합니다. MQTT 브로커가 작동하는 포트를 사용하도록 구성하십시오.

    다른 포트를 지정하고 IP 탐지기 구성 요소를 사용하여 MQTT 브로커 엔드포인트를 관리하는 경우 IP 탐지기 v2.1.0 이상을 사용해야 합니다. MQTT 브로커가 작동하는 포트를 보고하도록 구성하십시오.

  • Linux 코어 디바이스에서 Docker는 코어 디바이스에 설치 및 구성되었습니다.

    • 도커 엔진 1.9.1 이상이 그린그래스 코어 디바이스에 설치되었습니다. 버전 20.10은 Core 소프트웨어와 함께 작동하는 것으로 검증된 최신 버전입니다. AWS IoT Greengrass Docker 컨테이너를 실행하는 구성 요소를 배포하려면 먼저 코어 디바이스에 Docker를 직접 설치해야 합니다.

    • Docker 데몬은 이 구성 요소를 배포하기 전에 코어 디바이스에서 시작되어 실행되었습니다.

    • 이 구성 요소를 실행하는 시스템 사용자에게는 루트 또는 관리자 권한이 있어야 합니다. 또는 docker 그룹의 시스템 사용자로 이 구성 요소를 실행하고 권한 없이 EQMX MQTT 브로커를 false 실행하도록 이 구성 요소의 requiresPrivileges 옵션을 구성할 수 있습니다.

  • EMQX MQTT 브로커 구성 요소는 VPC에서 실행되도록 지원됩니다.

  • EMQX MQTT 브로커 구성 요소는 플랫폼에서 지원되지 않습니다. armv7

의존성

구성 요소를 배포하면 호환되는 버전의 AWS IoT Greengrass 종속 항목도 배포됩니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 해당 종속성에 대한 요구 사항을 모두 충족해야 합니다. 이 섹션에는 이 구성 요소의 릴리스된 버전에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 시맨틱 버전 제약 조건이 나열되어 있습니다. 콘솔에서 구성 요소의 각 버전에 대한 종속성을 볼 수도 있습니다.AWS IoT Greengrass 구성 요소 세부 정보 페이지에서 종속성 목록을 찾아보십시오.

2.0.1

다음 표에는 이 구성 요소의 버전 2.0.1에 대한 종속성이 나열되어 있습니다.

종속성 호환되는 버전 종속성 유형
클라이언트 디바이스 인증 >=2.2.0 <2.6.0 하드
2.0.0

다음 표에는 이 구성 요소의 버전 2.0.0에 대한 종속성이 나와 있습니다.

종속성 호환되는 버전 종속성 유형
클라이언트 디바이스 인증 >=2.2.0 <2.5.0 하드
1.2.2 – 1.2.3

다음 표에는 이 구성 요소의 버전 1.2.2 ~ 1.2.3에 대한 종속성이 나와 있습니다.

종속성 호환되는 버전 종속성 유형
클라이언트 디바이스 인증 >=2.2.0 <2.5.0 하드
1.2.0 and 1.2.1

다음 표에는 이 구성 요소의 버전 1.2.0 및 1.2.1에 대한 종속성이 나와 있습니다.

종속성 호환되는 버전 종속성 유형
클라이언트 디바이스 인증 >=2.2.0 <2.4.0 하드
1.0.0 and 1.1.0

다음 표에는 이 구성 요소의 버전 1.0.0 및 1.1.0에 대한 종속성이 나와 있습니다.

종속성 호환되는 버전 종속성 유형
클라이언트 디바이스 인증 >=2.2.0 <2.3.0 하드

구성 요소 종속성에 대한 자세한 내용은 구성 요소 레시피 참조를 참조하십시오.

구성

2.0.0 - 2.0.1

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음과 같은 구성 매개 변수를 제공합니다.

중요

MQTT 5 브로커 (EMQX) 구성 요소 버전 2를 사용하는 경우 구성 파일을 업데이트해야 합니다. 버전 1 구성 파일은 버전 2에서 작동하지 않습니다.

EmqxConfig

(선택 사항) 사용할 EMQX MQTT 브로커 구성입니다. 이 구성 요소에서 EMQX 구성 옵션을 설정할 수 있습니다.

EMQX 브로커를 사용하는 경우 Greengrass는 기본 구성을 사용합니다. 이 컨피그레이션은 이 필드를 사용하여 수정하지 않는 한 사용됩니다.

다음 구성 설정을 수정하면 EMQX Broker 구성 요소가 다시 시작됩니다. 기타 구성 변경 사항은 구성 요소를 다시 시작하지 않아도 적용됩니다.

  • emqxConfig/cluster

  • emqxConfig/node

  • emqxConfig/rpc

참고

aws.greengrass.clientdevices.mqtt.EMQX보안에 민감한 옵션을 구성할 수 있습니다. 여기에는 TLS 설정, 인증 및 권한 부여 공급자가 포함됩니다. 상호 TLS 인증을 사용하는 기본 구성과 Greengrass 클라이언트 장치 인증 공급자를 사용하는 것이 좋습니다.

예: 기본 구성

다음 예는 MQTT 5 (EMQX) 브로커에 설정된 기본값을 보여줍니다. 구성 설정을 사용하여 이러한 설정을 재정의할 수 있습니다. emqxConfig

{ "authorization": { "no_match": "deny", "sources": [] }, "node": { "cookie": "<placeholder>" }, "listeners": { "ssl": { "default": { "ssl_options": { "keyfile": "{work:path}\\data\\key.pem", "certfile": "{work:path}\\data\\cert.pem", "cacertfile": null, "verify": "verify_peer", "versions": ["tlsv1.3", "tlsv1.2"], "fail_if_no_peer_cert": true } } }, "tcp": { "default": { "enabled": false } }, "ws": { "default": { "enabled": false } }, "wss": { "default": { "enabled": false } } }, "plugins": { "states": [{"name_vsn": "gg-1.0.0", "enable": true}], "install_dir": "plugins" } }
인증 모드

(선택 사항) 브로커의 권한 제공자를 설정합니다. 다음 값 중 하나일 수 있습니다.

  • enabled— (기본값) Greengrass 인증 및 권한 부여 공급자를 사용합니다.

  • bypass_on_failure— Greengrass 인증 공급자를 사용하고, Greengrass가 인증 또는 권한 부여를 거부하는 경우 EMQX 제공자 체인에 남아 있는 인증 공급자를 사용하십시오.

  • bypass— Greengrass 공급자가 비활성화되었습니다. 인증 및 권한 부여는 EMQX 공급자 체인에 의해 처리됩니다.

requiresPrivilege

(선택 사항) Linux 코어 디바이스에서는 루트 또는 관리자 권한 없이 EMQX MQTT 브로커를 실행하도록 지정할 수 있습니다. 이 옵션을 로 false 설정하는 경우 이 구성 요소를 실행하는 시스템 사용자가 그룹의 구성원이어야 합니다. docker

기본값: true

startupTimeoutSeconds

(선택 사항) EMQX MQTT 브로커가 시작되는 최대 시간 (초) 입니다. 이 제한 시간을 BROKEN 초과하면 구성 요소의 상태가 로 변경됩니다.

기본값: 90

ipcTimeoutSeconds

(선택 사항) Greengrass 핵이 IPC (프로세스 간 통신) 요청에 응답할 때까지 구성 요소가 대기하는 최대 시간 (초) 입니다. 이 구성 요소가 클라이언트 장치가 인증되었는지 확인할 때 시간 초과 오류를 보고하면 이 숫자를 늘리십시오.

기본값: 5

crtLogLevel

(선택 사항) CRT ( AWS 공용 런타임) 라이브러리의 로그 수준입니다.

EMQX MQTT 브로커 로그 레벨 (in) 이 기본값입니다. log.level emqx

restartIdentifier

(선택 사항) EMQX MQTT 브로커를 다시 시작하려면 이 옵션을 구성합니다. 이 구성 값이 변경되면 이 구성 요소는 MQTT 브로커를 다시 시작합니다. 이 옵션을 사용하여 클라이언트 디바이스의 연결을 강제로 끊을 수 있습니다.

dockerOptions

(선택 사항) Linux 운영 체제에서만 Docker 명령줄에 매개 변수를 추가하도록 이 옵션을 구성합니다. 예를 들어, 추가 포트를 매핑하려면 -p Docker 매개변수를 사용하십시오.

"-p 1883:1883"
예: v1.x 구성 파일을 v2.x로 업데이트

다음 예제는 v1.x 구성 파일을 버전 2.x로 업데이트하는 데 필요한 변경 사항을 보여줍니다.

버전 1.x 구성 파일:

{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" } }

v2에 해당하는 구성 파일:

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": "8883", "max_connections": "1024000", "max_conn_rate": "500", "handshake_timeout": "15s" } } }, "log": { "console": { "enable": true, "level": "warning" } } }, "authMode": "enabled" }

listener.ssl.external.rate_limit구성 항목에 해당하는 항목은 없습니다. use_greengrass_managed_certificates구성 옵션이 제거되었습니다.

예: 브로커의 새 포트 설정

다음 예에서는 MQTT 브로커가 작동하는 포트를 기본 8883에서 포트 1234로 변경합니다. Linux를 사용하는 경우 필드를 포함하십시오. dockerOptions

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": 1234 } } } }, "dockerOptions": "-p 1234:1234" }
예: MQTT 브로커의 로그 수준 조정

다음 예제는 MQTT 브로커의 로그 레벨을 로 변경합니다. debug 다음 로그 수준 중에서 선택할 수 있습니다.

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

기본 로그 수준은 입니다warning.

{ "emqxConfig": { "log": { "console": { "level": "debug" } } } }
예: EMQX 대시보드 활성화

다음 예제는 브로커를 모니터링하고 관리할 수 있도록 EMQX 대시보드를 활성화합니다. Linux를 사용하는 경우 필드를 포함하십시오. dockerOptions

{ "emqxConfig": { "dashboard": { "listeners": { "http": { "bind": 18083 } } } }, "dockerOptions": "-p 18083:18083" }
1.0.0 - 1.2.2

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음과 같은 구성 매개 변수를 제공합니다.

emqx

(선택 사항) 사용할 EMQX MQTT 브로커 구성 이 구성 요소에서 일부 EMQX 구성 옵션을 구성할 수 있습니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

listener.ssl.external

(선택 사항) MQTT 브로커가 작동하는 포트입니다.

참고

다른 포트를 지정하고 MQTT 브리지 구성 요소를 사용하여 MQTT 메시지를 다른 브로커에 릴레이하는 경우 MQTT 브리지 v2.1.0 이상을 사용해야 합니다. MQTT 브로커가 작동하는 포트를 사용하도록 구성하십시오.

다른 포트를 지정하고 IP 탐지기 구성 요소를 사용하여 MQTT 브로커 엔드포인트를 관리하는 경우 IP 탐지기 v2.1.0 이상을 사용해야 합니다. MQTT 브로커가 작동하는 포트를 보고하도록 구성하십시오.

기본값: 8883

listener.ssl.external.max_connections

(선택 사항) MQTT 브로커가 지원하는 최대 동시 연결 수입니다.

기본값: 1024000

listener.ssl.external.max_conn_rate

(선택 사항) MQTT 브로커가 수신할 수 있는 초당 최대 새 연결 수입니다.

기본값: 500

listener.ssl.external.rate_limit

(선택 사항) MQTT 브로커에 대한 모든 연결의 대역폭 제한. 해당 대역폭의 대역폭과 지속 시간을 쉼표 (,) 로 구분하여 다음 형식으로 지정합니다. bandwidth,duration 예를 들어 MQTT 브로커를 5초마다 50킬로바이트 (KB) 의 데이터로 50KB,5s 제한하도록 지정할 수 있습니다.

listener.ssl.external.handshake_timeout

(선택 사항) MQTT 브로커가 새 연결 인증을 완료할 때까지 기다리는 시간입니다.

기본값: 15s

mqtt.max_packet_size

(선택 사항) MQTT 메시지의 최대 크기.

기본값: 268435455 (256MB에서 1을 뺀 값)

log.level

(선택 사항) MQTT 브로커의 로그 수준. 다음 옵션 중 하나를 선택합니다.

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

기본 로그 수준은 입니다. warning

requiresPrivilege

(선택 사항) Linux 코어 디바이스에서는 루트 또는 관리자 권한 없이 EMQX MQTT 브로커를 실행하도록 지정할 수 있습니다. 이 옵션을 로 false 설정하는 경우 이 구성 요소를 실행하는 시스템 사용자가 그룹의 구성원이어야 합니다. docker

기본값: true

startupTimeoutSeconds

(선택 사항) EMQX MQTT 브로커가 시작되는 최대 시간 (초) 입니다. 이 제한 시간을 BROKEN 초과하면 구성 요소의 상태가 로 변경됩니다.

기본값: 90

ipcTimeoutSeconds

(선택 사항) Greengrass 핵이 IPC (프로세스 간 통신) 요청에 응답할 때까지 구성 요소가 대기하는 최대 시간 (초) 입니다. 이 구성 요소가 클라이언트 장치가 인증되었는지 확인할 때 시간 초과 오류를 보고하면 이 숫자를 늘리십시오.

기본값: 5

crtLogLevel

(선택 사항) CRT ( AWS 공용 런타임) 라이브러리의 로그 수준입니다.

EMQX MQTT 브로커 로그 레벨 (in) 이 기본값입니다. log.level emqx

restartIdentifier

(선택 사항) EMQX MQTT 브로커를 다시 시작하려면 이 옵션을 구성합니다. 이 구성 값이 변경되면 이 구성 요소는 MQTT 브로커를 다시 시작합니다. 이 옵션을 사용하여 클라이언트 디바이스의 연결을 강제로 끊을 수 있습니다.

dockerOptions

(선택 사항) Linux 운영 체제에서만 Docker 명령줄에 매개 변수를 추가하도록 이 옵션을 구성합니다. 예를 들어, 추가 포트를 매핑하려면 -p Docker 매개변수를 사용하십시오.

"-p 1883:1883"
mergeConfigurationFiles

(선택 사항) 지정된 EMQX 구성 파일의 기본값을 추가하거나 재정의하도록 이 옵션을 구성합니다. 구성 파일 및 해당 형식에 대한 자세한 내용은 EMQX 4.0 설명서의 구성을 참조하십시오. 지정한 값은 구성 파일에 추가됩니다.

다음 예제에서는 etc/emqx.conf 파일을 업데이트합니다.

"mergeConfigurationFiles": { "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s" },

EMQX에서 지원하는 구성 파일 외에도 Greengrass는 라는 EMQX용 Greengrass 인증 플러그인을 구성하는 파일을 지원합니다. etc/plugins/aws_greengrass_emqx_auth.conf auth_modeuse_greengrass_managed_certificates지원되는 옵션에는 및 두 가지가 있습니다. 다른 인증 제공업체를 사용하려면 auth_mode 옵션을 다음 중 하나로 설정합니다.

  • enabled— (기본값) Greengrass 인증 및 권한 부여 공급자를 사용합니다.

  • bypass_on_failure— Greengrass 인증 공급자를 사용하고, Greengrass가 인증 또는 권한 부여를 거부하는 경우 EMQX 제공자 체인에 남아 있는 인증 공급자를 사용하십시오.

  • bypass— Greengrass 공급자가 비활성화되었습니다. 그러면 EMQX 공급자 체인이 인증 및 권한 부여를 처리합니다.

use_greengrass_managed_certificates 경우 이 옵션은 Greengrass가 브로커 TLS 인증서를 관리한다는 것을 나타냅니다. true false인 경우 다른 소스를 통해 인증서를 제공했음을 나타냅니다.

다음 예제는 etc/plugins/aws_greengrass_emqx_auth.conf 구성 파일의 기본값을 업데이트합니다.

"mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" },
참고

aws.greengrass.clientdevices.mqtt.EMQX보안에 민감한 옵션을 구성할 수 있습니다. 여기에는 TLS 설정, 인증 및 권한 부여 공급자가 포함됩니다. 권장 구성은 상호 TLS 인증 및 Greengrass 클라이언트 장치 인증 공급자를 사용하는 기본 구성입니다.

replaceConfigurationFiles

(선택 사항) 지정된 EMQX 구성 파일을 대체하도록 이 옵션을 구성합니다. 지정한 값은 기존 구성 파일 전체를 대체합니다. 이 섹션에서는 etc/emqx.conf 파일을 지정할 수 없습니다. 를 사용하여 mergeConfigurationFile 수정해야 etc/emqx.conf 합니다.

예: 구성 병합 업데이트

다음 예제 컨피그레이션은 포트 443에서 MQTT 브로커를 작동하도록 지정합니다.

{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "requiresPrivilege": "true", "startupTimeoutSeconds": "90", "ipcTimeoutSeconds": "5" }

로컬 로그 파일

이 구성 요소는 다음 로그 파일을 사용합니다.

Linux
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
Windows
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
이 구성 요소의 로그를 보려면
  • 코어 기기에서 다음 명령을 실행하여 이 구성 요소의 로그 파일을 실시간으로 확인합니다. /greengrass/v2또는 C:\greengrass\v2 를 AWS IoT Greengrass 루트 폴더 경로로 바꿉니다.

    Linux
    sudo tail -f /greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait

라이선스

Windows 운영 체제에서 이 소프트웨어에는 Microsoft 소프트웨어 라이선스 약관에 따라 배포된 코드가 포함되어 있습니다. - Microsoft Visual Studio 커뮤니티 2022. 이 소프트웨어를 다운로드하면 해당 코드의 라이선스 약관에 동의하는 것으로 간주됩니다.

이 구성 요소는 Greengrass Core 소프트웨어 라이센스 계약에 따라 릴리스됩니다.

Changelog

다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.

v2.x

버전

변경

2.0.1

클라이언트 장치 인증 버전 2.5.0 릴리스용으로 버전이 업데이트되었습니다.

2.0.0

이 버전의 MQTT 5 브로커 (EMQX) 에는 버전 1.x와 다른 구성 매개변수가 필요합니다. 버전 1.x에 기본 구성이 아닌 구성을 사용하는 경우 구성 요소 구성을 2.x용으로 업데이트해야 합니다. 자세한 정보는 구성을 참조하세요.

새로운 기능
  • MQTT 브로커를 EMQX 5.1.1로 업그레이드합니다.

  • 구성 요소를 다시 시작하지 않고도 브로커 구성을 변경할 수 있습니다.

업데이트
  • emqx,mergeConfigurationFiles, emqxConfig 구성 필드를 대체하는 새 replaceConfigurationFiles 구성 필드를 추가합니다.

v1.x

버전

변경

1.2.3

버그 수정 및 개선
  • 클라이언트의 연결을 끊었다가 다시 인증하여 이전에 인증한 후 클라이언트가 EMQX와 상호 작용할 수 없었던 문제를 수정합니다.

1.2.2

클라이언트 장치 인증 버전 2.4.0 릴리스용으로 버전이 업데이트되었습니다.

1.2.1

버그 수정 및 개선
  • Visual C++ 재배포 가능 항목이 아직 없는 경우 Windows에서 구성 요소가 시작되지 않는 문제를 수정합니다.

  • EMQX를 버전 4.4.14로 업데이트합니다.

1.2.0

인증서 체인에 대한 지원을 추가합니다.

1.1.0

새로운 기능
  • 브로커 옵션 및 플러그인을 포함한 EMQX 구성에 대한 지원을 추가합니다.

버그 수정 및 개선
  • EMQX를 버전 4.4.9로 업데이트합니다.

1.0.1

TLS 핸드셰이크 중에 일부 MQTT 클라이언트가 연결에 실패하는 문제를 수정합니다.

1.0.0

초기 버전