群集运行在不同机器上的vernemq docker容器

群集运行在不同机器上的vernemq docker容器,docker,docker-compose,mqtt-vernemq,Docker,Docker Compose,Mqtt Vernemq,我希望通过在第二个实例的docker compose.yml文件中使用下面的代码片段,这将是一个简单的过程 - DOCKER_VERNEMQ_DISCOVERY_NODE=<ip address of the first instance> 我通过创建一个 在机器1上:docker swarm init 在machine2上:docker swarm加入——令牌… 在机器1上:docker网络创建--driver=overlay--attachable-vernemq overl

我希望通过在第二个实例的
docker compose.yml
文件中使用下面的代码片段,这将是一个简单的过程

- DOCKER_VERNEMQ_DISCOVERY_NODE=<ip address of the first instance> 

我通过创建一个

在机器1上:
docker swarm init

在machine2上:
docker swarm加入——令牌…

在机器1上:
docker网络创建--driver=overlay--attachable-vernemq overlay-net

我的dockerfile的相关部分包括:

version: '3.6'

services:
  vernemq:
    container_name: ${NODE_NAME:?Node name not specified}
    image: vernemq/vernemq:1.10.4.1
    environment:
      - DOCKER_VERNEMQ_NODENAME=${NODE_NAME:?Node name not specified}
      - DOCKER_VERNEMQ_DISCOVERY_NODE=${DISCOVERY_NODE:-}

networks:
  default:
    external:
      name: vernemq-overlay-net
使用以下环境变量:

机器1:

  • NODE_NAME=vernemq1.example.com
  • 发现节点=
机器2:

  • NODE_NAME=vernemq2.example.com
  • DISCOVERY_NODE=vernemq1.example.com
注意:
据我记忆所及,由于docker compose中的一个bug,machine2很可能找不到
vernemq覆盖网。
在这种情况下,您可以使用docker启动一个容器:
docker run-dit--name alpine--net=vernemq overlay net alpine
,这将使它可用于docker compose

$ docker exec -it vernemq /bin/sh
$ curl <ip address of the first instance>:44053
curl: (56) Recv failure: Connection reset by peer
13:58:33.572 [error] CRASH REPORT Process <0.3050.0> with 0 neighbours crashed with reason: bad argument in vmq_cluster_com:process_bytes/3 line 142
13:58:33.572 [error] Ranch listener {{172,19,0,2},44053} terminated with reason: bad argument in vmq_cluster_com:process_bytes/3 line 142
$ docker --version
Docker version 19.03.13, build 4484c46d9d

$ docker-compose --version
docker-compose version 1.27.2, build 18f557f9
version: '3.6'

services:
  vernemq:
    container_name: ${NODE_NAME:?Node name not specified}
    image: vernemq/vernemq:1.10.4.1
    environment:
      - DOCKER_VERNEMQ_NODENAME=${NODE_NAME:?Node name not specified}
      - DOCKER_VERNEMQ_DISCOVERY_NODE=${DISCOVERY_NODE:-}

networks:
  default:
    external:
      name: vernemq-overlay-net