温馨提示×

Ubuntu Overlay网络配置步骤是什么

小樊
40
2025-12-23 23:55:46
栏目: 智能运维

Ubuntu Overlay网络配置步骤

一、Docker Swarm 模式

  • 适用场景:跨主机容器通信、原生服务发现与负载均衡。
  • 步骤
    1. 初始化 Swarm(任选一台管理节点):执行命令:docker swarm init。如有多网卡,可指定管理地址:docker swarm init --advertise-addr <管理网卡IP>
    2. 创建 Overlay 网络:
      • 默认加密:
        docker network create -d overlay my_overlay
      • 指定网段与网关:
        docker network create -d overlay --subnet 10.22.1.0/24 --gateway 10.22.1.1 my_overlay_network
      • 如需跨主机自动发现,可启用加密:在上述命令后追加 –opt encrypted
    3. 部署服务或启动容器并加入网络:
      • 服务方式:docker service create --name web --network my_overlay nginx
      • 容器方式:docker run -d --name app1 --network my_overlay ubuntu:24.04 sleep infinity
    4. 验证:
      • 查看网络与服务:docker network lsdocker service ls
      • 进入容器互 ping:docker exec -it app1 sh -c “ping -c 4 app2”(将 app2 替换为同网络下另一容器名或 IP)。
        说明:Docker Swarm 的 Overlay 网络默认基于 VXLAN 封装,实现跨主机二层/三层连通与内置 DNS 解析服务名。

二、Docker Swarm 使用外部 KV 发现(可选)

  • 适用场景:不运行内置 Raft 共识、希望对接外部一致性存储(如 Consul)进行集群成员与网络信息存储。
  • 步骤
    1. 准备外部 KV(如 Consul),确保其对外可达(示例地址:192.168.1.100:8500)。
    2. 配置 Docker 守护进程(所有节点):编辑 /etc/docker/daemon.json
      {
      “cluster-store”: “consul://192.168.1.100:8500”,
      “cluster-advertise”: “ens33:2376”
      }
      说明:将 ens33 替换为实际承载管理流量的网卡名。
    3. 重启 Docker:systemctl daemon-reload && systemctl restart docker
    4. 按“一、Docker Swarm 模式”的步骤创建 Overlay 网络并部署服务。
      提示:使用外部 KV 时,请确保网络、防火墙与端口策略允许节点与 KV 之间通信。

三、多 Overlay 网络与 Docker Compose

  • 适用场景:业务隔离(如 frontend/backend/db 分网)、同一主机多租户。
  • 步骤
    1. 预先创建多个 Overlay 网络:
      docker network create --driver overlay --subnet 10.0.9.0/24 --gateway 10.0.9.1 net_a
      docker network create --driver overlay --subnet 10.0.10.0/24 --gateway 10.0.10.1 net_b
    2. 使用 Docker Compose(v3.8+)编排,将服务接入不同网络:
      version: “3.8”
      services:
      web1:
      image: nginx
      networks:
      - net_a
      web2:
      image: nginx
      networks:
      - net_b
      networks:
      net_a:
      external: true
      net_b:
      external: true
    3. 部署与验证:
      • 部署:docker stack deploy -c docker-compose.yml my_stack
      • 验证:docker inspect web1 | grep -A3 Networks 查看是否连接到 net_a
        说明:多 Overlay 网络在同一 Swarm 内天然互通(基于 VXLAN 隧道与内置路由),可按业务划分网段与策略。

四、基于 Open vSwitch 的虚拟机 Overlay 组网(可选)

  • 适用场景:非容器场景(KVM 虚拟机)、需要自定义隧道(如 VXLAN/GRE)与网桥策略。
  • 步骤
    1. 安装组件:sudo apt update && sudo apt install openvswitch-switch qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    2. 创建 OVS 网桥:sudo ovs-vsctl add-br br-overlay
    3. 创建隧道端口(示例为 VXLAN,对端 IP 为 192.168.10.20):
      sudo ovs-vsctl add-port br-overlay vxlan0 – set interface vxlan0 type=vxlan options:remote_ip=192.168.10.20 options:key=100
      如需 GRE 隧道:
      sudo ovs-vsctl add-port br-overlay gre0 – set interface gre0 type=gre options:remote_ip=192.168.10.20
    4. 将虚拟机网络连接到 br-overlay(如使用 libvirt 网络或桥接)。
    5. 验证:在虚拟机内 ping 对端虚拟机 IP,或在宿主机查看 OVS 端口与转发表:ovs-vsctl showovs-ofctl dump-flows br-overlay
      说明:该方式通过 VXLAN/GRE 在现有三层网络上构建二层 Overlay,适合虚拟化与裸金属混合组网。

五、常见问题与排障要点

  • 节点间互通:确保管理/隧道端口可达(如 2377/7946/4789 UDP),云环境需放通安全组与主机防火墙。
  • MTU 设置:Overlay 封装引入额外头部,建议将容器/实例网卡 MTU 设置为 1450(或物理网络支持值),避免分片。
  • 子网规划:不同 Overlay 网络使用不重叠 –subnet,避免与服务网段冲突。
  • 加密与合规:对敏感流量启用 –opt encrypted;对接外部 KV 时,限制访问范围并启用鉴权。
  • 服务发现:同一 Overlay 内可直接用服务名解析;跨网络需显式互联或使用外部 DNS/路由策略。

0