温馨提示×

CentOS Overlay如何进行负载均衡

小樊
35
2025-12-17 16:47:07
栏目: 云计算

CentOS Overlay 负载均衡实践指南

一、场景与总体思路

  • CentOS 环境中,Overlay 通常指跨主机的 VxLAN 容器网络(如 Docker 的 Overlay 驱动),用于在不改动物理网络的前提下提供二层/三层连通。负载均衡常见做法有两类:
    1. Overlay 内部用编排/内置服务实现流量分发;
    2. Overlay 外部HAProxy/Nginx 做反向代理,并通过 Keepalived 提供 VIP 高可用。
  • 若并非容器场景,而是基于 OVS/VXLAN 自建的 Overlay,可在主机上用 LVS+Keepalived 做四层负载均衡。上述思路分别适用于容器与虚拟化/物理主机环境。

二、方案一 Docker Swarm 内置路由网格

  • 适用:已部署 Docker Swarm 的 CentOS 集群,服务副本分布在多个节点。
  • 步骤:
    1. 创建可附加的 Overlay 网络
      docker network create -d overlay --attachable my-overlay
    2. 部署带副本的服务并接入 Overlay
      docker service create --name web --replicas 3 --network my-overlay nginx
    3. 访问方式:集群内任一节点访问 服务虚拟 IP(VIP):端口,Swarm 的 Ingress 网络会自动做四层负载均衡到后端任务(容器)。
    4. 验证:
      docker service ps web
      curl http://<任一节点IP>:<服务端口>
  • 说明:无需额外负载均衡器即可获得跨节点分发;如需外部统一入口,可在节点前再放置 HAProxy/Nginx 或开启路由网格的外部访问。

三、方案二 外部四层/七层负载均衡 + Keepalived 高可用

  • 适用:已有 Overlay 容器/主机,需要对外暴露服务或做更复杂的七层策略。
  • 架构:两台或多台 LB 节点运行 HAProxy/Nginx,用 Keepalived 提供 VIP,后端指向 Overlay 内网段的实例。
  • 快速示例(HAProxy + Keepalived):
    1. 安装组件
      yum install -y haproxy keepalived
    2. HAProxy 示例(/etc/haproxy/haproxy.cfg,四层或七层均可)
      global
      log /dev/log local0
      daemon
      defaults
      log global
      timeout connect 5000ms
      timeout client 50000ms
      timeout server 50000ms
      frontend http-in
      bind *:80
      default_backend app
      backend app
      balance roundrobin
      server s1 10.0.0.11:80 check
      server s2 10.0.0.12:80 check
    3. Keepalived 示例(/etc/keepalived/keepalived.conf,主备)
      vrrp_instance VI_1 {
      state MASTER
      interface eth0
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication { auth_type PASS; auth_pass 1234 }
      virtual_ipaddress { 192.168.1.100/24 }
      }
    4. 启动与验证
      systemctl enable --now haproxy keepalived
      ip addr show dev eth0 | grep 192.168.1.100
      curl http://192.168.1.100
  • 提示:后端地址使用 Overlay 网段(如 10.0.0.0/24)的容器/Pod IP;若需七层策略(域名/路径/头),在 HAProxy/Nginx 中配置对应 frontend/upstream。

四、方案三 基于 OVS/VXLAN 自建 Overlay 的 LVS+Keepalived

  • 适用:非容器场景,使用 OVS+VXLAN 在 CentOS 主机间构建 Overlay 二层域
  • 思路:在 Overlay 网段前部署 LVS(IPVS) 作为四层负载均衡器,用 Keepalived 管理 VIP 与故障切换。
  • 快速示例(Keepalived 配置片段,DR 模式):
    vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication { auth_type PASS; auth_pass 1234 }
    virtual_ipaddress { 10.0.0.100 }
    }
    virtual_server 10.0.0.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP
    real_server 10.0.0.1 80 { weight 1; TCP_CHECK { connect_timeout 10; } }
    real_server 10.0.0.2 80 { weight 1; TCP_CHECK { connect_timeout 10; } }
    }
  • 说明:DR 模式需确保回程流量经 Overlay 正确返回;必要时在主机/交换机上做策略或开启 arp_ignore/arp_announce 等内核参数。

五、关键注意事项与排错要点

  • 地址与连通性:确认 Overlay 网段网关/VTEP、以及后端实例的安全组/防火墙放行相应端口;跨主机通信依赖 VxLAN 封装,物理网络需允许 UDP 4789
  • 健康检查与回程:四层(L4)负载均衡需确保后端实例对 VIP 的回程路由正确;七层(L7)需关注长连接、会话保持与头部转发。
  • 高可用:生产环境建议 至少 2 台 LB + VIP,并配置 监控/日志自动故障切换
  • 性能与安全:Overlay 有封装开销;对延迟敏感业务可评估 host 网络/underlay 方案;为管理口与数据口分别设置最小权限的防火墙规则。

0