当前位置: 首页 > news >正文

Ubuntu 20.04部署EMQX 5.0:MQTT服务器配置与优化指南

1. 为什么选择EMQX作为MQTT服务器

在物联网和消息中间件领域,MQTT协议已经成为事实上的标准协议。EMQX作为一款开源的MQTT消息服务器,在5.0版本后更是实现了质的飞跃。我选择在Ubuntu 20.04上部署EMQX主要基于以下几个考虑:

首先是性能表现,EMQX 5.x单节点可以轻松支持百万级MQTT连接,集群模式下更能实现千万级设备接入。相比Mosquitto等轻量级MQTT broker,EMQX更适合企业级应用场景。其次是功能完整性,EMQX原生支持MQTT 5.0协议,提供规则引擎、数据桥接等高级功能,可以无缝对接Kafka、MySQL等外部系统。

Ubuntu 20.04 LTS作为长期支持版本,系统稳定性有保障。其内置的OpenSSL 1.1.1也满足EMQX的加密通信需求。我在生产环境中实测发现,这个组合的稳定性表现非常出色,连续运行90天无故障。

2. 环境准备与依赖检查

2.1 系统更新与基础配置

在开始安装前,建议先执行系统更新:

sudo apt update && sudo apt upgrade -y

检查关键依赖版本:

openssl version # 需要1.1.1及以上 erl -version # 可选,EMQX自带Erlang运行时

注意:如果之前安装过旧版EMQX,务必先彻底卸载:

sudo apt remove --purge emqx rm -rf /var/lib/emqx /etc/emqx

2.2 防火墙配置

MQTT默认使用以下端口:

  • 1883: MQTT TCP端口
  • 8883: MQTT SSL端口
  • 8083: MQTT WebSocket端口
  • 8084: MQTT WebSocket SSL端口

配置UFW防火墙规则:

sudo ufw allow 1883/tcp sudo ufw allow 8883/tcp sudo ufw allow 8083/tcp sudo ufw allow 8084/tcp sudo ufw enable

3. EMQX安装与配置

3.1 通过官方仓库安装

添加EMQX仓库并安装:

curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash sudo apt install emqx -y

启动EMQX服务:

sudo systemctl start emqx

设置开机自启:

sudo systemctl enable emqx

验证服务状态:

sudo systemctl status emqx

3.2 初始访问控制台

EMQX提供Web管理界面,默认监听18083端口。首次访问:

http://服务器IP:18083

默认账号:admin 默认密码:public

安全提示:首次登录后务必修改默认密码!在生产环境中建议禁用默认账户,创建新管理员账号。

4. 核心配置调优

4.1 基础参数配置

编辑主配置文件:

sudo nano /etc/emqx/etc/emqx.conf

关键参数调整建议:

node.name = emqx@服务器IP # 集群时需唯一 listeners.tcp.default = 0.0.0.0:1883 listeners.ssl.default = 0.0.0.0:8883 listeners.ws.default = 0.0.0.0:8083 listeners.wss.default = 0.0.0.0:8084 # 性能调优 zone.external.max_packet_size = 10MB # 最大消息大小 zone.external.max_mqueue_len = 10000 # 消息队列长度

4.2 SSL证书配置

生成自签名证书(生产环境建议使用CA签发证书):

mkdir -p /etc/emqx/certs openssl req -x509 -newkey rsa:2048 -keyout /etc/emqx/certs/key.pem -out /etc/emqx/certs/cert.pem -days 365 -nodes

配置SSL监听器:

listeners.ssl.default { bind = "0.0.0.0:8883" max_connections = 102400 ssl_options { keyfile = "/etc/emqx/certs/key.pem" certfile = "/etc/emqx/certs/cert.pem" } }

5. 高级功能配置

5.1 认证与ACL配置

EMQX支持多种认证方式,这里演示MySQL认证配置:

  1. 安装MySQL插件:
sudo emqx_ctl plugins install emqx_auth_mysql
  1. 配置/etc/emqx/plugins/emqx_auth_mysql.conf:
auth.mysql.server = 数据库IP:3306 auth.mysql.username = dbuser auth.mysql.password = dbpassword auth.mysql.database = mqtt_auth
  1. 创建数据库表结构(SQL脚本见官方文档)

5.2 规则引擎应用

通过Dashboard配置规则引擎:

  1. 进入"规则引擎" -> "规则"
  2. 创建规则,例如将温度数据存入MySQL:
SELECT payload.temp as temp, clientid FROM "sensor/data"
  1. 添加动作:"数据持久化" -> "保存数据到MySQL"

6. 运维与监控

6.1 日志管理

查看实时日志:

sudo journalctl -u emqx -f

日志文件位置:

  • /var/log/emqx/emqx.log.N
  • /var/log/emqx/emqx.log

建议配置logrotate:

sudo nano /etc/logrotate.d/emqx

添加:

