Skip to content

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

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

text
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                   物理主机(承载所有集群节点与网络组件)                                                                                 |
|  +------------------------------------------------------------------------------------------------------------------------------------------------------------------+  |
|  |                                                      虚拟交换机(核心网络枢纽)                                                                                   |  |
|  |  +----------------------+  +----------------------+  +----------------------+  +----------------+  +----------------------+                                   |  |  |
|  |  |   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接入控制平面,实现高可用注册。

text
步骤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)暴露。

text
步骤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)。

text
步骤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)宕机,无法响应心跳。

text
步骤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到外部访问的完整链路。