开源大规模分布式MQTT消息服务器EMQX部署教程

news2024/11/18 13:50:42

在这里插入图片描述

1.EMQX是什么?

  EMQX 是一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,并保证延迟在亚毫秒级。

  EMQX 支持多种协议,包括 MQTT (3.1、3.1.1 和 5.0)、HTTP、QUIC 和 WebSocket 等,保证各种网络环境和硬件设备的可访问性。EMQX 还提供了全面的 SSL/TLS 功能支持,比如双向认证以及多种身份验证机制,为物联网设备和应用程序提供可靠和高效的通信基础设施。

图片

  内置基于 SQL 的规则引擎,EMQX 可以实时提取、过滤、丰富和转换物联网数据。此外,EMQX 采用了无主分布式架构,以确保高可用性和水平扩展性,并提供操作友好的用户体验和出色的可观测性。

  EMQX 拥有来自 50 多个国家的 20,000 多家企业用户,连接全球超过 1 亿台物联网设备,服务企业数字化、实时化、智能化转型。

2.Docker方式安装部署及配置

  EMQX有Cloud Serverless版、Cloud 专有版、开源版、 企业版,这里部署的是开源版,因为开源版是免费的,部署方式有:Windows/各个Linux发行版/Docker/Docker-compose/Kubernetes(也支持国内外的云环境,具体参看官方文档) 的方式,可见部署方式丰富,这里才有Docker的方式可以快速的将这个EMQX部署本耍起来(本文采用的是windows10专业版安装的docker-Desktop,在windows安装docker前面的文章也有分享,可以去观看下),至于生产的部署方式可以参看官方的文档选择适合自己的部署方式,如何组建EMQX集群,官方文档也有文档,搭建集群环境外加一个负载均衡就实现了高可用,docker方式请参看下面的步骤。

2.1Docker部署redis

docker run --privileged=true -d --name=redis -p 6379:6379 --restart=always -v D:\redis\data:/data -v D:\redis\conf:/usr/local/etc/redis -v D:\redis\log:/var/log/redis redis  --appendonly yes  --requirepass 123456

redis.conf挂载文件内容如下:

# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
bind 0.0.0.0
 
protected-mode yes
port 6379
tcp-backlog 511
requirepass 123456
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

  挂载文件路径:

图片

图片

  上面的redis的本地docker部署亲测有效,这里为什么需要安装redis呢?因为EMQX的客户端需要将客户端的用户名和密码持久化到redis中,这里的持久化方式我们选择的是redis,官方提供的持久化方式也比较多,可以去官网看文档

#redis方式认证:
https://www.emqx.io/docs/zh/v5.2/access-control/authn/redis.html

  我们这里使用的是redis的单机版本,还支持redis的 Sentinel、Cluster的方式,密码加密采用:sha256,使用RedisInsight客户端连接工具连接上redis

创建两个EMQX的客户端的账号和密码,命令如下:

HSET mqtt_user:zlf1 is_superuser 1 salt 盐值 password_hash 密码加盐sha256密文
HSET mqtt_user:zlf2 is_superuser 1 salt 盐值 password_hash 密码加盐sha256密文

  sha256hash在线加盐加密,用于生成sha256hash加盐加密的密码:

https://www.bchrt.com/tools/sha256hash/

  这里在redis的0号库里面创建了两个EMQX的用户:zlf1和zlf2,两个用户的密码可以使用上面的那个在线生成密文,明文密码后面集成的时候会用到客户端的账号和密码

图片

2.2部署EMQX

  先不挂载启动:

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.4.1

  将 /opt/emqx/etc 目录下的文件复制到宿主机下

图片

  然后重启删除容器,使用挂载的方式启动

  Linux上docker部署命令:

docker run -d --name emqx \
  -p 1883:1883 -p 8083:8083 \
  -p 8084:8084 -p 8883:8883 \
  -p 18083:18083 \
  -v $PWD/etc:/opt/emqx/etc \
  -v $PWD/data:/opt/emqx/data \
  -v $PWD/log:/opt/emqx/log \
  emqx/emqx:5.4.1

  Windows上docker部署命令:

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 -v D:\emqx\etc:/opt/emqx/etc -v D:\emqx\data:/opt/emqx/data -v D:\emqx\log:/opt/emqx/log emqx/emqx:5.4.1

  挂载目录如下:

图片

2.3访问首页

   http://localhost:18083/(localhost 可替换为您的实际 IP 地址)以访问 EMQX Dashboard 管理控制台,进行设备连接与相关指标监控管理。

   默认用户名及密码:

账号:admin
密码:public

