EMQX在Linux下的完整部署指南:从安装到运维
2025.09.19 11:11浏览量:0简介:本文详细介绍EMQX在Linux系统下的部署流程,涵盖环境准备、安装方式、配置优化及运维管理,帮助开发者快速构建高可靠的MQTT消息服务平台。
一、部署前环境准备
1.1 系统要求验证
EMQX 5.x版本对Linux系统有明确要求:
- 内核版本:建议4.15+(可通过
uname -r
查看) - 内存:基础版至少4GB,生产环境建议16GB+
- 磁盘空间:/var分区至少保留10GB可用空间
- 依赖检查:
# 安装必要工具
sudo apt update && sudo apt install -y curl wget tar gzip
# 验证Java环境(如使用插件)
java -version 2>/dev/null || echo "Java未安装"
1.2 网络配置要点
- 端口开放:默认监听1883(MQTT)、8083(WebSocket)、8883(SSL)、18083(Dashboard)
- 防火墙规则(以UFW为例):
sudo ufw allow 1883/tcp
sudo ufw allow 8083/tcp
sudo ufw allow 8883/tcp
sudo ufw allow 18083/tcp
- SELinux策略(CentOS/RHEL需注意):
sudo setsebool -P httpd_can_network_connect 1
二、三种主流安装方式
2.1 DEB/RPM包安装(推荐生产环境)
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.key
sudo yum install -y https://repos.emqx.io/emqx-5.4.0-1.el7.x86_64.rpm
2.2 二进制包直接部署(适合测试环境)
# 下载最新版本
wget https://www.emqx.io/downloads/broker/v5.4.0/emqx-5.4.0-ubuntu22.04-amd64.tar.gz
# 解压安装
tar -zxvf emqx-*.tar.gz
cd emqx
# 启动服务(前台模式)
./bin/emqx console
# 后台启动
./bin/emqx start
2.3 Docker容器化部署(快速验证方案)
# 拉取官方镜像
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
三、核心配置优化
3.1 主配置文件详解
路径:/etc/emqx/emqx.conf
(包安装)或./etc/emqx.conf
(二进制)
关键参数配置示例:
# 集群节点发现(使用静态节点列表)
cluster.discovery = static
cluster.static.seeds = emqx@node1.example.com,emqx@node2.example.com
# 连接数限制
listener.tcp.external.max_connections = 1000000
# 内存阈值设置(单位:MB)
sysmon.os_mon.mem_check_interval = 60s
sysmon.os_mon.sysmem_high_watermark = 0.8
3.2 认证插件配置
以内置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.conf
authentication = [
{
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"
}
]
四、运维管理最佳实践
4.1 服务状态监控
# 查看运行状态
systemctl status emqx
# 检查监听端口
netstat -tulnp | grep emqx
# 日志分析
tail -f /var/log/emqx/emqx.log.*.log
4.2 集群管理命令
# 加入集群
emqx_ctl cluster join emqx@node1.example.com
# 查看集群状态
emqx_ctl cluster status
# 离开集群
emqx_ctl cluster leave
4.3 性能调优建议
- 连接数优化:
# 调整连接进程数(根据CPU核心数)
listener.tcp.external.num_acceptors = 32
# 启用连接回收
listener.tcp.external.force_shutdown = on
- 消息缓存:
# 队列长度设置
mqtt.queue.max_length = 1000
# 持久化配置
broker.shared_subscription = true
五、故障排查指南
5.1 常见问题处理
问题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'"
5.2 性能瓶颈诊断
# 使用emqx内置诊断工具
emqx_ctl broker metrics
emqx_ctl broker stats
# 生成诊断报告
emqx_ctl admin report --path /tmp/emqx_report
六、升级与回滚方案
6.1 平滑升级流程
# 备份配置
cp -r /etc/emqx /etc/emqx.bak
# 停止服务
systemctl stop emqx
# 安装新版本
apt install emqx=5.5.0-1.amd64
# 验证配置兼容性
emqx check-config
# 启动服务
systemctl start emqx
6.2 回滚操作指南
# 卸载新版本
apt remove emqx
# 恢复旧版本包
dpkg -i emqx_5.4.0-1.amd64.deb
# 恢复配置
cp -r /etc/emqx.bak/* /etc/emqx/
# 重启服务
systemctl restart emqx
七、安全加固建议
7.1 传输层安全
# 生成SSL证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
# 配置SSL监听
listener.ssl.external = 0.0.0.0:8883
listener.ssl.external.keyfile = /etc/emqx/certs/key.pem
listener.ssl.external.certfile = /etc/emqx/certs/cert.pem
7.2 访问控制
# 限制IP访问
allow_anonymous = false
zone.external.access_rules = [
{"allow", "192.168.1.0/24"},
{"deny", "all"}
]
通过以上系统化的部署方案,开发者可以在Linux环境下快速构建稳定高效的EMQX消息服务平台。建议生产环境采用包安装方式,配合集群部署和完善的监控体系,可实现日均十亿级消息吞吐的可靠传输。实际部署时需根据具体业务场景调整内存分配、连接数限制等关键参数。
发表评论
登录后可评论,请前往 登录 或 注册