Comment corriger docker emqx_ctl Node 'emqx@node1.emqx.mydomain.com' not responding to pings.

Problème :

En essayant d’exécuter emqx_ctl dans une configuration emqx dockerisée en utilisant une commande comme

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

vous voyez un message d’erreur comme

emqx_node_not_responding.txt
Node 'emqx@node1.emqx.mydomain.com' not responding to pings.
/opt/emqx/bin/emqx: line 41: die: command not found

Solution

Le problème ici est que emqx_ctl essaie de se connecter à l’adresse IP pour node1.emqx.mydomain.com mais cette adresse IP ne pointe pas vers l’adresse IP du conteneur docker (peut-être que c’est l’adresse IP publique de votre serveur ?)

La solution ici est de créer un alias réseau dans docker/docker-compose pour que le système DNS de Docker résolve node1.emqx.mydomain.com vers l’adresse IP interne du conteneur.

Par exemple, dans docker-compose, vous pouvez créer votre réseau en utilisant

docker_networks_emqx.yml
networks:
  emqx:
    driver: bridge

et puis configurer l’alias pour le conteneur en utilisant

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"

Consultez les articles similaires par catégorie : Container Docker EMQX MQTT