简介:本文详细介绍EMQX在Linux系统下的部署流程,涵盖环境准备、安装方式、配置优化及运维管理,帮助开发者快速构建高可靠的MQTT消息服务平台。
EMQX 5.x版本对Linux系统有明确要求:
uname -r查看)
# 安装必要工具sudo apt update && sudo apt install -y curl wget tar gzip# 验证Java环境(如使用插件)java -version 2>/dev/null || echo "Java未安装"
sudo ufw allow 1883/tcpsudo ufw allow 8083/tcpsudo ufw allow 8883/tcpsudo ufw allow 18083/tcp
sudo setsebool -P httpd_can_network_connect 1
Ubuntu/Debian系统:
# 添加EMQX官方仓库curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash# 安装指定版本sudo apt install emqx=5.4.0-1.amd64
CentOS/RHEL系统:
# 添加RPM仓库sudo rpm --import https://repos.emqx.io/gpg.keysudo yum install -y https://repos.emqx.io/emqx-5.4.0-1.el7.x86_64.rpm
# 下载最新版本wget https://www.emqx.io/downloads/broker/v5.4.0/emqx-5.4.0-ubuntu22.04-amd64.tar.gz# 解压安装tar -zxvf emqx-*.tar.gzcd emqx# 启动服务(前台模式)./bin/emqx console# 后台启动./bin/emqx start
# 拉取官方镜像docker pull emqx/emqx:5.4.0# 运行容器docker run -d --name emqx \-p 1883:1883 -p 8083:8083 -p 8883:8883 -p 18083:18083 \-e EMQX_LOADED_PLUGINS="emqx_management,emqx_dashboard" \emqx/emqx:5.4.0
路径:/etc/emqx/emqx.conf(包安装)或./etc/emqx.conf(二进制)
关键参数配置示例:
# 集群节点发现(使用静态节点列表)cluster.discovery = staticcluster.static.seeds = emqx@node1.example.com,emqx@node2.example.com# 连接数限制listener.tcp.external.max_connections = 1000000# 内存阈值设置(单位:MB)sysmon.os_mon.mem_check_interval = 60ssysmon.os_mon.sysmem_high_watermark = 0.8
以内置MySQL认证为例:
# 创建认证表CREATE TABLE mqtt_user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,salt VARCHAR(40));# 配置emqx.confauthentication = [{emqx_auth_mysql,server = "127.0.0.1:3306",database = "mqtt",username = "emqx_user",password = "securepassword",query = "SELECT password FROM mqtt_user WHERE username = '%u' LIMIT 1"}]
# 查看运行状态systemctl status emqx# 检查监听端口netstat -tulnp | grep emqx# 日志分析tail -f /var/log/emqx/emqx.log.*.log
# 加入集群emqx_ctl cluster join emqx@node1.example.com# 查看集群状态emqx_ctl cluster status# 离开集群emqx_ctl cluster leave
# 调整连接进程数(根据CPU核心数)listener.tcp.external.num_acceptors = 32# 启用连接回收listener.tcp.external.force_shutdown = on
# 队列长度设置mqtt.queue.max_length = 1000# 持久化配置broker.shared_subscription = true
问题1:端口冲突
# 检查端口占用ss -tulnp | grep 1883# 修改监听端口sed -i 's/listener.tcp.external = 0.0.0.0:1883/listener.tcp.external = 0.0.0.0:11883/' /etc/emqx/emqx.conf
问题2:认证失败
# 检查认证日志grep "Authentication failed" /var/log/emqx/emqx.log.*.log# 测试认证查询mysql -uemqx_user -p -e "SELECT password FROM mqtt_user WHERE username='testuser'"
# 使用emqx内置诊断工具emqx_ctl broker metricsemqx_ctl broker stats# 生成诊断报告emqx_ctl admin report --path /tmp/emqx_report
# 备份配置cp -r /etc/emqx /etc/emqx.bak# 停止服务systemctl stop emqx# 安装新版本apt install emqx=5.5.0-1.amd64# 验证配置兼容性emqx check-config# 启动服务systemctl start emqx
# 卸载新版本apt remove emqx# 恢复旧版本包dpkg -i emqx_5.4.0-1.amd64.deb# 恢复配置cp -r /etc/emqx.bak/* /etc/emqx/# 重启服务systemctl restart emqx
# 生成SSL证书openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes# 配置SSL监听listener.ssl.external = 0.0.0.0:8883listener.ssl.external.keyfile = /etc/emqx/certs/key.pemlistener.ssl.external.certfile = /etc/emqx/certs/cert.pem
# 限制IP访问allow_anonymous = falsezone.external.access_rules = [{"allow", "192.168.1.0/24"},{"deny", "all"}]
通过以上系统化的部署方案,开发者可以在Linux环境下快速构建稳定高效的EMQX消息服务平台。建议生产环境采用包安装方式,配合集群部署和完善的监控体系,可实现日均十亿级消息吞吐的可靠传输。实际部署时需根据具体业务场景调整内存分配、连接数限制等关键参数。