You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Docker Overlay网络驱动实现双集群单Leader架构

基于Docker Overlay网络实现单Leader双隔离集群的配置方案

前提条件

  • 三台服务器已安装Docker,IP分别为192.168.31.141、192.168.31.142、192.168.31.143
  • 服务器之间基础网络互通,防火墙开放Swarm必备端口:TCP 2377(集群管理)、UDP 4789(VXLAN隧道)、TCP/UDP 7946(节点间通信)

配置步骤

1. 将192.168.31.142设为Swarm Leader节点

在142服务器上执行Swarm初始化命令:

docker swarm init --advertise-addr 192.168.31.142

执行成功后会输出Worker节点加入指令,格式类似:

docker swarm join --token SWMTKN-1-xxxxxxxxx 192.168.31.142:2377

复制该指令,后续141、143节点会用到。

2. 创建两个隔离的Overlay网络

在142服务器上创建两个独立的Overlay网络,分别用于142与141、142与143的专属通信:

# 创建仅用于142和141通信的网络
docker network create --driver overlay --attachable net-141
# 创建仅用于142和143通信的网络
docker network create --driver overlay --attachable net-143

--attachable参数允许非Swarm服务的独立容器接入该网络,适配灵活部署需求。

3. 将141、143加入Swarm作为Worker节点

  • 在141服务器上执行之前复制的join指令:
docker swarm join --token SWMTKN-1-xxxxxxxxx 192.168.31.142:2377
  • 在143服务器上执行同样的join指令:
docker swarm join --token SWMTKN-1-xxxxxxxxx 192.168.31.142:2377

4. 绑定容器到对应网络

在142上启动容器并接入两个网络

docker run -d --name node142-container --network net-141 --network net-143 nginx:alpine

该容器可同时与两个网络内的节点通信。

在141上启动容器仅接入net-141

docker run -d --name node141-container --network net-141 nginx:alpine

在143上启动容器仅接入net-143

docker run -d --name node143-container --network net-143 nginx:alpine

5. 验证连通性

  • 141容器ping 142容器(应连通):
docker exec node141-container ping node142-container
  • 143容器ping 142容器(应连通):
docker exec node143-container ping node142-container
  • 141容器ping 143容器(应无法连通):
docker exec node141-container ping node143-container

架构说明

192.168.31.142作为Swarm集群的Leader节点,同时接入两个隔离的Overlay网络,实现与两个Worker节点的双向互通;141、143仅接入各自专属的Overlay网络,因此彼此无法直接通信,完全满足需求中的网络隔离要求。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:25:51