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

[复制链接]
发表于 2026-2-27 03:07:58 | 显示全部楼层 |阅读模式

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

  1. 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挂载文件内容如下:
  1. # bind 192.168.1.100 10.0.0.1
  2. # bind 127.0.0.1 ::1
  3. bind 0.0.0.0
  4. protected-mode yes
  5. port 6379
  6. tcp-backlog 511
  7. requirepass 123456
  8. timeout 0
  9. tcp-keepalive 300
  10. daemonize no
  11. supervised no
  12. pidfile /var/run/redis_6379.pid
  13. loglevel notice
  14. logfile ""
  15. databases 30
  16. always-show-logo yes
  17. save 900 1
  18. save 300 10
  19. save 60 10000
  20. stop-writes-on-bgsave-error yes
  21. rdbcompression yes
  22. rdbchecksum yes
  23. dbfilename dump.rdb
  24. dir ./
  25. replica-serve-stale-data yes
  26. replica-read-only yes
  27. repl-diskless-sync no
  28. repl-disable-tcp-nodelay no
  29. replica-priority 100
  30. lazyfree-lazy-eviction no
  31. lazyfree-lazy-expire no
  32. lazyfree-lazy-server-del no
  33. replica-lazy-flush no
  34. appendonly yes
  35. appendfilename "appendonly.aof"
  36. no-appendfsync-on-rewrite no
  37. auto-aof-rewrite-percentage 100
  38. auto-aof-rewrite-min-size 64mb
  39. aof-load-truncated yes
  40. aof-use-rdb-preamble yes
  41. lua-time-limit 5000
  42. slowlog-max-len 128
  43. notify-keyspace-events ""
  44. hash-max-ziplist-entries 512
  45. hash-max-ziplist-value 64
  46. list-max-ziplist-size -2
  47. list-compress-depth 0
  48. set-max-intset-entries 512
  49. zset-max-ziplist-entries 128
  50. zset-max-ziplist-value 64
  51. hll-sparse-max-bytes 3000
  52. stream-node-max-bytes 4096
  53. stream-node-max-entries 100
  54. activerehashing yes
  55. hz 10
  56. dynamic-hz yes
  57. aof-rewrite-incremental-fsync yes
  58. rdb-save-incremental-fsync yes
复制代码
  挂载文件路径:


  上面的redis的当地docker摆设亲测有效,这里为什么必要安装redis呢?由于EMQX的客户端必要将客户端的用户名和暗码恒久化到redis中,这里的恒久化方式我们选择的是redis,官方提供的恒久化方式也比力多,可以去官网看文档
  1. #redis方式认证:
  2. https://www.emqx.io/docs/zh/v5.2/
  3. access-control/authn/redis.html
复制代码
  我们这里使用的是redis的单机版本,还支持redis的 Sentinel、Cluster的方式,暗码加密接纳:sha256,使用RedisInsight客户端毗连工具毗连上redis
创建两个EMQX的客户端的账号和暗码,下令如下:
  1. HSET mqtt_user:zlf1 is_superuser 1 salt 盐值 password_hash 密码加盐sha256密文
  2. HSET mqtt_user:zlf2 is_superuser 1 salt 盐值 password_hash 密码加盐sha256密文
复制代码
  sha256hash在线加盐加密,用于天生sha256hash加盐加密的暗码:
  1. https://www.bchrt.com/tools/sha256hash/
复制代码
  这里在redis的0号库内里创建了两个EMQX的用户:zlf1和zlf2,两个用户的暗码可以使用上面的谁人在线天生密文,明文暗码反面集成的时间会用到客户端的账号和暗码

2.2摆设EMQX

  先不挂载启动:
  1. 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摆设下令:
  1. docker run -d --name emqx \
  2.   -p 1883:1883 -p 8083:8083 \
  3.   -p 8084:8084 -p 8883:8883 \
  4.   -p 18083:18083 \
  5.   -v $PWD/etc:/opt/emqx/etc \
  6.   -v $PWD/data:/opt/emqx/data \
  7.   -v $PWD/log:/opt/emqx/log \
  8.   emqx/emqx:5.4.1
复制代码
  Windows上docker摆设下令:
  1. 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 管理控制台,举行装备毗连与相干指标监控监控管理。
   默认用户名及暗码:
  1. 账号:admin
  2. 密码:public
复制代码

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

2.4添加客户端认证方式



3.相干文档链接

3.1官方文档

  1. https://www.emqx.io/docs/zh/v5.2/
复制代码
3.2MQTTX客户端下载所在

  1. https://mqttx.app/zh
  2. https://mqttx.app/zh/downloads
复制代码
3.3关于MQTT的齐备

  1. http://www.emqx.io/online-mqtt-client#/help
复制代码
3.4MQTT教程

  1. https://www.emqx.com/zh/mqtt-guide?utm_source=mqttx-web&utm_medium=referral&utm_campaign=mqttx-web-help-to-learn-mqtt
复制代码
3.5下载所在

  1. https://www.emqx.io/downloads?os=Docker
复制代码
3.6Kubernetes摆设文档

  1. 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,敬请等候,请一键三连,么么么哒!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表