EMQ官方文档地址:http://emqtt.com/docs/v2/index.html(中文)
一.EMQ(消息服务器)介绍
1.EMQ (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。
2.EMQ 项目设计目标是承载移动终端或物联网终端海量 MQTT 连接,并实现在海量物联网设备间快速低延时消息路由:
l 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
l 分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
l 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
l 完整物联网协议支持,MQTT、MQTT-SN、CoAP、WebSocket 或私有协议支持
二.EMQ的安装(此文档只列举在Centos7.*安装)
EMQ消息服务器每个版本都出发布Ubuntu、CentOS、FreeBSD、Mac OS X、Windows 平台程序包与 Docker 镜像;
下载地址:http://emqtt.com/downloads
安装方式:
1. rpm包安装
EMQ Linux RPM 程序包:
CentOS6.8 |
http://emqtt.com/downloads/latest/centos6-rpm |
CentOS7 |
http://emqtt.com/downloads/latest/centos7-rpm |
下载后可以直接解压启动运行
rpm -ivh emqttd-centos7-v2.1.2-1.el7.centos.x86_64.rpm
注解
Erlang/OTP R19 依赖 lksctp-tools 库
yum install lksctp-tools
配置文件
EMQ 配置文件: /etc/emqttd/emq.conf,插件配置文件: /etc/emqttd/plugins/*.conf。
日志文件
日志文件目录: /var/log/emqttd
数据文件
数据文件目录:/var/lib/emqttd/
启动停止
systemctl start|stop|restart emqttd.service
2. Linux通用包安装
EMQ Linux 通用程序包:
Ubuntu12.04 |
http://emqtt.com/downloads/latest/ubuntu12_04 |
Ubuntu14.04 |
http://emqtt.com/downloads/latest/ubuntu14_04 |
Ubuntu16.04 |
http://emqtt.com/downloads/latest/ubuntu16_04 |
CentOS6.8 |
http://emqtt.com/downloads/latest/centos6 |
CentOS7 |
http://emqtt.com/downloads/latest/centos7 |
Debian7 |
http://emqtt.com/downloads/latest/debian7 |
Debian8 |
http://emqtt.com/downloads/latest/debian7 |
FreeBSD |
http://emqtt.com/downloads/latest/freebsd |
安装包命名由平台、版本组成,例如: emqttd-macosx-v2.0.zip
CentOS 平台为例,下载安装过程:
安装包emqttd-centos7-v2.0.zip
自行创建目录如emqttd将安装包解压在此目录中
此处下载的是zip格式的压缩包,使用unzip解压,如果出现
-bash: unzip: command not found
可使用yum进行安装:yum install -y unzip
yum install -y zip
unzip emqttd-centos7-v2.0.zip
控制台调试模式启动,检查 EMQ 是否可正常启动:
cd emqttd
./bin/emqttd console
EMQ 消息服务器如启动正常,控制台输出:
starting emqttd on node '[email protected]'
emqttd ctl is starting...[ok]
emqttd hook is starting...[ok]
emqttd router is starting...[ok]
emqttd pubsub is starting...[ok]
emqttd stats is starting...[ok]
emqttd metrics is starting...[ok]
emqttd pooler is starting...[ok]
emqttd trace is starting...[ok]
emqttd client manager is starting...[ok]
emqttd session manager is starting...[ok]
emqttd session supervisor is starting...[ok]
emqttd wsclient supervisor is starting...[ok]
emqttd broker is starting...[ok]
emqttd alarm is starting...[ok]
emqttd mod supervisor is starting...[ok]
emqttd bridge supervisor is starting...[ok]
emqttd access control is starting...[ok]
emqttd system monitor is starting...[ok]
dashboard:http listen on 0.0.0.0:18083 with 2 acceptors.
mqtt:tcp listen on 0.0.0.0:1883 with 8 acceptors.
mqtt:ssl listen on 0.0.0.0:8883 with 4 acceptors.
mqtt:ws listen on 0.0.0.0:8083 with 4 acceptors.
Erlang MQTT Broker 2.0 is running now
CTRL+c 关闭控制台。守护进程模式启动:
./bin/emqttd start
启动错误日志将输出在 log/ 目录。
EMQ 消息服务器进程状态查询:
./bin/emqttd_ctl status
正常运行状态,查询命令返回:
$ ./bin/emqttd_ctl status
Node '[email protected]' is started
emqttd 2.0 is running
EMQ 消息服务器提供了状态监控 URL
http://localhost:8080/status
停止服务器:
./bin/emqttd stop
3.Docker 镜像安装
EMQ 2.0 Docker 镜像下载: http://emqtt.com/downloads/latest/docker
解压 emqttd-docker 镜像包:
unzip emqttd-docker-v2.0.zip
加载镜像:
docker load < emqttd-docker-v2.0
启动容器:
docker run -tid --name emq20 -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqttd-docker-v2.0
停止容器:
docker stop emq20
开启容器:
docker start emq20
进入 Docker 控制台:
docker exec -it emq20 /bin/sh
4.源码编译安装
EMQ 消息服务器基于 Erlang/OTP 平台开发,项目托管的 GitHub 管理维护,源码编译依赖 Erlang 环境和 git 客户端。
注解
EMQ R2.3+ 依赖 Erlang R20+ 版本
Erlang 安装: http://www.erlang.org/
Git 客户端: http://www.git-scm.com/
Ubuntu 平台可通过 apt-get 命令安装,CentOS/RedHat 平台可通过 yum 命令
编译环境准备好之后,clone 代码开始编译:
git clone https://github.com/emqtt/emq-relx.git
cd emq-relx && make
cd _rel/emqttd && ./bin/emqttd console
编译成功后,可执行程序包在目录:
_rel/emqttd
控制台启动编译的 EMQ 程序包:
cd _rel/emqttd && ./bin/emqttd console