Linux Overlay网络故障排查手册
一 明确类型与总体思路
- 先区分两类常见“Overlay”:
- 网络Overlay:在物理网络上构建虚拟网络,典型技术为VXLAN/NVGRE,涉及VTEP、隧道接口、Underlay连通性与MTU等。
- 存储Overlay:如OverlayFS,用于联合挂载文件系统,关注挂载参数、权限、磁盘空间与内核模块。
- 总体思路:从物理/Underlay链路 → VTEP/隧道 → 路由/转发 → 安全策略 → MTU → 日志/抓包逐层验证,分段隔离问题。
二 网络Overlay排查步骤
- 拓扑与配置核对
- 核对VTEP地址、隧道协议(如VXLAN/NVGRE)、VNI/租户网段、以及各节点的MTU是否一致且符合设计。
- 物理与端口状态
- 检查物理链路与端口:使用ip link、ethtool确认链路UP、速率/双工正常,无错包/丢包告警。
- VTEP与隧道接口
- 查看隧道接口与转发面状态:使用ip link show、bridge fdb(VXLAN)、相关控制面状态命令;确认VTEP IP可达、隧道已启用。
- 基础连通性测试
- 节点间先做Underlay IP直连测试(如 ping),再做Overlay端点/网段测试;必要时用traceroute/mtr定位中断位置。
- 路由与FDB/转发表
- 检查节点路由表是否正确,是否存在黑洞/环回;检查FDB表项(如 VXLAN 的远端VTEP学习)是否完整。
- MTU与分片
- 确认Overlay封装开销后MTU匹配(常见需预留封装头,避免分片/丢包);必要时临时下调MTU验证。
- 安全策略
- 核对主机iptables/firewalld、云上安全组/NACL是否放行Overlay所需协议与端口(如UDP 4789用于VXLAN)。
- 分段与抓包
- 按“物理口 → 隧道口 → 容器/网桥”分段测试;在关键节点抓包(如tcpdump/Wireshark)验证封装/解封装是否成功。
- 监控与日志
- 结合Prometheus/Grafana等监控丢包/延迟;分析系统日志/VTEP日志定位异常事件。
三 Docker Swarm Overlay网络专项
- 环境与健康
- 检查节点与管理面:docker node ls;查看服务与任务分布:docker service ls / docker service ps 。
- 网络与端点
- 列出网络:docker network ls;检查目标Overlay网络详情:docker network inspect ;查看容器端点:docker inspect | grep -A3 Networks。
- 存储驱动与内核
- 确认Docker使用overlay2存储驱动(查看:docker info);在CentOS 7上建议内核≥3.10.0-514以获得稳定的 overlay2 支持;必要时加载内核模块:lsmod | grep overlay。
- 日志与系统
- 查看容器与引擎日志:docker logs 、journalctl -u docker -n 100;排查**/var/log/messages或/var/log/syslog**中与网络/存储相关的错误。
- 安全与策略
- 临时放宽策略验证(如SELinux/防火墙)是否被误拦截;确认云上安全组放行容器网段与必要端口。
四 OverlayFS存储专项排查
- 挂载与参数
- 检查挂载选项:mount | grep overlay;核对lowerdir/upperdir/workdir是否存在且路径正确。
- 权限与空间
- 目录权限与属主:ls -ld ;磁盘空间:df -h;必要时清理或扩容。
- 内核与模块
- 确认内核支持并已加载overlay模块:lsmod | grep overlay。
- 日志与恢复
- 系统日志:journalctl、/var/log/messages或**/var/log/syslog**;修复底层错误后尝试umount/重新mount。
五 常见症状与快速处置
- 节点间Overlay不通但Underlay可达
- 检查VTEP地址/路由与隧道接口;核对VNI一致性;查看FDB/转发表是否缺失远端VTEP;抓包验证封装是否发出/收到。
- 偶发丢包或性能差
- 优先验证MTU是否因封装开销导致分片;对比正常/异常时段的监控指标;分段抓包定位瓶颈。
- 新建服务无法互通
- 在Swarm中核对网络已创建、服务已attach到该网络;检查安全组/防火墙是否放行;查看服务/容器日志与节点状态。
- 容器启动失败或挂载异常(OverlayFS)
- 核对挂载参数、目录权限/存在性与磁盘空间;确认overlay模块加载与内核版本;必要时重新挂载。