讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么部署EMQX分布式企业级物联网MQTT消息中间件

胖辰吖_5109

胖辰吖_5109

发布时间:2026-10-05 07:32:29

|

477人浏览过

|

来源于php中文网

原创

EMQX Linux分布式部署的核心是节点发现、元数据共享、统一认证与消息路由;需确保Erlang cookie一致、防火墙开放4369及6369-7369端口、时间同步,并验证cluster status、跨节点客户端列表和跨节点MQTT收发。

linux怎么部署emqx分布式企业级物联网mqtt消息中间件

直接上结论:EMQX 在 Linux 上做分布式部署,核心不是“装多个实例”,而是让节点能互相发现、共享元数据、统一认证和路由消息。单节点跑起来容易,但一上分布式,cluster.discovery 配置错一个参数、防火墙漏开一个端口、或 Erlang cookie 不一致,整个集群就卡在 joining 状态不动——这不是 bug,是 Erlang 分布式机制的刚性要求。

怎么确认 EMQX 节点间真正组成了集群

别只看 sudo emqx_ctl cluster status 输出里有没有其他节点名。真实情况是:节点可能“列在列表里”,但实际无法同步会话、无法跨节点投递 QoS 1 消息、Dashboard 显示不同步的连接数。必须验证三件事:

  • 执行 sudo emqx_ctl cluster status,所有节点状态必须是 Running(不是 Joining 或 Down)
  • 在任意节点执行 sudo emqx_ctl clients list,结果应包含全部节点上的客户端连接(不是只显示本机的)
  • 用 MQTT 客户端订阅 test/topic,从另一台机器发布消息,确保能实时收到——且发布和订阅不在同一节点上(可用 sudo emqx_ctl listeners show 查每个节点监听的 IP)

emqx.conf 里最关键的三个分布式配置项

EMQX 5.x 默认使用 static 发现方式,但生产环境强烈建议改用 etcd 或 k8s。如果硬要用 static,这三个配置必须逐字核对:

  • cluster.discovery = static:必须显式设置,不能依赖默认值
  • cluster.static.seeds = emqx@192.168.1.10,emqx@192.168.1.11:注意是 emqx@IP 格式,不是域名;IP 必须是节点间可直连的内网地址;所有节点的 seeds 列表要完全一致
  • node.name = emqx@192.168.1.10:每个节点必须唯一,且与 seeds 中的条目严格匹配;不能写成 emqx@localhost 或 emqx@hostname(除非 /etc/hosts 已精确映射)

改完配置后,必须重启节点:sudo systemctl restart emqx,不能只 reload。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载

为什么集群启动后总卡在 Joining 状态

这是最常踩的坑,原因几乎都出在底层通信层:

  • Erlang cookie 不一致:所有节点的 /var/lib/emqx/.erlang.cookie 文件内容必须**完全相同**(包括空格和换行),且权限为 400,属主是 emqx 用户
  • 防火墙阻断了 Erlang 分布式端口:EMQX 默认用 4369(epmd 端口) + 动态端口范围(默认 6369-7369)。云服务器安全组和本地 ufw/firewalld 都得放行这两个范围
  • 节点时间不同步:Erlang 集群对时钟漂移敏感,误差超过 1 秒可能导致握手失败。务必在所有节点运行 sudo timedatectl set-ntp true 并验证 timedatectl status 显示 “System clock synchronized: yes”

分布式下认证和 ACL 必须集中管理

单节点时把用户写进 etc/plugins/emqx_auth_username.conf 就能用,但分布式下这么做会导致各节点认证不一致——A 节点加了用户,B 节点查不到。正确做法只有两种:

  • 用内置数据库:启用 emqx_auth_mnesia 插件,所有节点共享同一份内存数据库(适合中小规模,节点数 ≤ 5)
  • 对接外部系统:生产环境必须用 emqx_auth_http 或 emqx_auth_jwt,把认证逻辑交给你的业务后端或 Keycloak 等统一身份服务

ACL 规则同理,不要分散写在各节点配置里。ACL 文件路径(如 etc/acl.conf)在集群中会被所有节点读取,但修改后需手动触发重载:sudo emqx_ctl acl reload,否则新规则不生效。

真正难的不是启动集群,而是让所有节点对“当前谁在线、谁订阅了什么、消息该往哪转”达成一致。这个一致性靠的是 Erlang 的底层分布协议,它不给你容错余地——cookie 错一位、时间差半秒、端口少开一个,集群就静默失败。部署前先用两台干净虚拟机跑通最小闭环,比在生产环境反复重启强得多。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

1933

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

2774

2023.10.07

什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

589

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

604

2025.12.18

ThinkPHP中间件机制与请求拦截处理实践
ThinkPHP中间件机制与请求拦截处理实践

本专题围绕 ThinkPHP 中间件体系展开,深入讲解中间件的定义、注册与执行流程。内容包括全局中间件与路由中间件的区别、请求前后处理逻辑、自定义中间件开发以及权限验证与日志处理应用。通过实际案例,帮助开发者掌握中间件在项目中的核心作用与最佳实践。

418

2026.03.31

物联网有哪些应用
物联网有哪些应用

物联网应用有智能家居、智慧城市、工业自动化、农业智能化、物流和供应链管理、医疗健康、智能交通、能源管理、环境监测、智能零售等等。详细介绍:1、智能家居,物联网技术可以将家庭中的各种设备和家居系统连接到互联网,实现智能化的家居控制和管理,例如,通过智能手机可以远程控制家中的照明、温度、安防系统等;2、智慧城市,物联网技术可以应用于城市基础设施和公共服务,实现智慧城市的建设等等。

579

2023.09.05

物联网中的m2m概念
物联网中的m2m概念

M2M是人与机器连接的手段与方式。想了解更多的相关内容,可以阅读本专题下面的文章。

3097

2024.03.12

物联网应用岗位
物联网应用岗位

常见岗位包括:物联网架构师;物联网工程师;数据分析师;云计算工程师;应用程序开发人员;嵌入式系统工程师;网络安全分析师;产品经理;物联网项目经理;业务分析师等等。想了解更多物联网应用的相关内容,可以阅读本专题下面的文章。

1595

2024.05.21

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 0.1万人学习

SQL优化与排查(MySQL版)
SQL优化与排查(MySQL版)

共26课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn