基于Docker和Docker-compose自建MQTT服务器

举报
真爱无敌 发表于 2020/12/17 09:14:53 2020/12/17
【摘要】  一、EMQ X消息服务器简介参考如下链接https://docs.emqx.cn/cn/broker/latest/1.简介  EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。  Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Late...

 一、EMQ X消息服务器简介

参考如下链接

1.简介
  EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
  Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。
  MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。
  EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:
  1)稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
  2)分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
  3)消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
  4)完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
2.EMQ X功能特性
3.应用场景
二、安装
EMQ X有多种安装方式,下面仅以linux下的安装进行简单说明
1.shell脚本一键安装

2.包管理器安装(Linux)
    1)安装依赖包
    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    2)设置稳定存储库
    $ sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo
    3)安装最新版本的EMQ X Broker
    $ sudo yum install emqx
    4)启动EMQ X Broker
    $ emqx start
    emqx 4.0.0 is started successfully!
    $ emqx_ctl status
    Node 'emqx@127.0.0.1' is started
    emqx v4.0.0 is running
    $ sudo systemctl start emqx
    4)停止EMQ X Broker
    $ emqx stop
    5)卸载EMQ X Broker
    $ sudo yum remove emqx
    

3.docker安装
    1)获取docker镜像
    $ docker pull emqx/emqx:v4.0.0
    $ unzip emqx-docker.zip
    $ docker load < emqx-docker-v4.0.0
    2)启动docker容器


4.使用docker-compose创建集群(本次重点)

    1)创建docker-compose.yml文件
    参见下表示例
    2)启动集群
    $ docker-compose -p my_emqx up -d
    3)查看集群
    $ docker exec -it my_emqx_emqx1_1 sh -c "emqx_ctl cluster status"
    Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'],
     stopped_nodes => []}

 

version: '3'

services:
  emqx1:
    image: emqx/emqx:v4.0.0
    environment:
    - "EMQX_NAME=emqx"
    - "EMQX_HOST=node1.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node1.emqx.io
  
  emqx2:
    image: emqx/emqx:v4.0.0
    environment:
    - "EMQX_NAME=emqx"
    - "EMQX_HOST=node2.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node2.emqx.io

networks:
  emqx-bridge:
    driver: bridge
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。