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
- 恢复原来的集群:重启