作者:mobiledu2502875483 | 来源:互联网 | 2023-08-07 12:23
项目组主要是做IOT的,需要搭建EMQ集群来连接边缘设备到云端
5G 时代,万物互联消息引擎 | 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单机搭建
其实官方文档中介绍的已经非常清楚了,在这里我放上官方文档地址
EMQ官方文档地址
只需要按照文档中的来就可以,首先我们安装EMQ,执行以下命令
$ cd /usr/local
$ unzip emqx-centos7-v3.1.0.zip
启动 EMQ X
$ cd /usr/local/emqx
$ ./bin/emqx start
emqx 3.1.0 is started successfully!
$ ./bin/emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx v3.1.0 is running
访问 http://127.0.0.1:18083,默认用户名: admin,密码:public,如图所示:
三、EMQ集群搭建
首先我们先搞两台机器,然后我们在两台机器上启用以下端口
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口
启用方式参照下面这篇文章
CentOS7开启端口(永久)
启用完成之后我们来修改一下配置文件
$ vim ./etc/emqx.conf
修改以下内容
node.name = emqx@192.168.3.204
另一台机器修改为
node.name = emqx@192.168.3.211
这里需要注意的是,上述配置中的 emqx 指的是集群名称,在配置文件中叫做 cluster.name = emqx,这里集群名称必须一致,否则不能加入集群显示无响应(EMQ-3.1.0 版本官方文档有问题,在这里耽误了很多时间)。
修改完成之后,启动两台节点后,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,我们会发现两个节点已经成功运行了,如图所示:
节点退出集群,有两种方式:
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集群搭建完成。