emqx集群部署
2024-01-03

emqx集群部署

描述

emqx版本:5.0以上(5.0以上ssl配置可以在页面上配置)

官方链接:https://www.emqx.io/docs/zh/latest

所需端口

18083: dashboard访问端口

1883: mqtt连接端口

8883: mqtts连接端口

部署

所有节点

vim /etc/profile

在末尾加上,例:export DEPLOY_DIR=/data

export DEPLOY_DIR={脚本的目录}
source /etc/profile

执行之前,需要先拉取一下初始的数据,并授予文件对应的权限

docker run -d --name emqx emqx/emqx
docker cp emqx:/opt/emqx/bin ${DEPLOY_DIR}/emqx/
docker cp emqx:/opt/emqx/etc ${DEPLOY_DIR}/emqx/
docker cp emqx:/opt/emqx/lib ${DEPLOY_DIR}/emqx/
docker cp emqx:/opt/emqx/data ${DEPLOY_DIR}/emqx/
docker cp emqx:/opt/emqx/log ${DEPLOY_DIR}/emqx/
chown -R 1000:1000 ${DEPLOY_DIR}/emqx/
chmod -R 755 ${DEPLOY_DIR}/emqx/emqx/
docker rm -f emqx

创建docker-compose文件并输入以下内容:#标注的内容需要更改为对应的ip地址

sudo cat > ${DEPLOY_DIR}/emqx/docker-compose.yml << EOF
version: '3'
services:
  emqx:
    image: emqx/emqx:latest
    container_name: emqx
    network_mode: "host"
    privileged: true    
    restart: unless-stopped
    volumes:
      - /etc/localtime:/etc/localtime
      - ${DEPLOY_DIR}/data/emqx/etc:/opt/emqx/etc
      - ${DEPLOY_DIR}/data/emqx/data:/opt/emqx/data
      - ${DEPLOY_DIR}/data/emqx/log:/opt/emqx/log
      - ${DEPLOY_DIR}/data/emqx/lib:/opt/emqx/lib
    environment:
      EMQX_ALLOW__ANONYMOUS: "false"
      SET_CONTAINER_TIMEZONE: "true"
      CONTAINER_TIMEZONE: Asia/Shanghai
      EMQX_HOST: "192.168.1.20" #{该机器局域网的ip地址}
      EMQX_NODE_NAME: "node1@192.168.1.20" #{该机器局域网的ip地址}
      EMQX_CLUSTER__DISCOVERY_STRATEGY: "static"
      EMQX_CLUSTER__STATIC__SEEDS: "[node1@192.168.1.183,node2@192.168.1.109,node3@192.168.1.25]"  # 多个节点的EMQX_NODE_NAME中的内容都放在这里,有几个放几个。
EOF

启动命令

docker-compose -f ${DEPLOY_DIR}/emqx/docker-compose.yml up -d

随机单个节点操作(一个节点操作,其余两个节点会同步)

访问dashboard

#{公网ip}:18083

默认用户名:admin 密码:public

节点都启动后,可以在集群概览中看到所有节点信息