Docker Swarm + VerneMQ(无法从本地主机连接)

时间:2021-02-02 13:41:46

标签: docker docker-swarm swarm mqtt-vernemq

我一直在尝试创建一个 docker compose 文件来在 swarm 中的不同节点上运行服务。 VerneMQ 的想法是在一个集群内有一个主节点和 N 个(在我的例子中是 2)个副本。

这是目前我的 docker-compose.yml

version: "3.7"
services:
  vmq0:
    image: erlio/docker-vernemq
    environment:
      DOCKER_VERNEMQ_SWARM: 1
      DOCKER_VERNEMQ_ACCEPT_EULA: "yes"
      DOCKER_VERNEMQ_PLUGINS.vmq_passwd: 'off'
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS: 'on'
      DOCKER_NET_INTERFACE: eth0
  vmq:
    image: erlio/docker-vernemq
    depends_on:
      - vmq0
    environment:
      DOCKER_VERNEMQ_SWARM: 1
      DOCKER_VERNEMQ_DISCOVERY_NODE: vmq0
      DOCKER_VERNEMQ_ACCEPT_EULA: "yes"
      DOCKER_VERNEMQ_PLUGINS.vmq_passwd: 'off'
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS: 'on'
      DOCKER_NET_INTERFACE: eth1
    ports:
      - 50005:1883
      - 8080:8080
    deploy:
      replicas: 2

我创建了群。

尝试部署堆栈:

docker stack deploy -c docker-compose.yml  my-vernemq-stack

输出:

Ignoring deprecated options:.

Creating network my-vernemq-stack_default
Creating service my-vernemq-stack_vmq0
Creating service my-vernemq-stack_vmq

主节点输出(两个“从”节点都成功加入):

13:34:43.340 [info] successfully connected to cluster node 'VerneMQ@10.0.9.4'
13:34:43.454 [info] successfully connected to cluster node 'VerneMQ@10.0.9.3'

我试图获取容器的 IP:

docker inspect my-vernemq-stack_default | grep \"IPv4Address\"

输出:

{
    "Name": "my-vernemq-stack_default",
    "Id": "q5kd6opgjlqa7ujwmthnbtfna",
    "Created": "2021-02-02T14:34:02.314934034+01:00",
    "Scope": "swarm",
    "Driver": "overlay",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": null,
        "Config": [
            {
                "Subnet": "10.0.9.0/24",
                "Gateway": "10.0.9.1"
            }
        ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
        "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {
        "0cb6e914e67c0e41599c8ddf75ce44929f643908a450159bfb2d2d9080a32de3": {
            "Name": "my-vernemq-stack_vmq0.1.ynme6f8mtwqr4oxkw6zou95ui",
            "EndpointID": "e335251e3177c96ac6f0376176bdb31b977f76ac1e7e3d1a8f18781dcbc67262",
            "MacAddress": "02:42:0a:00:09:07",
            "IPv4Address": "10.0.9.7/24",
            "IPv6Address": ""
        },
        "0ce3ce054697bf7d37ff3ba2294ce54ee10e0dd340dfe126c384ae63fc3169ec": {
            "Name": "my-vernemq-stack_vmq.2.u9r8d59oqrojecrcpc7lf0v35",
            "EndpointID": "a182ba573d9c63311c54a9d04386f6d041e8fcf1072dc4730c4896834f1935be",
            "MacAddress": "02:42:0a:00:09:04",
            "IPv4Address": "10.0.9.4/24",
            "IPv6Address": ""
        },
        "e856a33fd9d3d6fcac59faf80720bac0e041aa83e9a381e5d5691a5b400e659d": {
            "Name": "my-vernemq-stack_vmq.1.qqjn9fxjui3mm4k6h9ktsw6vk",
            "EndpointID": "6440fe5de53726324b8600327c891cfcf193bcc0595120e467671c572d2f9fe7",
            "MacAddress": "02:42:0a:00:09:03",
            "IPv4Address": "10.0.9.3/24",
            "IPv6Address": ""
        },
        "lb-my-vernemq-stack_default": {
            "Name": "my-vernemq-stack_default-endpoint",
            "EndpointID": "3c22cf723503a85ce4d668fd87fb40f876686e2ccb2e8ac9eb311a2f5648f9b1",
            "MacAddress": "02:42:0a:00:09:05",
            "IPv4Address": "10.0.9.5/24",
            "IPv6Address": ""
        }
    },
    "Options": {
        "com.docker.network.driver.overlay.vxlanid_list": "4105"
    },
    "Labels": {
        "com.docker.stack.namespace": "my-vernemq-stack"
    },
    "Peers": [
        {
            "Name": "bb1480d58797",
            "IP": "192.168.1.14"
        }
    ]
}

这些是 IPv4 地址:

"IPv4Address": "10.0.9.7/24",
"IPv4Address": "10.0.9.4/24",
"IPv4Address": "10.0.9.3/24",
"IPv4Address": "10.0.9.5/24",

前三个是容器/节点 IPv4,最后一个是网络的默认端点。

现在,我尝试使用 mosquitto 代理订阅任何节点:

sudo mosquitto_sub -h 10.0.9.7 -p 1883 -t Sample/Topic -d

但是没有任何反应。群内的一切都在工作,我可以使用“docker exec”连接到容器,但我无法发布或订阅代理(我没有得到任何回应)。我做错了什么?

0 个答案:

没有答案