docker-compose安装emqx集群(最新)(host模式)

机器:
10.60.0.20

10.60.0.21

10.60.0.22

一、三台机子都配置域名(/etc/hosts)

10.60.0.20 node1.emqx.io
10.60.0.22 node3.emqx.io
10.60.0.21 node2.emqx.io

二、docker-compose.yml(10.60.0.21)
其他两台机子自己替换EMQX_NODE_NAME(节点名)

version: '3.9'

services:
  emqx1:
    image: emqx:5.6.1
    container_name: emqx1
    environment:
      - "TZ=Asia/Shanghai"
      - "EMQX_NODE_NAME=emqx@node1.emqx.io"
      - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
      - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io,emqx@node3.emqx.io]"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083
 #   extra_hosts:
      # 允许容器可以使用的host访问其余节点
#       - node2.emqx.io:10.60.0.21
#       - node3.emqx.io:10.60.0.22
    volumes:
      - ./logs:/opt/emqx/log
      - ./data:/opt/emqx/data
    privileged: true
    network_mode: host
    restart: "on-failure: 10"
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: 3

三、启动
第一次启动应该会失败,因为data目录我是直接启动时自动创建的,查看容器日志会提示/opt/emqx/data/configs的权限不够。

解决办法:修改data及其子目录权限为777,再重新执行docker-compose up -d 启动容器。

另一种办法就是先创建data,赋权限777,在执行docker-compose up -d 启动容器

四、启动成功后查看emqx是否加入集群(10.60.0.20),我21和22分别叫emqx2,emqx3

docker exec -it emqx1 sh -c "emqx_ctl cluster status"

正确的结果(如果三个容器都启动了,可以看见三个节点都加入了。如果只启动了一个节点,集群里running状态的也只有当前节点,另外两个节点就在stop,以下是三个都启动成功)

如果执行以上命令是提示ping不通,像下面那样,那就是你的hosts没配对(Node 'emqx@node1.emqx.io' not responding to pings.)


原因是什么?就是你要为@符号之后的域名配解析ip,所以才有第一步的操作

五、控制台展示

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,你可以在一台物理机上使用docker-compose部署emqx集群。以下是基本步骤: 1. 在物理机上安装dockerdocker-compose。 2. 创建一个docker-compose.yml文件,其中包括emqx节点的配置。例如: ``` version: '3' services: emqx1: image: emqx/emqx:v4.2.0 container_name: emqx1 environment: - EMQX_NAME=emqx1 - EMQX_HOST=emqx1 - EMQX_NODE__DIST_LISTEN_MAX=6385 - EMQX_LISTENER__TCP__EXTERNAL=1883 - EMQX_LISTENER__WS__EXTERNAL=8083 - EMQX_CLUSTER__DISCOVERY=static - EMQX_CLUSTER__STATIC__SEEDS=emqx2@emqx2,emqx3@emqx3 ports: - "1883:1883" - "8083:8083" volumes: - ./data/emqx1/data:/opt/emqx/data - ./data/emqx1/log:/opt/emqx/log emqx2: image: emqx/emqx:v4.2.0 container_name: emqx2 environment: - EMQX_NAME=emqx2 - EMQX_HOST=emqx2 - EMQX_NODE__DIST_LISTEN_MAX=6385 - EMQX_LISTENER__TCP__EXTERNAL=1884 - EMQX_LISTENER__WS__EXTERNAL=8084 - EMQX_CLUSTER__DISCOVERY=static - EMQX_CLUSTER__STATIC__SEEDS=emqx1@emqx1,emqx3@emqx3 ports: - "1884:1883" - "8084:8083" volumes: - ./data/emqx2/data:/opt/emqx/data - ./data/emqx2/log:/opt/emqx/log emqx3: image: emqx/emqx:v4.2.0 container_name: emqx3 environment: - EMQX_NAME=emqx3 - EMQX_HOST=emqx3 - EMQX_NODE__DIST_LISTEN_MAX=6385 - EMQX_LISTENER__TCP__EXTERNAL=1885 - EMQX_LISTENER__WS__EXTERNAL=8085 - EMQX_CLUSTER__DISCOVERY=static - EMQX_CLUSTER__STATIC__SEEDS=emqx1@emqx1,emqx2@emqx2 ports: - "1885:1883" - "8085:8083" volumes: - ./data/emqx3/data:/opt/emqx/data - ./data/emqx3/log:/opt/emqx/log ``` 3. 创建一个data目录,用于容器内部的数据存储。 4. 运行docker-compose命令以启动emqx集群: ``` docker-compose up -d ``` 5. 检查集群状态: ``` docker-compose ps ``` 如果一切正常,应该看到三个emqx节点正在运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值