当前位置: 首页 > 工具软件 > emqttd > 使用案例 >

EMQ(emqttd)的介绍和安装

令狐阳秋
2023-12-01

EMQ官方文档地址:https://www.emqx.io/docs/zh/v2.0/(中文)

一.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 'emqttd@127.0.0.1'

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 'emqttd@127.0.0.1' 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 安装: Index - Erlang/OTP

Git 客户端: Git

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

 类似资料: