Files
slide/decks/xinfra/slides.md
T
wonder 218b8ae248
Deploy Slides / build-and-deploy (push) Successful in 1m45s
fix: adjust TOC to four-column layout with separate sub-items
2026-07-16 10:22:55 +08:00

22 KiB
Raw Blame History

theme, title, author, infoLine, transition, mdc, drawings
theme title author infoLine transition mdc drawings
frankfurt XINFRA 平台架构 实训小组 true slide-left true
persist
false

XINFRA 平台架构

统一基础设施管理平台 · 总体架构设计
实训小组

layout: default

目录

一、名词概述

  • 组内约定
  • 通用术语

二、架构图

  • 平台分层架构
  • 部署架构
  • 监控告警链路
  • 安全认证流程

三、对接子系统

  • Wayne
  • CloudDM
  • CacheCloud
  • Apollo
  • Grafana
  • qpass

四、架构描述

  • 技术选型
  • 安全机制
  • 运维模型与风险

section: 名词概述 layout: center

一、名词概述

平台核心概念与通用术语

layout: default

组内约定

主系统

XINFRA 平台自身的统管层,负责子系统无法覆盖的能力:

  • 统一门户(SSO 跳转入口)
  • 资源大盘、运维终端
  • 登录审计与运维操作审计
  • 资源指标面板

子系统

XINFRA 纳管的专项平台(独立 WebUI + API):

  • Wayne — 多集群容器管理
  • CloudDM — 数据库管理与 SQL 审核
  • CacheCloud — Redis 缓存管理
  • Apollo — 配置中心
  • Grafana — 监控可视化
  • qpass — 密码管理平台

工具层

纳管的 CLI / IaC 工具,无常驻 WebUI:

  • Ansible Playbook — 自动化部署与基础设施即代码

监控告警层

聚合异构告警源,统一去重、收敛、分级:

  • Nightingale(夜莺) — 告警聚合引擎
  • VictoriaMetrics — 容器/业务指标存储
  • Zabbix — 物理机硬件监控

通用术语(一)

术语 说明
APIKey Wayne 对外 API 认证密钥,CI/CD 自动化场景使用,最小权限
RBAC 基于角色的访问控制,用户与角色关联实现权限隔离
RKE2 Rancher K8s 发行版,CIS 安全加固,支持离线安装
Calico BGP 纯路由模式无隧道开销,每集群独立 AS 号,跨机房扁平网络
Ceph RBD 分布式块存储,供给 K8s PV 给有状态服务
Nightingale 夜莺,统一告警聚合引擎,去重收敛分级后推送
Apollo 携程开源配置中心,多机房部署、灰度、回滚、审计
术语 说明
Consul 各机房服务注册发现,XINFRA 只读聚合展示
CD 持续部署,自动化服务上线流水线
WAF Web 应用防火墙,防护 SQL 注入、XSS、CSRF
SLA 服务等级协议,定义可用性承诺指标
IaC 基础设施即代码,通过 Ansible 实现自动化管理
SINA CMDB 公司内部 CMDB,物理机与虚机资产数据基础来源
SSO 单点登录,主系统通过 LDAP 统一认证后跳转子系统

section: 架构图 layout: center

二、架构图

平台分层 · 部署 · 监控 · 安全

平台分层架构 — 总体分层

graph TB
    User["用户层<br/>LDAP SSO 统一认证"] --> Main["主系统层<br/>统一门户 + 功能模块"]
    Main --> Sub["子系统层<br/>独立部署,各自授权"]
    Main --> Infra["基础设施层<br/>计算 · 网络 · 存储 · 自动化"]
    Sub --> Infra

    style User fill:#f3e8fd,stroke:#9333ea
    style Main fill:#e0f2fe,stroke:#0284c7
    style Sub fill:#e8f0fe,stroke:#4285f4
    style Infra fill:#ecfdf5,stroke:#059669

四层模型:用户层 → 主系统层 → 子系统层 → 基础设施层,主系统是统一入口,子系统各司其职。


平台分层架构 — 主系统功能

graph TB
    Portal["统一门户<br/>LDAP SSO 跳转入口"]

    subgraph 全局视图
        DashBoard["资源大盘<br/>集群拓扑 · 节点方格图"]
        MonitorView["资源状态看板<br/>物理机/虚机/服务三层告警"]
    end

    subgraph 运维能力
        TaskCenter["任务中心<br/>Ansible/Wayne 实时日志"]
        OpsTerminal["运维终端<br/>Ansible / SSH<br/>仅管理员"]
    end

    subgraph 治理能力
        AuditDash["审计面板<br/>登录记录 · 运维操作日志"]
        CMDB["资源台账<br/>CMDB 多云同步"]
        SvcDir["服务目录<br/>Consul 只读聚合"]
    end

    Portal --> DashBoard & MonitorView & TaskCenter & AuditDash & CMDB & SvcDir

主系统不替代子系统,只自建子系统无法覆盖的能力:全局视图、运维兜底、审计、资源台账。


平台分层架构 — 子系统集成

graph LR
    Portal["XINFRA 主系统"]

    subgraph 子系统
        Wayne["Wayne<br/>多集群容器管理"]
        CloudDM["CloudDM<br/>SQL 审核"]
        CacheCloud["CacheCloud<br/>Redis 管理"]
        Apollo["Apollo<br/>配置中心"]
        Grafana["Grafana<br/>监控可视化"]
        QPass["qpass<br/>密码管理"]
    end

    Portal -.->|SSO 跳转| Wayne & CloudDM & CacheCloud & Apollo & Grafana & QPass

    Wayne -->|Client-Go| RKE2["RKE2 集群"]
    CloudDM -->|SQL 审核| MySQL[("MySQL")]
    CacheCloud -->|Agent| Redis[("Redis")]
    Apollo -->|ConfigService| RKE2

子系统各自独立部署和授权,主系统只做 SSO 跳转入口,各子系统自行维护操作审计。


平台分层架构 — 基础设施层

graph TB
    subgraph 计算
        RKE2["RKE2 集群 × 7 机房<br/>CIS 安全加固"]
    end

    subgraph 网络
        Calico["Calico BGP<br/>每集群独立 AS 号<br/>跨机房扁平互通"]
    end

    subgraph 存储
        Ceph["Ceph RBD<br/>MySQL/Redis 有状态服务 PV"]
    end

    subgraph 自动化
        Ansible["Ansible Playbook<br/>节点初始化 · 服务部署<br/>WebSocket 实时日志"]
    end

    RKE2 --> Calico
    RKE2 --> Ceph
    Ansible -->|SSH| RKE2

RKE2 是计算底座,Calico BGP 构建跨机房扁平网络,Ceph RBD 提供持久化存储,Ansible 贯穿自动化运维。


部署架构

graph TB
    subgraph "RKE2 集群(任一机房)"
        subgraph "xinfra 命名空间"
            FE["Nginx<br/>前端静态文件 + 反向代理"]
            BE["Go API Server<br/>Deployment × 2"]
            WS["WebSocket Gateway<br/>任务日志实时推送"]
        end

        subgraph "监控命名空间"
            VM[("VictoriaMetrics")]
            Grafana["Grafana"]
            NE["Nightingale"]
        end

        subgraph "子系统命名空间"
            Wayne["Wayne"]
            CloudDM["CloudDM"]
            CacheCloud["CacheCloud"]
            Apollo["Apollo"]
        end
    end

    LB["SLB / NodePort"] --> FE
    FE -->|/api/*| BE
    FE -->|WebSocket| WS
    BE --> MySQL[("MySQL 8.0 主从")]
    BE --> Redis[("Redis 会话缓存")]
    BE -->|SSH/Ansible| Nodes["业务节点池"]
    WS --> BE

    style FE fill:#e0f2fe,stroke:#0284c7
    style BE fill:#e0f2fe,stroke:#0284c7
    style WS fill:#e0f2fe,stroke:#0284c7

监控告警数据流

graph LR
    subgraph 采集源
        RKE2["RKE2 集群"]
        Zabbix["Zabbix<br/>硬件监控"]
    end

    subgraph 指标存储
        VM[("VictoriaMetrics<br/>容器/业务指标")]
    end

    subgraph 可视化
        Grafana["Grafana 仪表盘"]
    end

    subgraph 告警链路
        Nightingale["夜莺<br/>去重 · 收敛 · 分级"]
        IM["企业 IM 推送"]
    end

    RKE2 -.->|Metrics| VM
    VM --> Grafana
    VM --> Nightingale
    Zabbix -.->|Webhook| Nightingale
    Nightingale --> IM
    Zabbix -->|Zabbix API| Main["XINFRA 主系统<br/>资源状态看板"]

Zabbix 硬件监控分两条链路:告警事件通过 Webhook 推送至夜莺统一聚合;可观测数据(IPMI/温度/电源/风扇等)由主系统直接调用 Zabbix API 采集展示。


基础服务交付流程

sequenceDiagram
    actor User as 业务人员
    participant Portal as XINFRA 服务目录
    participant Ansible as Ansible Playbook
    participant Infra as RKE2 / 主机
    participant Sub as 子系统注册

    User->>Portal: 选择服务卡片,填写业务线、规格
    Portal->>Portal: 实时预览 playbook 参数(YAML)
    User->>Portal: 确认部署
    Portal->>Ansible: 提交 playbook 任务
    Ansible->>Infra: 内核初始化 · containerd · 加入集群
    Ansible-->>Portal: 任务状态 → WebSocket 实时日志
    Portal->>Sub: 自动注册(CloudDM / CacheCloud)
    Portal-->>User: 部署完成,跳转任务中心

用户通过服务卡片填参 → Ansible 自动化部署 → 完成后自动注册到对应子系统,全程日志实时查看。


多租户隔离模型(Phase 2+)

graph TB
    LDAP["企业 LDAP"] -->|部门 DN| BL["业务线租户<br/>Kodo / LAS / 灵矽 / ..."]

    BL --> NS["Kubernetes Namespace<br/>+ ResourceQuota + LimitRange"]
    BL --> NP["物理节点池<br/>node-label + taint"]

    NS -.->|Pod 只能调度到<br/>本业务线节点| NP

    style LDAP fill:#f3e8fd,stroke:#9333ea
    style BL fill:#e0f2fe,stroke:#0284c7
    style NS fill:#ecfdf5,stroke:#059669
    style NP fill:#fef3c7,stroke:#d97706

双重隔离:节点层通过 business-line=xxx 标签 + Taint 确保 Pod 调度隔离;命名空间层通过 ResourceQuota / LimitRange 限制资源用量上限。 Phase 1 仅做基础设施准备(节点标签预留),多租户功能为 Phase 2+。


安全认证流程

sequenceDiagram
    actor User as 用户
    participant Main as XINFRA 主系统
    participant LDAP as 企业 LDAP
    participant Sub as 子系统

    User->>Main: 访问主系统
    Main->>LDAP: SAML 认证请求
    LDAP-->>Main: SAML Response(用户身份 + LDAP 组信息)
    Main->>Main: 签发 JWT Token(含角色 + 业务线)
    Main-->>User: 登录成功,返回 Token

    User->>Main: 点击子系统卡片
    Main->>Sub: OAuth 2.0 Authorization Code
    Sub->>Main: 验证 Token,创建子系统会话
    Main-->>User: 跳转至子系统(免登录)

外部 LDAP 通过 SAML 集成统一认证;子系统 SSO 通过 OAuth 2.0 对接,实现单点登录免跳转。


section: 对接子系统 layout: center

三、对接子系统

Wayne · CloudDM · CacheCloud · Apollo · Grafana · qpass

子系统 — Wayne(多集群容器管理)

定位

多集群 Kubernetes 容器管理平台,统一管理 7 机房 RKE2 集群。

核心能力

  • 多集群纳管 — 通过 Client-Go 对接各机房 RKE2 集群 API
  • 应用部署 — 支持 Deployment、StatefulSet 等 K8s 工作负载管理
  • CI/CD 集成 — 对外提供 APIKey,GitLab CI 自动触发部署
  • 一键回滚 — 应用发布异常时快速回滚至历史版本

关键对接

graph LR
    CI["GitLab CI"] -->|APIKey 认证| Wayne["Wayne"]
    Wayne -->|Client-Go| RKE2["RKE2 集群"]
    Main["XINFRA 主系统"] -.->|SSO| Wayne

说明

  • 独立 WebUI + API 服务
  • APIKey 遵循最小权限原则
  • 主系统通过 SSO 跳转,各自维护操作审计

子系统 — CloudDM(数据库管理与 SQL 审核)

定位

SQL 审核与变更平台,统一管控数据库上线流程。

核心能力

  • SQL 审核 — 上线前自动检查 SQL 语句合规性与风险
  • 多库支持 — 原生支持 MySQL,后续扩展 PostgreSQL 等
  • 变更执行 — 审核通过后通过 Sidecar SQL 代理执行变更
  • 操作审计 — 所有 SQL 操作全程记录,可追溯

关键对接

graph LR
    User["DBA / 开发"] --> CloudDM["CloudDM"]
    CloudDM -->|Sidecar 代理| MySQL[("MySQL")]
    Deploy["服务部署完成"] -.->|自动注册| CloudDM
    Main["XINFRA 主系统"] -.->|SSO| CloudDM

说明

  • 基础服务交付流程中,MySQL 部署完成后自动注册至 CloudDM
  • 白名单机制防止规则误判拦截合法 SQL

子系统 — CacheCloud(Redis 缓存管理)

定位

Redis 实例生命周期管理平台,覆盖创建、监控、运维全流程。

核心能力

  • 实例管理 — Redis 实例的创建、扩缩容、下线
  • Agent 模式 — 通过 Agent 远程管理各机房 Redis 实例
  • 诊断工具 — 大 Key / 热 Key 检测,慢查询分析
  • 监控集成 — 实例指标上报至 VictoriaMetrics

关键对接

graph LR
    User["运维人员"] --> CacheCloud["CacheCloud"]
    CacheCloud -->|Agent| Redis[("Redis")]
    Deploy["服务部署完成"] -.->|自动注册| CacheCloud
    Main["XINFRA 主系统"] -.->|SSO| CacheCloud

说明

  • 基础服务交付流程中,Redis 部署完成后自动注册至 CacheCloud
  • 配合应用侧治理解决大 Key / 热 Key 性能问题

子系统 — Apollo(配置中心)

定位

携程开源的分布式配置中心,统一管理各业务线应用配置。

核心能力

  • 多机房部署 — 支持 Cluster 模式,7 机房独立部署
  • 配置灰度 — 配置变更可灰度发布,降低变更风险
  • 版本回滚 — 配置历史版本管理,异常时一键回滚
  • 操作审计 — 配置变更全程记录,可追溯

关键对接

graph LR
    App["业务应用"] -->|ConfigService| Apollo["Apollo"]
    Apollo -->|配置下发| RKE2["RKE2 集群"]
    Main["XINFRA 主系统"] -.->|SSO| Apollo

说明

  • 本地缓存降级保障多机房配置一致性
  • 灰度发布验证避免配置下发错误

子系统 — Grafana(监控可视化)

定位

统一监控可视化平台,对接 VictoriaMetrics 等数据源。

核心能力

  • 仪表盘 — 集群、节点、应用多维度监控面板
  • PromQL 查询 — 直接查询 VictoriaMetrics 中的指标数据
  • 告警可视化 — 告警规则与历史趋势展示
  • 多数据源 — 支持 VictoriaMetrics、Zabbix 等多种数据源

关键对接

graph LR
    VM["VictoriaMetrics"] -->|PromQL| Grafana["Grafana"]
    Zabbix["Zabbix"] -->|数据源| Grafana
    Main["XINFRA 主系统"] -.->|SSO| Grafana

说明

  • 直接复用现有 Grafana 仪表盘,无需主系统重建监控视图
  • 主系统资源状态看板侧重告警聚合,Grafana 侧重指标可视化

子系统 — qpass(密码管理平台)

定位

企业级密码管理平台,统一管理各业务线和基础设施的账号密码。

核心能力

  • 密码托管 — 集中存储和管理各类账号密码、密钥、证书
  • 权限控制 — 基于 RBAC 的密码访问权限,按业务线隔离
  • 审计追溯 — 密码访问、修改、共享全程记录
  • 自动轮换 — 支持定期密码轮换策略,降低泄露风险

关键对接

graph LR
    QPass["qpass"] -->|密码分发| RKE2["RKE2 集群"]
    QPass -->|密码注入| DB["MySQL / Redis"]
    Main["XINFRA 主系统"] -.->|SSO| QPass

说明

  • 基础设施部署完成后,密码由 qpass 统一管理并注入
  • 配合 Ansible 实现自动化密码分发与轮换

section: 架构描述 layout: center

四、架构描述

技术选型 · 安全机制 · 运维模型

layout: default

技术选型

层级 选型
前端框架 Vue 3 + Element Plus
后端框架 Go + Gin
前后端通信 REST/JSON,URL 路径版本
主系统数据库 MySQL 8.0
缓存 Redis
前端部署 Nginx
主系统部署 K8s Deployment
层级 选型
SSO 协议 OAuth 2.0 + SAML
告警数据源 Nightingale + Zabbix API
Ansible 调度 SSH 直接执行
实时推送 原生 WebSocket
接口文档 Swagger/OpenAPI
界面语言 纯中文
测试策略 后端单元 + 集成测试

选型依据

选型 理由 备选淘汰原因
Vue 3 + Element Plus 七牛内部技术栈统一,团队有 Vue 2 迁移经验 React + Ant Design — 学习成本更高
Go + Gin Wayne/CloudDM 同生态,可复用 Client-Go、GORM Java Spring Boot — 部署资源占用更大
MySQL 8.0 运维团队已有经验和工具链,CloudDM 原生支持 PostgreSQL — 团队运维经验不足

安全机制

认证与授权

层面 机制
身份认证 SAML + OAuth 2.0
访问控制 RBAC + 业务线维度
传输安全 HTTPS + TLS 1.2+
数据加密 AES-256,敏感字段加密存储
APIKey 管理 SHA-256 哈希存储,scope 粒度授权

审计与隔离

层面 机制
审计留痕 登录/运维/API 全程记录,不可篡改
网络隔离 BGP + 防火墙,管理面与数据面分离
凭证管理 禁止默认凭证,Vault / K8s Secret
Ansible/SSH 仅管理员可见,普通用户菜单不包含

RBAC 二维模型:权限维度(角色能力)× 业务线维度(资源范围),遵循最小权限原则。 所有跨层操作全程审计留痕。


运维分层模型

故障层级 处理方 工具链 权限要求
应用发布异常 子系统自愈 Wayne 一键回滚 项目成员
中间件故障 子系统自恢复 CacheCloud / CloudDM 内置能力 子系统运维角色
配置变更异常 Apollo 回滚 Apollo 版本回滚 + 灰度发布 配置管理员
基础设施故障 主系统管理员 Ansible Playbook / SSH 终端 仅主系统管理员
机房级故障 主系统管理员 Ansible + 大内网链路切换 仅主系统管理员

故障按层级自愈,跨层操作需主系统管理员权限。Ansible / SSH 终端等基础设施级操作仅对管理员角色可见,所有跨层操作全程审计留痕。


风险与约束

风险 缓解措施
RKE2 版本升级不兼容 测试环境验证,灰度发布
Wayne 开源维护不确定 内部 Fork,保持核心可维护
七机房网络链路故障 网络冗余 + BGP 自动切换
SQL 审核规则误判 白名单机制 + 规则持续调优
Redis 大 Key / 热 Key CacheCloud 诊断 + 应用侧治理
风险 缓解措施
Apollo 多机房配置一致性 本地缓存降级 + 灰度发布
Consul 跨机房同步延迟 30 秒轮询 + 健康状态标注
云平台 API 限流 增量同步 + 重试 + 状态告警
AWX 未引入,Ansible 直调 自建任务队列 + WebSocket 日志
Go/Gin 开发人力 复用 Wayne/CloudDM 生态降低学习成本

layout: center

总结

🏗 四层架构

用户层 → 主系统层
→ 子系统层 → 基础设施层

🔐 统一安全

LDAP SAML 认证
RBAC + 业务线隔离
全程审计留痕

🚀 自动化运维

Ansible IaC 交付
WebSocket 实时日志
故障分层自愈

XINFRA — 统一基础设施管理平台