跳到主要内容

完整网络拓扑图(多集群高可用架构版)

一、拓扑总览(物理+虚拟层级)

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 物理主机(承载所有集群节点与网络组件) |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| | 虚拟交换机(核心网络枢纽) | |
| | +----------------------+ +----------------------+ +----------------------+ +----------------+ +----------------------+ | | |
| | | VLAN 10(管理网) | | VLAN 100(服务网) | | 路由模块(跨VLAN) | | 端口绑定表 | | 安全组规则(网段隔离) | | | |
| | | 10.1.10.0/24 | | 192.168.192.70/24 | | (VLAN间路由转发) | | (节点-VLAN) | | (限制跨网段端口) | | | |
| | +----------------------+ +----------------------+ +----------------------+ +----------------+ +----------------------+ | | |
| | | | | | | | | |
| | +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ | | |
| | | Platform集群 | | Middleware集群 | | Application集群 | | 内部API LB集群 | | 外部服务LB集群 | | 数据库节点 | | | |
| | | +------------------+ | | +------------------+ | | +------------------+ | | +------------------+ | | +------------------+ | | 192.168.192.170 | | | |
| | | |master:10.1.10.60 | | | |master:10.1.10.50 | | | |master:10.1.10.40 | | | |主LB:10.1.10.5 | | | |主LB:192.168.192.75| | | (MySQL集群) | | | |
| | | |master:10.1.10.61 | | | |master:10.1.10.51 | | | |master:10.1.10.41 | | | |备LB:10.1.10.6 | | | |备LB:192.168.192.76| | | | | | |
| | | |worker:10.1.10.65 | | | |worker:10.1.10.55 | | | |worker:10.1.10.45 | | | |VIP:10.1.10.10/11/12| | | |VIP:192.168.192.80 | | | | | | |
| | | |worker:10.1.10.66 | | | |worker:10.1.10.56 | | | |worker:10.1.10.46 | | | |(控制平面入口) | | | |(外部访问入口) | | | | | | |
| | | | | | | | | | | |worker:10.1.10.47 | | | | | | | | | | | | | | |
| | +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ | | |
| | | | | | | | | |
| | +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ | | |
| | | 网络插件:Calico | | 服务暴露:MetalLB | | 入口控制器:Ingress | | 虚拟网卡(VLAN绑定)| | 存储卷(本地/共享) | | | |
| | | - Platform:10.42/43 | | - Platform:10.2.10.100-150 | - Platform:10.2.10.100 | | (绑定VLAN 10/100) | | (持久化数据存储) | | | |
| | | - Middleware:10.44/45| | - Middleware:10.2.10.151-200 | - Middleware:10.2.10.151 | | | | | | | |
| | | - Application:10.46/47| | - Application:10.2.10.201-250 | - Application:10.2.10.201 | | | | | | | |
| | +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ | | |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

二、架构关系图(mermaid)

三、关键组件标注说明

