温馨提示×

Ubuntu如何搭建Overlay网络

小樊
35
2026-01-02 17:30:38
栏目: 智能运维

Ubuntu 搭建 Overlay 网络的两种常见方式

  • 面向容器场景:使用 Docker Swarm 内置的 overlay 驱动,多主机上容器可直接互通,适合微服务与编排部署。
  • 面向虚拟化/物理机场景:使用 Open vSwitch(OVS)+ VXLAN 在现有二层/三层网络上构建叠加网络,适合 KVM/QEMU 虚机或裸金属跨主机互联。

方式一 Docker Swarm 内置 Overlay 快速搭建

  • 前置准备

    • 至少 2 台 Ubuntu 主机(可互通),已安装 Docker
    • 主机名唯一、时间同步(如 chrony/ntp),防火墙放行 Docker 相关端口(Swarm 管理端口 2377/TCP、节点间通信 7946/TCP+UDP、Overlay 数据流量 4789/UDP)。
  • 步骤

    1. 初始化 Swarm(任选一台为管理节点)
      sudo docker swarm init --advertise-addr <本机IP>
    2. 其他节点加入集群(在管理节点执行 docker swarm join-token worker 输出命令,复制到各节点执行)
    3. 创建 overlay 网络(可指定子网,避免与宿主机网段冲突)
      sudo docker network create -d overlay --subnet 10.10.0.0/24 my_overlay
    4. 部署服务并连接到 overlay
      sudo docker service create --name web --network my_overlay --replicas 2 nginx:alpine
    5. 验证
      • 查看网络:docker network ls(应见 my_overlay,Scope 为 global
      • 进入容器互 ping:docker exec -it <容器ID> sh;ping <另一容器IP>
      • 服务发现:在容器中直接访问服务名(如 curl http://web:80)
  • 使用 Docker Compose(version ≥ 3.8)
    version: “3.8” services: web: image: nginx:alpine networks: - my_overlay networks: my_overlay: driver: overlay attachable: true # 便于独立容器加入 启动:docker compose up -d;验证:docker compose ps 与网络连通性测试。

方式二 基于 Open vSwitch 的 Overlay 网络搭建

  • 适用场景

    • 需要在 KVM/QEMU 虚机或物理机之间构建跨主机二层/三层叠加网络,不依赖容器编排平台。
  • 步骤

    1. 安装组件
      sudo apt update
      sudo apt install -y openvswitch-switch qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    2. 在每台主机创建 OVS 网桥(示例名 br-overlay)
      sudo ovs-vsctl add-br br-overlay
    3. 配置 VXLAN 隧道(示例:两台主机 IP 分别为 192.168.1.10/24192.168.1.11/24,VNI 取 100
      • 主机A:
        sudo ovs-vsctl add-port br-overlay vxlan0 – set interface vxlan0 type=vxlan options:remote_ip=192.168.1.11 options:key=100
      • 主机B:
        sudo ovs-vsctl add-port br-overlay vxlan0 – set interface vxlan0 type=vxlan options:remote_ip=192.168.1.10 options:key=100
    4. 将虚拟机或物理口接入网桥(示例将已有接口 eth1 接入)
      sudo ovs-vsctl add-port br-overlay eth1
      注:若使用 libvirt,可在虚拟机 XML 中将 的 bridge 指定为 br-overlay
    5. 验证
      • 查看 OVS 配置:ovs-vsctl show
      • 在虚机内检查二层连通(如 arp/ping),确认跨主机二层可达。

常见问题与排查要点

  • Docker Swarm 模式

    • 未加入 Swarm 无法创建或看到 global 作用域的 overlay 网络。
    • 防火墙需放行 2377/TCP、7946/TCP+UDP、4789/UDP;跨主机时间不同步会导致控制面异常。
    • 自定义子网避免与宿主机/物理网络冲突(如 10.10.0.0/24、172.17.0.0/16 等常见网段)。
  • OVS/VXLAN 模式

    • 确保 VNI 一致remote_ip 可达(跨三层需路由可达),物理/安全组策略允许 UDP 4789
    • 使用 ovs-vsctl show 检查端口与隧道状态;虚机/容器网卡正确接入 br-overlay

扩展方案

  • Docker 外部 KV 发现模式(不启用 Swarm)
    • Consul/Etcd/ZooKeeper 作为键值存储,配置 Docker daemon 的 cluster-store/cluster-advertise 后创建 overlay 网络。适合已有服务发现体系的场景。
  • 第三方容器网络插件
    • Flannel、Weave、Calico 等,可与 Kubernetes 或 Docker 集成,提供更丰富的网络策略与规模能力。

0