图片

  首次登录有个改密码页面,可以修改也可以跳过

图片

2.4添加客户端认证方式

图片

图片

3.相关文档链接

3.1官方文档

https://www.emqx.io/docs/zh/v5.2/

3.2MQTTX客户端下载地址

https://mqttx.app/zh
https://mqttx.app/zh/downloads

3.3关于MQTT的一切

http://www.emqx.io/online-mqtt-client#/help

3.4MQTT教程

https://www.emqx.com/zh/mqtt-guide?utm_source=mqttx-web&utm_medium=referral&utm_campaign=mqttx-web-help-to-learn-mqtt

3.5下载地址

https://www.emqx.io/downloads?os=Docker

3.6Kubernetes部署文档

https://docs.emqx.com/zh/emqx-operator/latest/getting-started/getting-started.html

4.MQTTX客户端

4.1新建连接

图片

4.2已连接

图片

4.3服务端的客户端连接

图片

  使用该工具就可以模拟发消息测试。

5.总结

  到此,EMQX部署就分享完了,MQTT协议是一个物联网场景下用的特别多的一个协议,版本有MQTT3、MQTT3.1.1、MQTT5.0,MQTT在弱网环境下比其它的一些协议要稳定,它也是构建在tcp协议之上的一个协议,之前的文章分享过一个TIO的开源的websock项目,TIO在弱网环境就没有EMQX稳定且性能也没有EMQX好,所以可以使用EMQX替换前面的TIO,希望我的分享对你有所帮助,后面还会给大家分享,开发中如何集成使用MQTT,敬请期待,请一键三连,么么么哒!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1419360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构----链表介绍、模拟实现链表、链表的使用

文章目录 1. ArrayList存在的问题2. 链表定义2.1 链表的概念及结构2.2 链表的组合类型 3. 链表的实现3.1 单向、不带头、非循环链表的实现3.2 双向、不带头节点、非循环链表的实现 4.LinkedList的使用4.1 什么是LinkedList4.2 LinkedList的使用4.2.1. LinkedList的构造4.2.2. L…

R语言(数据导入,清洗,可视化,特征工程,建模)

记录一下痛失的超级轻松的数据分析实习(线上),hr问我有没有相关经历,我说我会用jupyter book进行数据导入,清洗,可视化,特征工程,建模,python学和用的比较多,…

burp靶场--xss上篇【1-15】

burp靶场–xss https://portswigger.net/web-security/cross-site-scripting 1. 什么是xss: 跨站脚本 (XSS) 是一种通常出现在 Web 应用程序中的计算机安全漏洞。XSS 允许攻击者将恶意代码注入网站,然后在访问该网站的任何人的浏览器中执行该代码。这可能允许攻击…

【重磅发布】已开放!模型师入驻、转格式再升级、3D展示框架全新玩法…

1月23日,老子云正式发布全新版本。此次新版本包含多板块功能上线和升级,为用户带来了含模型师入驻、三维格式在线转换升级、模型免费增值权益开放、全新3D展示框架等一系列精彩内容! 1月23日,老子云正式发布全新版本。此次新版本…

【开源】基于JAVA语言的班级考勤管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统基础支持模块2.2 班级学生教师支持模块2.3 考勤签到管理2.4 学生请假管理 三、系统设计3.1 功能设计3.1.1 系统基础支持模块3.1.2 班级学生教师档案模块3.1.3 考勤签到管理模块3.1.4 学生请假管理模块 3.2 数据库设…

PyTorch自动微分机制的详细介绍

PyTorch深度学习框架的官方文档确实提供了丰富的信息来阐述其内部自动微分机制。在PyTorch中,张量(Tensor)和计算图(Computation Graph)的设计与实现使得整个系统能够支持动态的、高效的自动求导过程。 具体来说&#…

BL808学习日志-3-DPI-RGB屏幕使用-LVGL D0

一、DPI-RGB驱动 BL808的手册上显示是支持RGB565屏幕显示输出的,但是一直没找到网上的使用例程。且官方的SDK显示也是能够使用的,只是缺少了驱动。这一部分驱动在SIPEED的SDK中已经内置了,今天就是简单的点亮一个800*480 RGB565的屏幕。 二、…

第十一篇【传奇开心果系列】BeeWare的Toga开发移动应用示例:Briefcase和Toga 哥俩好

传奇开心果博文系列 系列博文目录BeeWare的Toga开发移动应用示例系列博文目录一、前言二、Briefcase和toga各自的主要功能分别介绍三、使用Toga 开发移动应用Briefcase工具是最佳拍档四、Briefcase搭档Toga创建打包发布联系人移动应用示例代码五、运行测试打包发布六、归纳总结…