层级组件/模块核心配置细节
物理层物理主机承载所有虚拟机节点,通过虚拟化技术分配CPU/内存/存储资源,支持多集群部署隔离
虚拟网络层虚拟交换机1. 划分2个VLAN:
- VLAN 10(管理网):10.1.10.0/24(集群节点、内部LB、数据库)
- VLAN 100(服务网):192.168.192.70/24(外部LB、业务访问入口)
2. 路由模块:实现VLAN 10与VLAN 100跨网段通信
3. 安全组:限制跨VLAN端口(如仅允许VLAN 100访问Application的80/443)
集群节点层Platform集群1. 节点IP:master(10.1.10.60/61)、worker(10.1.10.65/66)
2. 核心服务:Rancher(多集群管理)、cert-manager(证书)
3. 网络:Calico网段10.42.0.0/16、10.43.0.0/16
集群节点层Middleware集群1. 节点IP:master(10.1.10.50/51)、worker(10.1.10.55/56)
2. 核心服务:Redis、Kafka、MySQL(中间件)
3. 网络:Calico网段10.44.0.0/16、10.45.0.0/16
集群节点层Application集群1. 节点IP:master(10.1.10.40/41)、worker(10.1.10.45/46/47)
2. 核心服务:业务微服务、前端应用
3. 网络:Calico网段10.46.0.0/16、10.47.0.0/16
负载均衡层内部API LB集群1. 节点IP:主(10.1.10.5)、备(10.1.10.6)
2. VIP分配:
- Application控制平面:10.1.10.10:6443
- Middleware控制平面:10.1.10.11:6443
- Platform控制平面:10.1.10.12:6443
3. 功能:转发各集群apiserver流量,实现控制平面高可用
负载均衡层外部服务LB集群1. 节点IP:主(192.168.192.75)、备(192.168.192.76)
2. VIP:192.168.192.80:80/443
3. 功能:仅转发外部流量至Application集群的Ingress-nginx(10.2.10.201)
网络插件层Calico1. 按集群划分Pod网段:
- Platform:10.42.0.0/16、10.43.0.0/16
- Middleware:10.44.0.0/16、10.45.0.0/16
- Application:10.46.0.0/16、10.47.0.0/16
2. 功能:Pod跨节点通信、网络策略隔离
服务暴露层MetalLB + Ingress-nginx1. MetalLB IP段(按集群划分):
- Platform:10.2.10.100-150(Ingress IP:10.2.10.100)
- Middleware:10.2.10.151-200(Ingress IP:10.2.10.151)
- Application:10.2.10.201-250(Ingress IP:10.2.10.201)
2. 功能:MetalLB分配固定IP,Ingress-nginx处理HTTP/HTTPS路由
数据存储层数据库节点1. IP:192.168.192.170
2. 功能:存储3个集群的etcd数据(k3s_platform/k3s_middleware/k3s_application)

四、核心场景数据流转图(带步骤说明)

场景1:worker节点加入集群(控制平面注册流程)

目的:Application集群的worker节点通过内部API LB接入控制平面,实现高可用注册。

步骤1:worker节点(AW1,10.1.10.45)启动k3s agent,向内部API LB的Application VIP(10.1.10.10:6443)发送注册请求
步骤2:虚拟交换机将请求转发至内部主LB(10.1.10.5,绑定VIP)
步骤3:主LB的HAProxy按轮询规则转发至Application集群master节点(如AM1,10.1.10.40:6443)
步骤4:AM1的kube-apiserver验证token(application-cluster-token-2024),注册节点信息至外部数据库(k3s_application库)
步骤5:数据库同步数据至AM2(10.1.10.41),确保控制平面数据一致
步骤6:响应经原路径返回,worker节点加入集群,状态变为Ready

[流转路径图]
AW1(10.1.10.45)
↓(注册请求:10.1.10.10:6443)
虚拟交换机(VLAN 10端口)

内部主LB(10.1.10.5,HAProxy)
↓(轮询转发)
AM1(10.1.10.40:6443,kube-apiserver)
↓(数据写入)
数据库(192.168.192.170,k3s_application)
↓(数据同步)
AM2(10.1.10.41,etcd同步)
↓(响应)
内部主LB → 虚拟交换机 → AW1(注册成功)

场景2:外部用户访问业务服务(外部流量入口流程)

前提:业务服务部署在Application集群的AW1(10.1.10.45),通过Ingress-nginx(10.2.10.201)暴露。

步骤1:外部客户端(如192.168.1.200)访问外部服务LB的VIP:https://192.168.192.80
步骤2:请求经物理网络进入虚拟交换机的VLAN 100端口,转发至外部主LB(192.168.192.75,绑定VIP)
步骤3:主LB的HAProxy匹配80/443端口规则,转发至Application集群的Ingress-nginx(10.2.10.201)
步骤4:虚拟交换机通过路由模块跨VLAN转发(VLAN 100→VLAN 10),将请求送达Ingress-nginx Pod
步骤5:Ingress-nginx根据域名规则转发至业务Service,最终路由到AW1上的业务Pod
步骤6:响应经原路径返回至客户端

