Docker emqx_ctl beheben: Node '[email protected]' not responding to pings.

English Deutsch

Problem:

Beim Versuch, emqx_ctl in einem dockerisierten emqx-Setup mit einem Befehl wie

emqx_docker_status.sh
docker-compose exec emqx ./bin/emqx status

auszuführen, sehen Sie eine Fehlermeldung wie

emqx_node_not_responding.txt
Node '[email protected]' not responding to pings.
/opt/emqx/bin/emqx: line 41: die: command not found

Lösung

Das Problem hier ist, dass emqx_ctl versucht, sich mit der IP-Adresse für node1.emqx.mydomain.com zu verbinden, aber diese IP-Adresse nicht auf die IP-Adresse des Docker-Containers zeigt (vielleicht ist es die öffentliche IP-Adresse Ihres Servers?)

Die Lösung besteht hier darin, einen Netzwerk-Alias innerhalb von docker/docker-compose zu erstellen, sodass das Docker-DNS-System node1.emqx.mydomain.com zur internen IP-Adresse des Containers auflöst.

Zum Beispiel können Sie in docker-compose Ihr Netzwerk erstellen mit

docker_networks_emqx.yml
networks:
  emqx:
    driver: bridge

und dann den Alias für den Container konfigurieren mit

docker_compose_emqx_service.yml
services:
  emqx:
    image: emqx:4.4.4
    environment:
      - "EMQX_NAME=emqx"
      - "EMQX_HOST=node1.emqx.mydomain.com"
      - "EMQX_LOADED_PLUGINS=emqx_recon,emqx_retainer,emqx_management,emqx_dashboard"
    ports:
      - 18083:18083
      - 1883:1883
    volumes:
      - ./emqx_data:/opt/emqx/data
      - ./emqx_log:/opt/emqx/log
    networks:
      emqx:
        aliases:
          - "node1.emqx.mydomain.com"

Check out similar posts by category: Container, Docker, EMQX, MQTT