OpenHarmony—ArkTS限制throw语句中表达式的类型

规则:arkts-limited-throw 级别:错误 ArkTS只支持抛出Error类或其派生类的实例。禁止抛出其他类型(例如number或string)的数据。 TypeScript throw 4; throw ; throw new Error();ArkTS throw new Error();限制省略函数返回类…

Codeforces Round 799 (Div. 4)

目录 A. Marathon B. All Distinct C. Where’s the Bishop? D. The Clock E. Binary Deque F. 3SUM G. 2^Sort H. Gambling A. Marathon 直接模拟 void solve() {int ans0;for(int i1;i<4;i) {cin>>a[i];if(i>1&&a[i]>a[1]) ans;}cout<&l…

欧拉角及Eigen库中eulerAngles函数的理解

欧拉角方向 以右手坐标系为例&#xff0c;大拇指表示X轴&#xff0c;食指表示Y轴&#xff0c;中指表示Z轴。 大拇指朝向某个轴的正方向&#xff0c;手掌弯曲的方向即为某个轴欧拉角的正方向。 Eigen库中eulerAngles函数 旋转矩阵转欧拉角(Z-Y-X&#xff0c;即RPY&#xff09…

防御保护----防火墙基本知识

一.防火墙的基本知识--------------------------------------------------------- 防火墙&#xff1a;可以想象为古代每个城市的城墙&#xff0c;用来防守敌军的攻击。墙&#xff0c;始于防&#xff0c;忠于守。从古至今&#xff0c;墙予人以安全之意。 防火墙的主要职责在于&…

IDE开发工具Idea使用(IDEA安装与卸载,详细配置,快捷键,代码模板,创建模板,Debug调试,生成javadoc,导入模块,导出jar)

文章目录 一、IntelliJ IDEA 介绍1、JetBrains 公司介绍2、IntelliJ IDEA 介绍3、IDEA 的下载 二、安装与卸载1、安装前的准备2、安装过程3、卸载过程方式一&#xff1a;【控制面板】中卸载如何打开控制面板&#xff1f; 三、初始化配置与激活四、HelloWorld1、新建Java类2、编…

Linux浅学笔记03

目录 有关root的命令 用户和用户组 用户组管理&#xff1a;&#xff08;以下需要root用户执行&#xff09; 创建用户组: 删除用户组&#xff1a; 用户管理&#xff1a;&#xff08;以下需要root用户执行&#xff09; 创建用户&#xff1a; 删除用户&#xff1a; 查看用…

开关电源调试会遇到哪些问题?怎么解决?

一般在使用电气设备之前都会调试&#xff0c;以便及时发现问题并采取措施解决。开关电源也一样会进行调试&#xff0c;那么在调试开关电源的过程中会遇到哪些问题呢? 又该如何解决呢? 1. 空载、轻载无法启动 开关电源在空载和轻载情况下&#xff0c;由于绕组的感应电压太低&a…

时隔3年 | 微软 | Windows Server 2025 重磅发布

最新功能 以下是微软产品团队正在努力的方向&#xff1a; Windows Server 2025 为所有人提供的热补丁下一代 AD 活动目录和 SMB数据与存储Hyper-V 和人工智能还有更多… Ignite 发布视频 Windows Server 2025 Ignite Video 介绍 Windows Server 2022 正式发布日期是2021年…

深度强化学习(王树森)笔记09

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

网络防御安全知识(第二版)

安全策略 传统的包过滤防火墙 --- 其本质为ACL列表&#xff0c;根据数据报中的特征进行过滤&#xff0c;之后对比规制&#xff0c; 执行动作。 五元组 --- 源IP&#xff0c; 目标IP&#xff0c;源端口&#xff0c; 目标端口&#xff0c;协议 安全策略 --- 相较于ACL的改进之…

centos7上安装mysql5.7并自定义数据目录路径

1、卸载mariadb rpm -qa |grep mariadb #查出来的结果是mariadb-libs-5.5.68-1.el7.x86_64 rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps #卸载查到的结果 2、官网下载响应的tar.gz包&#xff0c;比如mysql-5.7.38-el7-x86_64.tar.gz &…

Vue中配置页面加载进度条

目录 &#x1f389;应用场景 &#x1f389;在Vue中使用 1.安装nprogress 2.配置进度条 3.配置进度条的颜色 4.其他配置选项 &#x1f389;结语 &#x1f389;应用场景 像页面中的这种加载进度条的效果&#xff0c;可以更好为用户提供视觉上的反馈&#xff0c;让他们知道…