Ubuntu Overlay虚拟机如何搭建
导读:Ubuntu Overlay 虚拟机搭建指南 一、目标与架构选择 常见“Overlay”有两类:一类是容器跨主机通信的Docker Overlay 网络,另一类是虚拟化/SDN中的二层/三层 Overlay 网络(如基于Open vSwi...
Ubuntu Overlay 虚拟机搭建指南
一、目标与架构选择
- 常见“Overlay”有两类:一类是容器跨主机通信的Docker Overlay 网络,另一类是虚拟化/SDN中的二层/三层 Overlay 网络(如基于Open vSwitch OVN)。前者运行在容器引擎之上,后者运行在宿主机/虚拟机网络栈之上。
- 典型架构对比:
- Docker Overlay:依赖键值存储(如Consul)或内置集群,创建VXLAN隧道承载容器跨主机流量,适合容器工作负载。
- OVN/OVS Overlay:在宿主机上用OVN编排OVS流表,通过Geneve/VXLAN封装,适合虚拟机或裸金属的多租户网络。
二、方案一 Docker Overlay 在虚拟机中的搭建
- 适用场景:多台运行 Ubuntu 的虚拟机,需要在其上运行的容器实现跨主机互联。
- 步骤
- 环境准备(两台以上 Ubuntu 虚拟机)
- 安装 Docker:sudo apt-get update & & sudo apt-get install -y docker.io
- 允许管理流量通过本地端口(示例用端口2375;生产建议启用 TLS):
- /etc/docker/daemon.json 增加: { “cluster-store”: “consul://< KV_IP> :8500”, “cluster-advertise”: “< 本机管理IP> :2375” }
- 重启:sudo systemctl daemon-reload & & sudo systemctl restart docker
- 部署键值存储(Consul)
- 在其中一台虚拟机启动 Consul(单机演示): nohup consul agent -server -bootstrap -ui -client=0.0.0.0 -bind=< 本机IP> -data-dir=/opt/consul > /var/log/consul.log 2> & 1 &
- 浏览器访问 http://< KV_IP> :8500 检查成员与健康状态。
- 创建 Overlay 网络
- 在任一节点执行: docker network create -d overlay --subnet 10.22.1.0/24 --gateway 10.22.1.1 my_overlay_network
- 启动容器并验证
- 在不同虚拟机上分别运行容器并接入同一 Overlay 网络: docker run -d --name c1 --net my_overlay_network ubuntu:24.04 sleep infinity docker run -it --rm --net my_overlay_network ubuntu:24.04 ping < 另一容器的IP>
- 如需固定 IP:docker run -d --name c2 --net my_overlay_network --ip 10.22.1.10 ubuntu:24.04
- 常见问题
- 管理端口未开放或防火墙阻断(放行2375/8500等)。
- 各节点时间不同步(建议安装并启用 chrony/ntp)。
- 使用自签名证书或启用 TLS 时,需正确配置 Docker 客户端证书。
- 环境准备(两台以上 Ubuntu 虚拟机)
三、方案二 基于 OVS/OVN 的虚拟机 Overlay 搭建
- 适用场景:需要在虚拟机层面提供二层/三层隔离与跨主机互联,可叠加安全组、ACL 等能力。
- 步骤(两台以上 Ubuntu 宿主机/虚拟机)
- 安装基础组件
- sudo apt-get update
- sudo apt-get install -y openvswitch-switch qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- 部署 OVN(简化路径)
- 安装 OVN(Ubuntu 22.04/24.04 常见可用版本): sudo apt-get install -y ovn-central ovn-host
- 初始化北向/南向数据库(在“Central”节点): sudo ovn-nbctl set-connection ptcp:6641:0.0.0.0 sudo ovn-sbctl set-connection ptcp:6642:0.0.0.0
- 配置 OVN 逻辑网络
- 在 Central 节点创建逻辑交换机与端口(示例): sudo ovn-nbctl ls-add ls1 sudo ovn-nbctl lsp-add ls1 vm1-port sudo ovn-nbctl lsp-set-addresses vm1-port 00:00:00:00:00:01 sudo ovn-nbctl lsp-set-port-security vm1-port 00:00:00:00:00:01
- 将宿主机接入(在每台宿主机执行,< 本机IP> 为管理 IP): sudo ovs-vsctl set open . external-ids:ovn-remote=tcp:< Central_IP> :6642 sudo ovs-vsctl set open . external-ids:ovn-encap-type=geneve,vxlan sudo ovs-vsctl set open . external-ids:ovn-encap-ip=< 本机IP> sudo systemctl restart ovn-controller
- 在虚拟机中接入
- 使用 libvirt 创建 VM,将网卡连接到由 OVS 管理的网桥(如 br-int 或自定义桥),并在 OVN 中将对应端口加入逻辑交换机 ls1。
- 为 VM 配置静态 MAC(如上 00:00:00:00:00:01),便于 OVN 学习转发。
- 验证
- 在 VM 内互 ping;在 Central 节点查看逻辑拓扑与端口绑定: sudo ovn-nbctl show sudo ovn-sbctl show
- 安装基础组件
- 说明
- OVN 支持 Geneve/VXLAN 封装、分布式逻辑路由、ACL 等;生产可结合 OVSDB 高可用与证书认证。
四、快速对比与选型建议
| 维度 | Docker Overlay | OVS/OVN Overlay |
|---|---|---|
| 工作层级 | 容器网络之上 | 宿主机/虚拟机网络之上 |
| 依赖组件 | Docker + KV(如 Consul) | OVS + OVN |
| 封装协议 | 常见为 VXLAN | Geneve/VXLAN |
| 适用对象 | 容器跨主机互联 | 虚拟机/裸金属多租户网络 |
| 配置复杂度 | 低-中 | 中-高 |
| 典型场景 | 微服务、开发测试 | NFV、多租户云、复杂网络策略 |
五、常见问题与排障要点
- 端口与连通性
- Docker Overlay:放行 2375/8500(或启用 TLS 的相关端口);Consul UI 端口 8500 用于健康检查。
- OVN:放行 6641/6642(OVN NB/SB),以及 Geneve(6081)/VXLAN(4789) 等封装端口;确保管理网络互通。
- 时间同步
- 多节点环境务必启用 chrony/ntp,否则 KV/数据库一致性会受影响。
- 防火墙与安全
- 生产环境不要长期开放未加密的管理端口;Docker 建议启用 TLS;OVN 可结合 RBAC/证书。
- 虚拟化网络模式
- 若使用 libvirt/KVM,优先使用桥接到 OVS 的方式接入 Overlay,而非 NAT,以避免额外 NAT 影响与策略复杂性。
- 日志与诊断
- Docker:journalctl -u docker;Consul:/var/log/consul.log;OVN:ovn-nbctl/ovn-sbctl show、ovs-vsctl show、journalctl -u ovn-controller。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Overlay虚拟机如何搭建
本文地址: https://pptw.com/jishu/768067.html
