EMQX集群安装
使用
docker,具体参考官方文档
拉取
bash
// 拉取
sudo docker pull emqx/emqx:5.6.0
// 查看所有镜像
docker images
集群搭建
清理环境
bash
sudo docker stop emqx1 emqx2 nginx-lb 2>/dev/null || true
sudo docker rm emqx1 emqx2 nginx-lb 2>/dev/null || true
sudo docker network rm emqx-net 2>/dev/null || true创建docker网络
这个网络允许
emqx1,emqx2, 和nginx-lb容器通过它们的容器名称相互发现和通信。
bash
sudo docker network create emqx-net节点1
容器名称:
emqx1所在网络:
emqx-net
network-alias:注意与节点名称@后面的内容一致,否则找不到节点名称:
[email protected]:node1代表第一个节点,emqx表示它的服务类型,broker或者local`等表示是内部网络集群发现方式:
static,静态自动集群中的所有预期节点:
[email protected],[email protected]代理模式:开启(可获取请求的真实IP和端口)
镜像
emqx/emqx:5.6.0
Cookie:集群内设置相同的秘钥
bash
sudo docker run -d \
--name emqx1 \
--network emqx-net \
--network-alias node1.emqx.broker \
-p 18888:1883 \
-p 18083:18083 \
-e EMQX_NODE_NAME="[email protected]" \
-e EMQX_CLUSTER__DISCOVERY_STRATEGY="static" \
-e "EMQX_CLUSTER__STATIC__SEEDS=[[email protected],[email protected]]" \
-e EMQX_NODE__COOKIE="zwh_emqx_key" \
-e EMQX_LISTENERS__TCP__DEFAULT__PROXY_PROTOCOL=true \
emqx/emqx:5.6.0节点2
Cookie:集群内设置相同的秘钥- "这里我配置
1883的即可"
bash
sudo docker run -d \
--name emqx2 \
--network emqx-net \
--network-alias node2.emqx.broker \
-p 18889:1883 \
-e EMQX_NODE_NAME="[email protected]" \
-e EMQX_CLUSTER__DISCOVERY_STRATEGY="static" \
-e "EMQX_CLUSTER__STATIC__SEEDS=[[email protected],[email protected]]" \
-e EMQX_NODE__COOKIE="zwh_emqx_key" \
-e EMQX_LISTENERS__TCP__DEFAULT__PROXY_PROTOCOL=true \
emqx/emqx:5.6.0查看
bash
// 查看所有的容器,包括失败的
docker ps -a访问

集群管理
查看
通过命令行 (在 Docker 容器内执行):
emqx ctl cluster status
bash
sudo docker exec emqx1 emqx ctl cluster status
通过面板查看

退出集群
进入容器执行,
emqx ctl cluster leave
bash
sudo docker exec emqx2 emqx ctl cluster leave
加入集群
- 启动docker容器时配置
EMQX_CLUSTER__STATIC__SEEDS- 恢复原来的集群:重启
