项目组主要是做IOT的,需要搭建EMQ集群来连接边缘设备到云端
EMQ的搭建比较简单,在此记录一下便于日后查阅。
一、EMQ简介
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。
EMQ X 面向海量的 移动/物联网/车载 等终端接入,并实现在海量物理网设备间快速低延时的消息路由:
1、稳定承载大规模的 MQTT 客户端连接,单服务器节点支持百万连接。
2、分布式节点集群,快速低延时的消息路由,单集群支持千万规模的路由。
3、消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
4、完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、私有 TCP/UDP 协议支持。
二、准备工作
环境是Centos7,其他的就没什么需要准备的了。
三、EMQ单机搭建
其实官方文档中介绍的已经非常清楚了,在这里我放上官方文档地址
只需要按照文档中的来就可以,执行以下命令
curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash
yum install epel-release -y
yum install -y openssl11 openssl11-devel
sudo yum install emqx -y
sudo systemctl start emqx
访问 http://127.0.0.1:18083,默认用户名: admin,密码:public,如图所示:
三、EMQ集群搭建
首先我们先搞三台机器,然后我们在三台机器上启用以下端口
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口
启用方式参照下面这篇文章
启用完成之后我们来修改一下配置文件
$ vim ./etc/emqx.conf
修改以下内容
node.name = emqx@192.168.3.204
另一台机器修改为
node.name = emqx@192.168.3.211
这里需要注意:
1、上述配置中的 emqx 指的是集群名称,在配置文件中叫做 cluster.name = emqx,两台节点的 cluster.name 必须一致,并且 node.name 的前缀 xxx@ 也要与cluster.name相同,否则不能加入集群显示无响应(EMQ-3.1.0 版本官方文档有问题,在这里耽误了很多时间)。
2、192.168.3.204 和 192.168.3.211 均是内网 IP。
修改完成之后,启动全部三台节点
$ ./bin/emqx start
其他节点执行加入操作,192.168.3.204上执行
$ ./bin/emqx_ctl cluster join emqx@192.168.3.211
Join the cluster successfully.
Cluster status: [{running_nodes,['emqx@192.168.3.204','emqx@192.168.3.211']}]
或,192.168.3.211上执行
$ ./bin/emqx_ctl cluster join emqx@192.168.3.204
Join the cluster successfully.
Cluster status: [{running_nodes,['emqx@192.168.3.204','emqx@192.168.3.211']}]
任意节点上查询集群状态:
$ ./bin/emqx_ctl cluster status
Cluster status: [{running_nodes,['emqx@192.168.3.204','emqx@192.168.3.211']}]
然后我们访问 http://192.168.3.204:18083,我们会发现两个节点已经成功运行了,如图所示:
修改密码:
$ ./bin/emqx_ctl admins passwd 用户名 密码
节点退出集群,有两种方式:
1、leave: 本节点退出集群
2、force-leave: 从集群删除其他节点
emqx@192.168.3.204 主动退出集群:
$ ./bin/emqx_ctl cluster leave
或 emqx@192.168.3.204 节点上,从集群删除emqx@192.168.3.211 节点:
$ ./bin/emqx_ctl cluster force-leave emqx@192.168.3.211
到此EMQ集群搭建完成。