【MQTT】EMQ初体验——在CentOS7上部署MQTT服务器

时间:2022-03-02 07:17:11

前言

最近在忙一个物联网平台项目,领导大方地给了我一个阿里云的ECS,让我在随意在上面使用。

基本配置如下:

  • CPU: 1核
  • 内存: 1 GB
  • 操作系统: CentOS 7.3 64位

之前一直使用Apache-Apollo作为MQTT服务器,深入摸索后发觉没有一些自己想要的功能。那么,接下来我打算尝试部署一下EMQ——百万级分布式开源物联网MQTT消息服务器。

这篇文章主要是讲解在该CentOS 7服务器上部署EMQ。

准备工作

由于emqttd是Erlang编写的,所以,在Linux下安装时,需要先安装Erlang。

安装依赖库

sudo yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

获取源码包

wget http://www.erlang.org/download/otp_src_R13B04.tar.gz

解压、编译、安装

tar xfvz otp_src_R13B04.tar.gz
cd otp_src_R13B04/
./configure --with-ssl
sudo make install

另外,由于博主部署EMQ是绕了很多弯路,最后才做以上工作,所以可能也不需要做这些就可以成功部署EMQ。

部署EMQ

官网提供了很多种部署方式,我之前尝试过「RPM包安装」,但是没有看到预期效果,所以下面是使用「Linux通用包安装」的步骤。博主验证此方式部署正常。

下载和安装

到这里获取Linux通用安装包:http://emqtt.com/docs/v2/install.html#linux

CentOS平台为例,下载安装过程:

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

Web管理后台

EMQ也和Apollo一样提供了Web管理后台,该后台作为一个插件实现,名称为「Dashboard」。EMQ启动后默认加载Dashboard插件。

访问后台

部署好EMQ之后,访问URL地址:http://localhost:18083 ,缺省用户名/密码: admin/public

Dashboard插件可查询EMQ消息服务器基本信息、统计数据、度量数据,查询系统客户端(Client)、会话(Session)、主题(Topic)、订阅(Subscription)。

【MQTT】EMQ初体验——在CentOS7上部署MQTT服务器

Dashboard插件设置

可以打开.../emqttd/etc/plugins/emq_dashboard.conf文件查看Dashboard插件的配置。

## HTTP Listener
dashboard.listener.http = 18083
dashboard.listener.http.acceptors = 2
dashboard.listener.http.max_clients = 512

## HTTPS Listener
## dashboard.listener.https = 18084
## dashboard.listener.https.acceptors = 2
## dashboard.listener.https.max_clients = 512
## dashboard.listener.https.handshake_timeout = 15
## dashboard.listener.https.certfile = etc/certs/cert.pem
## dashboard.listener.https.keyfile = etc/certs/key.pem
## dashboard.listener.https.cacertfile = etc/certs/cacert.pem
## dashboard.listener.https.verify = verify_peer
## dashboard.listener.https.fail_if_no_peer_cert = true

参考资料