格子云 让企业更智能
基于Docker和Docker-compose自建MQTT服务器
来源: | 作者:华为云折扣网 | 发布时间: 2020-12-20 | 2425 次浏览 | 分享到:
EMQ X消息服务器简介参考如下链接https://docs.emqx.cn/cn/broker/latest/1.简介 EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。

一、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-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脚本一键安装

curl https://repos.emqx.io/install_emqx.sh | bash

 

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

    $ wget -O emqx-docker.zip https://www.emqx.io/downloads/broker/v4.0.0/emqx-docker-v4.0.0-alpine3.10-amd64.zip

    $ 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 => []}

  1. version: '3'
  2. services:
  3. emqx1:
  4. image: emqx/emqx:v4.0.0
  5. environment:
  6. - "EMQX_NAME=emqx"
  7. - "EMQX_HOST=node1.emqx.io"
  8. - "EMQX_CLUSTER__DISCOVERY=static"
  9. - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
  10. healthcheck:
  11. test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
  12. interval: 5s
  13. timeout: 25s
  14. retries: 5
  15. networks:
  16. emqx-bridge:
  17. aliases:
  18. - node1.emqx.io
  19. emqx2:
  20. image: emqx/emqx:v4.0.0
  21. environment:
  22. - "EMQX_NAME=emqx"
  23. - "EMQX_HOST=node2.emqx.io"
  24. - "EMQX_CLUSTER__DISCOVERY=static"
  25. - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
  26. healthcheck:
  27. test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
  28. interval: 5s
  29. timeout: 25s
  30. retries: 5
  31. networks:
  32. emqx-bridge:
  33. aliases:
  34. - node2.emqx.io
  35. networks:
  36. emqx-bridge:
  37. driver: bridge

来源:华为云社区。点击这里→了解更多精彩内容(同时获取华为云服务器折扣)