CentOS Overlay 负载均衡实践指南
一、场景与总体思路
- 在 CentOS 环境中,Overlay 通常指跨主机的 VxLAN 容器网络(如 Docker 的 Overlay 驱动),用于在不改动物理网络的前提下提供二层/三层连通。负载均衡常见做法有两类:
- 在 Overlay 内部用编排/内置服务实现流量分发;
- 在 Overlay 外部用 HAProxy/Nginx 做反向代理,并通过 Keepalived 提供 VIP 高可用。
- 若并非容器场景,而是基于 OVS/VXLAN 自建的 Overlay,可在主机上用 LVS+Keepalived 做四层负载均衡。上述思路分别适用于容器与虚拟化/物理主机环境。
二、方案一 Docker Swarm 内置路由网格
- 适用:已部署 Docker Swarm 的 CentOS 集群,服务副本分布在多个节点。
- 步骤:
- 创建可附加的 Overlay 网络
docker network create -d overlay --attachable my-overlay
- 部署带副本的服务并接入 Overlay
docker service create --name web --replicas 3 --network my-overlay nginx
- 访问方式:集群内任一节点访问 服务虚拟 IP(VIP):端口,Swarm 的 Ingress 网络会自动做四层负载均衡到后端任务(容器)。
- 验证:
docker service ps web
curl http://<任一节点IP>:<服务端口>
- 说明:无需额外负载均衡器即可获得跨节点分发;如需外部统一入口,可在节点前再放置 HAProxy/Nginx 或开启路由网格的外部访问。
三、方案二 外部四层/七层负载均衡 + Keepalived 高可用
- 适用:已有 Overlay 容器/主机,需要对外暴露服务或做更复杂的七层策略。
- 架构:两台或多台 LB 节点运行 HAProxy/Nginx,用 Keepalived 提供 VIP,后端指向 Overlay 内网段的实例。
- 快速示例(HAProxy + Keepalived):
- 安装组件
yum install -y haproxy keepalived
- 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
- 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 }
}
- 启动与验证
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 方案;为管理口与数据口分别设置最小权限的防火墙规则。