基于Docker和Docker-compose自建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-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
$ 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 => []}
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)