0%

使用docker搭建emqx集群

IP分类

1

主机1:192.168.127.129

主机1docker:172.16.200.1/24

docker1的emqx:172.16.111.11

主机2:192.168.127.130

主机2docker2:172.16.201.1/24

docker2emqx:172.16.222.22

修改docker的ip

主机1

修改daemon.json文件

1
vim /ect/docker/daemon.json

内容大致如下↓

1
2
3
4
5
6
7
{
"bip":"172.16.201.1/24", # docker的ip
"registry-mirrors": ["https://hub-mirror.c.163.com",
"https://ghcr.io",
"https://mirror.baidubce.com"], # docker源
"insecure-registries":["192.168.127.129:5000"]
}

主机2

修改daemon.json文件

1
vim /ect/docker/daemon.json

内容大致如下↓

1
2
3
4
5
6
7
{
"bip":"172.16.201.1/24",
"registry-mirrors": ["https://hub-mirror.c.163.com",
"https://ghcr.io",
"https://mirror.baidubce.com"],
"insecure-registries":["192.168.127.129:5000"]
}

然后重启docker

ubuntu开启路由,加入路由规则

开启IP转发

执行以下指令

1
sysctl net.ipv4.ip_forward=1

或者进入 /etc/sysctl.conf

添加↓

1
net.ipv4.ip_forward=1

下载相关工具

安装 iptables-persistent

1
apt install iptables-persistent

将ip规则追加到rules.v4中

1
iptables-save > /etc/iptables/rules.v4

还原iptables配置。

1
iptables-restore < /etc/iptables/rules.v4

主机1

依次执行以下指令↓

1
2
3
iptables -F	//清除所有的iptables规则
iptables -P INPUT ACCEPT //允许接收
iptables -P FORWARD ACCEPT //允许发送数据包

添加路由↓

1
iptables -t nat -A POSTROUTING -s 172.16.111.0/24 -o ens33 -j MASQUERADE

另一个容器的路由

1
ip route add 172.172.222.0/24 via 192.168.127.130

主机2

依次执行以下指令↓

1
2
3
iptables -F	//清除所有的iptables规则
iptables -P INPUT ACCEPT //允许接收
iptables -P FORWARD ACCEPT //允许发送数据包

添加路由↓

1
iptables -t nat -A POSTROUTING -s 172.16.222.0/24 -o ens33 -j MASQUERADE

另一个容器的路由

1
ip route add 172.172.111.0/24 via 192.168.127.129

docker配置

主机1

创建相应网关

1
docker network create --subnet=172.16.111.0/24  emqxnet

启动容器

1
docker run  -itd  --name emqx11  --ip 172.16.111.11  --network=emqxnet -p 4369:4369 -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083  -p 4370:4370 -p 5368:5368 -e  EMQX_NAME=emqx -e EMQX_HOST=172.16.111.11  -e EMQX_CLUSTER__DISCOVERY_STRATEGY=static emqx/emqx:5.0.4

主机2

创建相应网关

1
docker network create --subnet=172.16.222.0/24  emqxnet

启动容器

1
docker run  -itd  --name emqx22  --ip 172.16.222.22  --network=emqxnet -p 4369:4369 -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083  -p 4370:4370 -p 5368:5368 -e  EMQX_NAME=emqx -e EMQX_HOST=172.16.222.22  -e EMQX_CLUSTER__DISCOVERY_STRATEGY=static emqx/emqx:5.0.4

节点2加入集群

进入容器

1
docker exec -it emqx22 /bin/bash

加入节点

1
./bin/emqx_ctl cluster join emqx@172.16.111.11

2