0%

EMQX 社区版单机和集群部署

EMQ 支持 Docker,宿主机,k8s部署;支持单机或集群部署。以下给出EMQX社区版单机和集群部署方法

1. Docker单机部署

官方推荐最小配置:2核 4G

下载容器镜像

1
docker pull emqx/emqx:5.3.2

启动容器

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d --name emqx \
-p 1883:1883 \
-p 8083:8083 \
-p 8883:8883 \
-p 8084:8084 \
-p 18083:18083 \
emqx/emqx:5.3.2
EMQX 开放端口说明
1883 MQTT端口
8083 MQTT/WebSocket端口
8883 MQTT/SSL端口
8084 MQTT/WebSocket/SSL端口
18083 Dashboard 管理端口

验证

访问 Dashboard, 打开http://{server_ip}:18083, 默认账号admin, 密码 public

查看容器日志

1
2
docker logs -f emqx
EMQX 5.3.2 is running now!

2. 宿主机单机部署

参考:https://blog.csdn.net/m0_65819602/article/details/135876464
测试环境: Rocky Linux 9.5 x86_64 2核 4G内存
以下通过RPM包方式安装部署,通过systemd启动

1
2
3
curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash
yum install emqx -y
systemctl start emqx

3. 多宿主机集群部署

参考 官方文档 手动创建集群 小节

示例:在两台独立的宿主机上通过静态节点发现方式部署EMQ集群
主机信息

  • 主机A: 192.168.149.210
  • 主机B: 192.168.149.211

先参考 “宿主机单机部署”,在每个宿主机上部署EMQ
配置每台主机的EMQ
主机A /etc/emqx/emqx.conf

1
2
3
4
5
6
7
8
9
node {
name = "emqx@192.168.149.210"
cookie = "emqxsecretcookie"
data_dir = "/var/lib/emqx"
}
cluster {
name = emqx
discovery_strategy = manual
}

主机B /etc/emqx/emqx.conf

1
2
3
4
5
6
7
8
9
node {
name = "emqx@192.168.149.211"
cookie = "emqxsecretcookie"
data_dir = "/var/lib/emqx"
}
cluster {
name = emqx
discovery_strategy = manual
}

注:

  • node.name 填 emqx@fqdn, fqdn可以是hostname或IP
  • cluster.name 填 emqx,和 node.name 前缀保持一致
  • discovery_strategy 填 manual, 手动方式加入集群
  • 其余配置默认即可

配置完成后,主机B执行如下命令,加入集群

1
2
3
4
5
emqx ctl cluster join emqx@192.168.149.210
Join the cluster successfully.
Cluster status: #{running_nodes =>
['emqx@192.168.149.210','emqx@192.168.149.211'],
stopped_nodes => []}

测试,登录dashboard, 查看集群节点创建成功

节点退出集群

退出集群有以下两种方式:

  • 运行 cluster leave 命令:让本节点退出集群。它会通知集群中的其他节点,并停止参与集群操作,在离开之前会完成任何正在进行的任务。
  • 运行 cluster force-leave <node@host> 命令:在集群内移除节点。目标节点将被强制从集群中移除。当节点出现故障或无响应时,通常使用此命令。

例如,在之前构建的集群中,如果emqx@192.168.149.211想要离开集群,您可以在192.168.149.211上运行以下命令

1
emqx ctl cluster leave

或者在其他节点上运行以下命令来从集群中移除192.168.149.211

1
emqx ctl cluster force-leave emqx@192.168.149.211

查看集群状态

1
emqx_ctl cluster status