[流转路径图]
外部客户端(192.168.1.200)
↓(访问https://192.168.192.80)
物理网络 → 虚拟交换机(VLAN 100端口)

外部主LB(192.168.192.75,HAProxy)
↓(转发至10.2.10.201:443)
虚拟交换机(路由模块:VLAN 100→VLAN 10)

Application Ingress-nginx(10.2.10.201)
↓(按Ingress规则转发)
业务Service → 业务Pod(AW1上)
↓(响应)
虚拟交换机(VLAN 10→VLAN 100)→ 外部主LB → 外部客户端

场景3:跨集群服务调用(内网通信流程)

前提:Application集群的业务Pod(10.46.1.10)需访问Middleware集群的Redis服务(MetalLB IP:10.2.10.155:6379)。

步骤1:业务Pod通过配置的Redis地址(10.2.10.155:6379)发送请求
步骤2:请求经Application集群的Calico插件处理,通过虚拟网卡(VLAN 10)发送至虚拟交换机
步骤3:虚拟交换机识别目标IP(10.2.10.155属于Middleware的MetalLB网段),转发至Middleware集群的worker节点(MW1,10.1.10.55)
步骤4:MW1的Calico插件将流量转发至Redis Service,最终路由到Redis Pod
步骤5:Redis处理请求并返回响应,经原路径返回至业务Pod

[流转路径图]
业务Pod(10.46.1.10,APP集群)
↓(访问10.2.10.155:6379)
APP集群Calico → 虚拟网卡(VLAN 10)→ 虚拟交换机
↓(按MetalLB网段转发)
MW1(10.1.10.55,Middleware集群)

Middleware Calico → Redis Service → Redis Pod
↓(响应)
虚拟交换机 → APP集群Calico → 业务Pod

场景4:外部LB主节点故障切换(高可用流程)

触发条件:外部主LB(192.168.192.75)宕机,无法响应心跳。

步骤1:外部备LB(192.168.192.76)通过VRRP协议检测到主LB连续3次心跳丢失
步骤2:备LB触发VIP抢占,将192.168.192.80绑定到自身虚拟网卡
步骤3:虚拟交换机更新ARP表,将192.168.192.80的MAC地址指向备LB
步骤4:外部客户端请求经虚拟交换机转发至备LB(192.168.192.76)
步骤5:备LB的HAProxy继续转发流量至Application的Ingress-nginx(10.2.10.201),业务无感知
步骤6:主LB恢复后,通过Keepalived抢占机制重新接管VIP,流量切回主节点

[流转路径图(故障后)]
外部客户端(192.168.1.200)
↓(访问192.168.192.80)
虚拟交换机(ARP已更新)

外部备LB(192.168.192.76,已绑定VIP)
↓(转发至10.2.10.201)
Application Ingress-nginx → 业务Pod

五、拓扑与流转核心逻辑总结

  1. 网络隔离与分层:通过VLAN严格划分管理网(内部集群通信)和服务网(外部访问),仅Application集群暴露到服务网,提升安全性。
  2. 流量入口控制
    • 内部控制平面流量:统一通过内部API LB的VIP(10.1.10.10/11/12)转发,实现控制平面高可用。
    • 外部业务流量:仅通过外部LB的VIP(192.168.192.80)进入Application集群,避免Platform和Middleware直接暴露。
  3. 集群间通信规则:Platform与Middleware、Application与Middleware通过内网MetalLB IP直接通信,不经过外部网络,减少延迟并增强隔离。
  4. 高可用设计:所有LB采用主备模式(Keepalived+HAProxy),集群控制平面通过etcd实现数据高可用,确保单点故障不影响整体服务。
  5. 容器网络闭环:Calico负责Pod跨节点通信,MetalLB提供固定服务IP,Ingress-nginx统一HTTP入口,形成从Pod到外部访问的完整链路。