不同服务器的docker容器间通讯(以emqx集群为例)

52 阅读2分钟

IP分类

1.png

主机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文件

vim /ect/docker/daemon.json

内容大致如下↓

{
  "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文件

vim /ect/docker/daemon.json

内容大致如下↓

{
  "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转发

执行以下指令

sysctl net.ipv4.ip_forward=1

或者进入 /etc/sysctl.conf

添加↓

net.ipv4.ip_forward=1

下载相关工具

安装 iptables-persistent

apt install iptables-persistent

将ip规则追加到rules.v4中

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

还原iptables配置。

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

主机1

依次执行以下指令↓

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

添加路由↓

ip route add 172.16.222.0/24 via 192.168.127.130

主机2

依次执行以下指令↓

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

添加路由↓

ip route add 172.16.111.0/24 via 192.168.127.129

docker配置

主机1

创建相应网关

docker network create --subnet=172.16.111.0/24  emqxnet

启动容器

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

创建相应网关

docker network create --subnet=172.16.222.0/24  emqxnet

启动容器

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加入集群

进入容器

docker exec -it emqx22 /bin/bash

加入节点

./bin/emqx_ctl cluster join emqx@172.16.111.11

2.png