温馨提示×

如何测试CentOS overlay连接

小樊
38
2025-12-27 11:24:34
栏目: 智能运维

CentOS Overlay连接测试与排查指南

一、先明确你的Overlay类型

  • 容器网络Overlay(Docker Swarm):用于跨主机的多个容器互通,依赖 Docker Swarm、覆盖网络(overlay)与节点间通信端口。
  • 存储层OverlayFS:用于联合挂载文件系统,常见于容器/系统根文件系统,关注内核模块、挂载参数与目录权限。
  • 两者的测试方法完全不同,先确认你遇到的是哪一类问题,再按下文对应步骤执行。

二、容器网络Overlay测试步骤(Docker Swarm)

  • 前置检查
    • 所有节点运行 CentOS 7+,已安装 Docker 并启动:sudo systemctl start docker && sudo systemctl enable docker
    • 建议将各节点加入同一 Docker Swarmdocker swarm init(首个管理节点)或在其他节点执行 docker swarm join ...
  • 创建覆盖网络并启动容器
    • 创建网络:docker network create --driver overlay --subnet **10.0.0.0/24** --gateway **10.0.0.1** my_overlay_network
    • 在不同节点分别启动容器并接入同一网络:
      • 节点A:docker run -dit --name **c1** --network my_overlay_network nginx
      • 节点B:docker run -dit --name **c2** --network my_overlay_network nginx
  • 连通性验证
    • 按IP互通:docker exec -it c1 ping **10.0.0.3**(示例对端IP)。
    • 按服务名互通(若使用 Docker 服务):docker exec -it c1 ping **tasks.<service_name>**
    • 查看网络与端点:docker network inspect my_overlay_networkdocker inspect c1 | grep -A3 Networks
  • 快速故障排查
    • 服务状态:systemctl status dockerdocker info 查看是否在 Swarm 模式。
    • 日志定位:journalctl -u docker.service -n 200
    • 防火墙放行(关键端口):
      • TCP 2377(集群管理)、TCP/UDP 7946(节点通信)、UDP 4789(VXLAN 数据面)。
      • 示例:firewall-cmd --add-port=2377/tcp --permanent && firewall-cmd --add-port=7946/tcp --permanent && firewall-cmd --add-port=7946/udp --permanent && firewall-cmd --add-port=4789/udp --permanent && firewall-cmd --reload
    • 若未使用 Swarm,单纯的 docker network create --driver overlay 会失败;需先初始化或加入 Swarm。

三、存储层OverlayFS测试步骤(文件系统)

  • 内核与模块
    • 检查模块:lsmod | grep overlay;未加载则 sudo modprobe overlay
    • 内核建议:CentOS 7 ≥ 3.10.0-514CentOS 8+ 默认支持。
  • 挂载与权限验证
    • 确认挂载参数:mount | grep overlay,应见到 lowerdir=...:...,upperdir=...,workdir=...
    • 目录检查:ls -ld /lower /upper /work 确认存在且权限至少为 rwxr-xr-x
    • 空间与一致性:df -h(建议保留至少 10% 空闲),必要时检查文件系统。
  • 运行验证
    • 在挂载点创建/删除文件,验证写时复制与上下层合并是否生效。
  • SELinux与日志
    • SELinux 可能阻止操作:临时 sudo setenforce 0 验证,或按需设置文件上下文。
    • 查看内核/系统日志:journalctl -n 100/var/log/messages 搜索 overlay 相关错误。

四、常见症状与对应处理

  • 容器跨主机不通
    • 未加入同一 Swarm:执行 docker swarm init/join
    • 端口未放行:确保 2377/TCP、7946/TCP/UDP、4789/UDP 已对管理节点与工作节点开放。
    • 网络未创建或容器未连对网络:使用 docker network create --driver overlay ... 并在各节点将容器接入同一网络。
  • OverlayFS挂载失败或只读
    • 检查 lowerdir/upperdir/workdir 路径、权限与可用空间;必要时重新挂载或修复文件系统。
  • 防火墙干扰
    • 临时 systemctl stop firewalld 验证;确认问题后改为精确放行所需端口与服务。

五、一键自检清单

  • 容器网络(Swarm)
    • docker info | grep -i swarm(应在 active 状态)
    • docker network ls | grep overlay
    • firewall-cmd --list-ports | egrep '2377|7946|4789'
    • docker exec -it c1 ping <c2_ip>ping <svc_name>
  • 存储层(OverlayFS)
    • lsmod | grep overlay
    • mount | grep overlay
    • ls -ld /lower /upper /workdf -h
    • journalctl -n 100 | grep -i overlay

0