/var/log/emqx/*.log { daily rotate 30 compress delaycompress missingok notifempty }

6.2 监控指标

EMQX提供Prometheus格式的监控指标:

http://服务器IP:18083/api/v5/prometheus/stats

Grafana仪表板模板可从EMQX官网获取,包含:

  • 连接数监控
  • 消息吞吐量
  • 主题统计
  • 系统资源占用

7. 常见问题排查

7.1 连接问题排查

  1. 客户端无法连接:
  • 检查防火墙设置
  • 确认EMQX服务状态
  • 查看日志中的错误信息
  1. SSL连接失败:
openssl s_client -connect 服务器IP:8883 -showcerts

7.2 性能问题优化

  1. 高负载下连接不稳定:
  • 调整/etc/emqx/etc/emqx.conf中的:
os_mon { mem_check_interval = 60s sysmem_high_watermark = 70% procmem_high_watermark = 5% }
  1. 消息堆积处理:
  • 增加zone.external.max_mqueue_len
  • 优化客户端消费速度
  • 考虑使用共享订阅分担负载

8. 生产环境建议

  1. 安全加固措施:
  • 禁用默认账户
  • 启用TLS 1.2+
  • 配置IP访问限制
  • 定期审计ACL规则
  1. 高可用部署:
  • 使用3-5节点组成集群
  • 配置负载均衡器
  • 设置监控告警
  1. 备份策略:
  • 定期备份/etc/emqx目录
  • 导出Dashboard配置
  • 备份认证数据库

在实际部署中,我发现EMQX的集群功能非常稳定,跨机房部署时建议使用专线连接。对于消息持久化需求,可以结合Redis Streams实现消息缓冲,再通过规则引擎写入数据库,这种架构在日均10亿消息量的场景下表现优异。

http://www.jsqmd.com/news/1266365/

相关文章:

  • 2026年湖南门窗厂镜面玻璃定做优选指南:如何从工艺、材质与售后三方面甄选靠谱厂家? - geo交流
  • 靠谱产品包装盒印刷批发商,实力测评价格透明避坑无忧 - 工业品牌热点
  • 贵港西江沿岸房屋漏水防治要点与2026本地维修团队对比 - 雨婺虹房屋维修
  • Windows系统时间同步与修改问题全面解析
  • 【小程序课程设计/毕业设计】基于微信小程序的体育场馆用户预约数据统计管理系统 校园智慧体育资源管理服务小程序的设计与实现【附源码、数据库、万字文档】
  • Prometheus 监控 Ceph 全栈实战:从 OSD 心跳到 RGW 请求的分布式存储可观测性
  • TI CC2564双模蓝牙BoosterPack开发指南:从硬件连接到协议栈实战
  • 青岛沿海房屋防水补漏特点与2026本地维修市场行情参考 - 雨婺虹房屋维修
  • 5分钟掌握RePKG:Wallpaper Engine壁纸资源解包与转换完全指南
  • Claude Skill开发指南:从入门到企业级实践
  • 信阳豫南山区房屋漏水怎么办?2026本地气候特点与防水维修方案 - 雨婺虹房屋维修
  • 黄金回收折旧费是什么?成都地区正规店铺都不收这项费用 - 生活时报
  • 科技公司财务压力下的技术生态影响与应对策略
  • 探秘鄂西山水|2026恩施宜昌本土持证导游甄选攻略,一站式纯玩定制出行指南 - 纯玩旅游分享
  • 2026 昆山装修公司推荐:哪家口碑好?实测对比与选择指南 - 装修大知识
  • MindCite:基于Zotero+AI的自动化文献精读与知识管理开源方案
  • Flash Attention中的online softmax原理与优化实践
  • 【超声波在电池上的应用之四】电-超声双模态特征融合×FEDformer:锂电池SOH估计突破纯电物理盲区
  • 2026长沙民宿同色配套OEM严选指南:从配色到落地一步到位 - geo交流
  • Hugging Face生态与NLP开发实战指南
  • Delphi RSA加密算法原理与实战实现:从数学基础到工程应用
  • 2026石家庄厨房渗水到楼下怎么办?自来水管暗管检测方法,仪器测漏收费标准 - 宅安选房屋修缮
  • 2026年颚式破碎机厂家实力测评,十大品牌深度解析,所见即所得不踩雷 - 工业品牌热点
  • 2026济南厨房渗水到楼下怎么办?自来水管暗管检测方法,仪器测漏收费标准 - 宅安选房屋修缮
  • Code Review最佳实践
  • 北京线下回收翡翠需要携带什么?正规门店回收翡翠无任何附加收费 - 生活时报
  • 招标平台数字化转型与智能匹配技术解析
  • srt-slurm:声明式YAML配置实现SLURM基准测试可复现性
  • 2026佛山酒店酒店铝木门代工甄选指南:如何高效匹配优质工厂? - geo交流
  • AO3镜像站终极指南:如何快速解锁全球最大同人创作平台的完整访问方案