기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
MQTT 브로커 5개(EMQX)
EMQX MQTT 브로커 구성 요소(aws.greengrass.clientdevices.mqtt.EMQX
)는 클라이언트 디바이스와 Greengrass 코어 디바이스 간의 MQTT 메시지를 처리합니다. 이 구성 요소는 수정된 버전의 EMQX MQTT 5.0 브로커
이 브로커는 MQTT 5.0 프로토콜을 구현합니다. 여기에는 세션 및 메시지 만료 간격, 사용자 속성, 공유 구독, 주제 별칭 등에 대한 지원이 포함됩니다. MQTT 5는 MQTT 3.1.1과 역호환되므로 Moquette MQTT 3.1.1 브로커를 실행하는 경우 5EMQXMQTT개의 브로커로 대체할 수 있으며 클라이언트 디바이스는 평소와 같이 계속 연결 및 작동할 수 있습니다.
참고
클라이언트 디바이스는 Greengrass 코어 디바이스에 연결하여 처리할 MQTT 메시지와 데이터를 전송하는 로컬 IoT 디바이스입니다. 자세한 내용은 로컬 IoT 디바이스와 상호 작용 단원을 참조하십시오.
버전
이 구성 요소에는 다음과 같은 버전이 있습니다.
-
2.0.x
-
1.2.x
-
1.1.x
-
1.0.x
유형
이 구성 요소는 일반 구성 요소(aws.greengrass.generic
)입니다. Greengrass nucleus는 구성 요소의 수명 주기 스크립트를 실행합니다.
자세한 내용은 구성 요소 유형 단원을 참조하십시오.
운영 체제
이 구성 요소는 다음 운영 체제를 실행하는 코어 디바이스에 설치할 수 있습니다.
Linux
Windows
요구 사항
이 구성 요소에는 다음과 같은 요구 사항이 있습니다.
-
코어 디바이스는 MQTT브로커가 작동하는 포트에서 연결을 수락할 수 있어야 합니다. 이 구성 요소는 기본적으로 포트 8883에서 MQTT브로커를 실행합니다. 이 구성 요소를 구성할 때 다른 포트를 지정할 수 있습니다.
다른 포트를 지정하고 MQTT 브리지 구성 요소를 사용하여 MQTT 메시지를 다른 브로커에 릴레이하는 경우 MQTT 브리지 v2.1.0 이상을 사용해야 합니다. MQTT 브로커가 작동하는 포트를 사용하도록 구성합니다.
다른 포트를 지정하고 IP 감지기 구성 요소를 사용하여 MQTT브로커 엔드포인트를 관리하는 경우 IP 감지기 v2.1.0 이상을 사용해야 합니다. MQTT 브로커가 작동하는 포트를 보고하도록 구성합니다.
-
Linux 코어 디바이스에서는 다음과 같이 Docker가 코어 디바이스에 설치 및 구성되어 있습니다.
-
Greengrass 코어 디바이스에 Docker Engine
1.9.1 이상이 설치되어 있어야 합니다. 버전 20.10은 AWS IoT Greengrass 코어 소프트웨어와 함께 작동하는 것으로 확인된 최신 버전입니다. Docker 컨테이너를 실행하는 구성 요소를 배포하기 전에 코어 디바이스에 직접 Docker를 설치해야 합니다. -
Docker 데몬이 이 구성 요소를 배포하기 전에 코어 디바이스에서 시작되어 실행 중입니다.
-
이 구성 요소를 실행하는 시스템 사용자에게 루트 또는 관리자 권한이 있어야 합니다. 또는
docker
그룹의 시스템 사용자로이 구성 요소를 실행하고 권한 없이 EQMXMQTT브로커를 실행false
하도록이 구성 요소의requiresPrivileges
옵션을 로 구성할 수 있습니다.
-
-
EMQX MQTT 브로커 구성 요소는에서 실행할 수 있습니다VPC.
-
EMQX MQTT 브로커 구성 요소는
armv7
플랫폼에서 지원되지 않습니다.
종속성
구성 요소를 배포할 때는 호환되는 버전의 종속성 AWS IoT Greengrass 도 배포합니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 모든 해당 종속성에 대한 요구 사항을 충족해야 합니다. 이 단원에는 이 구성 요소의 릴리스된 버전에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 의미 체계 버전 제약 조건이 나열되어 있습니다. AWS IoT Greengrass 콘솔
- 2.0.2
-
다음 표에는 이 구성 요소의 버전 2.0.2에 대한 종속성이 나열되어 있습니다.
종속성 호환 버전 종속성 유형 클라이언트 디바이스 인증 >=2.2.0 <2.6.0 소프트 - 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
-
이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.
중요
5 브로커(EMQX) 구성 요소의 버전 MQTT 2를 사용하는 경우 구성 파일을 업데이트해야 합니다. 버전 1 구성 파일은 버전 2에서 작동하지 않습니다.
- emqxConfig
-
(선택 사항) 사용할 EMQXMQTT브로커
구성입니다. 이 구성 요소에서 EMQX 구성 옵션을 설정할 수 있습니다. EMQX 브로커를 사용하면 Greengrass는 기본 구성을 사용합니다. 이 필드를 사용하여 수정하지 않는 한 이 구성이 사용됩니다.
다음 구성 설정을 수정하면 EMQX브로커 구성 요소가 다시 시작됩니다. 다른 구성 변경 사항은 구성 요소를 다시 시작하지 않고 적용됩니다.
-
emqxConfig/cluster
-
emqxConfig/node
-
emqxConfig/rpc
참고
aws.greengrass.clientdevices.mqtt.EMQX
를 사용하면 보안상 중요한 옵션을 구성할 수 있습니다. 여기에는 TLS 설정, 인증 및 권한 부여 공급자가 포함됩니다. 상호 TLS 인증 및 Greengrass 클라이언트 디바이스 인증 공급자를 사용하는 기본 구성을 사용하는 것이 좋습니다.예: 기본 구성
다음 예제에서는 5(EMQX) MQTT 브로커에 설정된 기본값을 보여줍니다.
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" } } -
- authMode
-
(선택 사항) 브로커의 권한 부여 공급자를 설정합니다. 다음 값 중 하나일 수 있습니다.
-
enabled
– (기본값) Greengrass 인증 및 권한 부여 공급자를 사용합니다. -
bypass_on_failure
- Greengrass 인증 공급자를 사용한 다음 Greengrass가 인증 또는 권한 부여를 거부하는 경우 EMQX 공급자 체인에 남아 있는 인증 공급자를 사용합니다. -
bypass
– Greengrass 공급자가 비활성화되었습니다. 인증 및 권한 부여는 EMQX 공급자 체인에서 처리합니다.
-
requiresPrivilege
-
(선택 사항) Linux 코어 디바이스에서 루트 또는 관리자 권한 없이 EMQXMQTT브로커를 실행하도록를 지정할 수 있습니다. 이 옵션을
false
로 설정하면 이 구성 요소를 실행하는 시스템 사용자가docker
그룹의 구성원이어야 합니다.기본값:
true
startupTimeoutSeconds
-
(선택 사항) EMQXMQTT브로커가 시작되는 최대 초 단위 시간입니다. 이 제한 시간이 초과되면 구성 요소의 상태가
BROKEN
으로 변경됩니다.기본값:
90
ipcTimeoutSeconds
-
(선택 사항) 구성 요소가 Greengrass 핵이 프로세스 간 통신(IPC) 요청에 응답할 때까지 기다리는 초 단위의 최대 시간입니다. 이 구성 요소가 클라이언트 디바이스에 권한이 있는지 확인할 때 제한 시간 오류를 보고하는 경우 이 수를 늘립니다.
기본값:
5
crtLogLevel
-
(선택 사항) AWS 공통 런타임(CRT) 라이브러리의 로그 수준입니다.
기본값은 EMQXMQTT브로커 로그 수준(
log.level
의 )입니다emqx
. restartIdentifier
-
(선택 사항) EMQXMQTT브로커를 다시 시작하려면이 옵션을 구성합니다. 이 구성 값이 변경되면이 구성 요소가 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
-
(선택 사항) 사용할 EMQXMQTT브로커
구성입니다. 이 구성 요소에서 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초마다 50KB(킬로바이트)의 데이터로 제한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 코어 디바이스에서 루트 또는 관리자 권한 없이 EMQXMQTT브로커를 실행하도록를 지정할 수 있습니다. 이 옵션을
false
로 설정하면 이 구성 요소를 실행하는 시스템 사용자가docker
그룹의 구성원이어야 합니다.기본값:
true
startupTimeoutSeconds
-
(선택 사항) EMQXMQTT브로커가 시작되는 최대 초 단위 시간입니다. 이 제한 시간이 초과되면 구성 요소의 상태가
BROKEN
으로 변경됩니다.기본값:
90
ipcTimeoutSeconds
-
(선택 사항) 구성 요소가 Greengrass 핵이 프로세스 간 통신(IPC) 요청에 응답할 때까지 기다리는 초 단위의 최대 시간입니다. 이 구성 요소가 클라이언트 디바이스에 권한이 있는지 확인할 때 제한 시간 오류를 보고하는 경우 이 수를 늘립니다.
기본값:
5
crtLogLevel
-
(선택 사항) AWS 공통 런타임(CRT) 라이브러리의 로그 수준입니다.
기본값은 EMQXMQTT브로커 로그 수준(
log.level
의 )입니다emqx
. restartIdentifier
-
(선택 사항) EMQXMQTT브로커를 다시 시작하려면이 옵션을 구성합니다. 이 구성 값이 변경되면이 구성 요소가 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" },
EMQXGreengrass는에서 지원하는 구성 파일 외에도 EMQX 라는 Greengrass 인증 플러그인을 구성하는 파일을 지원합니다
etc/plugins/aws_greengrass_emqx_auth.conf
. 지원되는 두 가지 옵션은auth_mode
및use_greengrass_managed_certificates
입니다. 다른 인증 공급자를 사용하려면auth_mode
옵션을 다음 중 하나로 설정합니다.-
enabled
– (기본값) Greengrass 인증 및 권한 부여 공급자를 사용합니다. -
bypass_on_failure
- Greengrass 인증 공급자를 사용한 다음 Greengrass가 인증 또는 권한 부여를 거부하는 경우 EMQX 공급자 체인에 남아 있는 인증 공급자를 사용합니다. -
bypass
– Greengrass 공급자가 비활성화되었습니다. 그런 다음 EMQX 공급자 체인에서 인증 및 권한 부여를 처리합니다.
이
use_greengrass_managed_certificates
인 경우true
이 옵션은 Greengrass가 브로커 TLS 인증서를 관리함을 나타냅니다.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 Client Device Auth 공급자를 사용하는 기본 구성입니다. -
replaceConfigurationFiles
-
(선택 사항) 지정된 구성 파일을 대체하도록이 옵션을 EMQX 구성합니다. 지정하는 값으로 기존 구성 파일 전체가 대체됩니다. 이 섹션에서는
etc/emqx.conf
파일을 지정할 수 없습니다.etc/emqx.conf
를 수정하려면mergeConfigurationFile
을 사용해야 합니다.
예: 구성 병합 업데이트
다음 예제 구성은 포트 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
-
/logs/aws.greengrass.clientdevices.mqtt.EMQX.log/greengrass/v2
- Windows
-
C:\greengrass\v2
\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
이 구성 요소의 로그를 보려면
-
코어 디바이스에서 다음 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다.
또는를 AWS IoT Greengrass 루트 폴더의 경로/greengrass/v2
C:\greengrass\v2
로 바꿉니다.- Linux
-
sudo tail -f
/logs/aws.greengrass.clientdevices.mqtt.EMQX.log/greengrass/v2
- Windows (PowerShell)
-
Get-Content
C:\greengrass\v2
\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait
라이선스
Windows 운영 체제에서 이 소프트웨어에는 Microsoft 소프트웨어 라이선스 조건 - Microsoft Visual Studio Community 2022
이 구성 요소는 Greengrass 코어 소프트웨어 라이선스 계약
Changelog
다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.
- v2.x
-
버전
변경 사항
2.0.2
- 버그 수정 및 개선 사항
-
-
클라이언트 디바이스 인증 구성 요소가 준비되기 전에가 EMQX 시작되는 문제를 해결합니다.
-
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
및replaceConfigurationFiles
구성 필드를 대체하는 새emqxConfig
구성 필드가 추가됩니다.
-
- v1.x
-
버전
변경 사항
1.2.3
- 버그 수정 및 개선 사항
-
-
클라이언트를 연결 해제하고 다시 인증하여 이전에 인증한 EMQX 후 클라이언트가 상호 작용할 수 없는 문제를 해결합니다.
-
1.2.2
클라이언트 디바이스 인증 버전 2.4.0 릴리스에 대한 버전이 업데이트되었습니다.
1.2.1
- 버그 수정 및 개선 사항
-
-
Visual C++ 재배포 가능 패키지가 아직 없는 경우 Windows에서 구성 요소가 시작되지 않는 문제를 해결합니다.
-
버전 4.4.14 EMQX 업데이트.
-
1.2.0
인증서 체인에 대한 지원을 추가합니다.
1.1.0
- 새로운 특성
-
-
브로커 옵션 및 플러그인을 포함한 EMQX 구성에 대한 지원을 추가합니다.
-
- 버그 수정 및 개선 사항
-
-
버전 4.4.9 EMQX 업데이트.
-
1.0.1
TLS 핸드셰이크 중에 일부 MQTT 클라이언트가 연결되지 않는 문제를 해결합니다.
1.0.0
초기 버전입니다.