Настройка Docker-создание моста EMQX (мост MQTT)

#docker-compose #mqtt #bridge #broker #emq

Вопрос:

Я пытаюсь создать настройку моста EMQ X (мост MQTT), используя только docker-compose. В качестве справки я смотрю на официальные документы. Вариант использования, который я имею в виду, — это соединение EMQ X Edge ( emqx-edge ) с EMQ X ( emqx ), а затем, когда сообщение будет опубликовано emqx-edge , оно будет переадресовано emqx . До сих пор я создал двух брокеров и сеть, чтобы они могли общаться(poc-мост).

Проблема в следующем : когда сообщение публикуется в теме(например sensor1/# ) для emqx-edge брокера, оно никогда не поступало emqx брокеру. Я не могу понять, что происходит не так..

Ниже приведен список докеров, который у меня есть до сих пор.

 version: '3.3'
    
networks:
  poc-bridge:
    external: true

services:
  mqtt-edge:
    image: emqx/emqx-edge:latest
    container_name: edge-broker
    restart: always
    environment:
      - EMQX_LOADED_PLUGINS= "emqx_bridge_mqtt"
      - EMQX_ADMIN_PASSWORD=brokerpw1
      - EMQX_BRIDGE__MQTT__AWS__ADDRESS=172.26.0.2:1883 #ip:port of mqtt-cloud
      - EMQX_BRIDGE__MQTT__AWS__PROTO_VER=mqttv3        
      - EMQX_BRIDGE__MQTT__AWS__BRIDGE_MODE=true          
      - EMQX_BRIDGE__MQTT__AWS__CLEAN_START=true         
      - EMQX_BRIDGE__MQTT__AWS__USERNAME=user          
      - EMQX_BRIDGE__MQTT__AWS__PASSWORD=passw                                                       
      - EMQX_BRIDGE__MQTT__AWS__CLIENTID=bridge_aws
      - EMQX_BRIDGE__MQTT__AWS__KEEPALIVE=10s                 
      - EMQX_BRIDGE__MQTT__AWS__FORWARDS=sensor1/#
    networks:
      - poc-bridge   
    ports:
      - 18083:18083
      - 1883:1883
      - 8883:8883
      - 8083:8083
    depends_on:
      - mqtt-cloud
      
  mqtt-cloud:
    image: emqx/emqx:latest
    container_name: cloud-broker
    restart: always
    networks:
      - poc-bridge
    ports:
      - 51883:1883
      - 58883:8883
      - 58083:8083
 

Комментарии:

1. Что значит mqtt-edge войти? Вероятно, это говорит вам, что не так — см. Документы для получения информации об уровнях журналов и т. Д., В то время как вы можете получить доступ к файлу журнала по умолчанию console , Ведение журнала может быть проще.

2. Привет, и спасибо вам за всю вашу помощь… Используя команду : журналы докеров —следуйте за edge-брокером , я не вижу ошибок (EMQ X Edge 4.3.5 запущен сейчас!).

Ответ №1:

Проблема решена. Мне не хватало еще нескольких конфигураций… Ниже приведен язык yaml, созданный докером для соединения emqx-edge с emqx.

 version: '3.3'

networks:
  poc-bridge:
    external: true


services:
  mqtt-edge:
    image: emqx/emqx-edge:latest
    container_name: edge-broker
    restart: always
    environment:
      - EMQX_LOADED_PLUGINS="emqx_bridge_mqtt,emqx_recon,emqx_retainer,emqx_management,emqx_dashboard"
      - EMQX_ADMIN_PASSWORD=brokerpw1
      - EMQX_BRIDGE__MQTT__AWS__START_TYPE=auto
      - EMQX_BRIDGE__MQTT__AWS__ADDRESS=172.26.0.2:1883 # docker-ip:port of mqtt-cloud                    
      - EMQX_BRIDGE__MQTT__AWS__PROTO_VER=mqttv3     
      - EMQX_BRIDGE__MQTT__AWS__BRIDGE_MODE=true        
      - EMQX_BRIDGE__MQTT__AWS__CLEAN_START=true           
      - EMQX_BRIDGE__MQTT__AWS__USERNAME=user         
      - EMQX_BRIDGE__MQTT__AWS__PASSWORD=passw                                                       
      - EMQX_BRIDGE__MQTT__AWS__CLIENTID=bridge_aws
      - EMQX_BRIDGE__MQTT__AWS__KEEPALIVE=60s
      - EMQX_BRIDGE__MQTT__AWS__FORWARD_MOUNTPOINT=bridge/aws/test/                                             
      - EMQX_BRIDGE__MQTT__AWS__FORWARDS=atlas/#
      #- EMQX_BRIDGE__MQTT__AWS__SUBSCRIPTION__1__TOPIC=atlas/#                          
      #- EMQX_BRIDGE__MQTT__AWS__SUBSCRIPTION__1__QOS=1                                                                                            
    networks:
      - poc-bridge   
    ports:
      - 18083:18083
      - 1883:1883
      - 8883:8883
      - 8083:8083
    depends_on:
      - mqtt-cloud
      
  mqtt-cloud:
    image: emqx/emqx:latest
    container_name: cloud-broker
    restart: always
    environment:
      - EMQX_LOADED_PLUGINS= "emqx_bridge_mqtt"
    networks:
      - poc-bridge
    ports:
      - 51883:1883
      - 58883:8883
      - 58083:8083