EMQX 入门实战(1)–安装及简单使用

EMQX 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器,本文主要介绍其安装及简单使用,文中使用到的软件版本:emqx 4.4.2、Centos 7.

1、概述

EMQX (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。

Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。

MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。

EMQX 设计目标是实现高可靠,并支持承载海量物联网终端的 MQTT 连接,支持在海量物联网设备间低延时消息路由:

  1. 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持 200 万连接。
  2. 分布式节点集群,快速低延时的消息路由。
  3. 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
  4. 完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。

2、单机安装

EMQX 提供了多种安装方式:RPM/DEB包安装 (Linux)、ZIP 压缩包安装 (Linux、MacOS、Windows)、通过 Docker 运行、通过 Helm 安装、源码编译安装;这里主要介绍 通过ZIP 压缩包安装 EMQX。

2.1、下载并解压安装包

下载对应系统的安装包:https://www.emqx.com/zh/try?product=broker,然后解压:

unzip emqx-4.4.2-otp24.1.5-3-el7-amd64.zip

2.2、启动 EMQX Broker

cd emqx/bin./emqx start

2.3、停止 EMQX Broker

cd emqx/bin./emqx stop

2.4、查看状态

cd emqx/bin./emqx_ctl status

2.5、Listener

Listener 主要用于配置不同协议的监听端口和相关参数,EMQX 支持配置多个 Listener 以同时监听多个协议或端口,以下是支持的 Listener:

监听器

说明

TCP Listener

A listener for MQTT which uses TCP

SSL Listener

A secure listener for MQTT which uses TLS

Websocket Listener

A listener for MQTT over WebSockets

Secure Websocket Listener

A secure listener for MQTT over secure WebSockets (TLS)

EMQX 默认提供 5 个 Listener,它们将占用以下端口:

端口

说明

1883

MQTT/TCP 协议端口

11883

MQTT/TCP 协议内部端口,仅用于本机客户端连接

8883

MQTT/SSL 协议端口

8083

MQTT/WS 协议端口

8084

MQTT/WSS 协议端口

2.5、控制台

EMQX 提供了 Dashboard 以方便用户管理设备与监控相关指标。控制台地址为:http://localhost:18083,默认用户名密码为:admin/public,可以在 etc/plugins/emqx_dashboard.conf 配置文件中修改默认密码。

EMQX 入门实战(1)--安装及简单使用

3、集群安装

3.1、集群原理

Erlang/OTP 最初是爱立信为开发电信设备系统设计的编程语言平台,电信设备(路由器、接入网关等)典型设计是通过背板连接主控板卡与多块业务板卡的分布式系统。

Erlang/OTP 语言平台的分布式程序,由分布互联的 Erlang 运行系统组成,每个 Erlang 运行系统被称为节点(Node),节点(Node) 间通过 TCP 互联,消息传递的方式通信:

EMQX 入门实战(1)--安装及简单使用

EMQX 消息服务器集群基于 Erlang/OTP 分布式设计,集群原理可简述为下述两条规则:

MQTT 客户端订阅主题时,所在节点订阅成功后广播通知其他节点:某个主题(Topic)被本节点订阅。

MQTT 客户端发布消息时,所在节点会根据消息主题(Topic),检索订阅并路由消息到相关节点。

3.2、集群规划

ip

节点名称

10.49.196.10

emqx@10.49.196.10

10.49.196.11

emqx@10.49.196.11

10.49.196.12

emqx@10.49.196.12

3.3、按单机方式安装 EMQX

在各机器上按单机方式安装 EMQX,注意修改配置(etc/emqx.conf)的节点名称:

10.49.196.10 上:

node.name = emqx@10.49.196.10

10.49.196.11 上:

node.name = emqx@10.49.196.11

10.49.196.12 上:

node.name = emqx@10.49.196.12

分别启动各机器上的 EMQX。

3.4、节点加入集群

在 10.49.196.11 和 10.49.196.12 上执行:

cd emqx/bin./emqx_ctl cluster join emqx@10.49.196.10

3.5、节点推出集群

A、节点主动退出集群:

cd emqx/bin./emqx_ctl cluster leave

B、在其他节点上删除其他节点

如在 emqx@10.49.196.11 上删除 emqx@10.49.196.12 节点:

cd emqx/bin./emqx_ctl cluster force-leave emqx@10.49.196.12

3、认证

身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。

EMQX 中的认证指的是当一个客户端连接到 EMQX 的时候,通过服务器端的配置来控制客户端连接服务器的权限。

EMQX 的认证支持包括两个层面:

  • MQTT 协议本身在 CONNECT 报文中指定用户名和密码,EMQX 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证。
  • 在传输层上,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书。也支持基于 PSK 的 TLS/DTLS 认证。

这里主要介绍下基于内置数据源(Mnesia)的认证。

3.1、修改配置

根据需要在 etc/plugins/emqx_auth_mnesia.conf 文件中修改密钥算法、增加或修改用户信息。

## Value: plain | md5 | sha | sha256 | sha512auth.mnesia.password_hash = sha256auth.user.1.username = adminauth.user.1.password = 123456

3.2、启用插件

在控制台启用该插件即可。

EMQX 入门实战(1)--安装及简单使用

4、MQTTX 使用

MQTT X 是一款优雅的跨平台 MQTT 5.0 开源桌面客户端工具,支持在 macOS, Linux 和 Windows 上运行。下载与使用可参考 ​​MQTT X 官网​​。

EMQX 入门实战(1)--安装及简单使用

更多详细的说明可参考官网文档:https://www.emqx.io/docs/zh/v4.4/

Original: https://blog.51cto.com/wuyongyin/5441714
Author: 且行且码
Title: EMQX 入门实战(1)–安装及简单使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516760/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球