--- theme: frankfurt title: XINFRA 平台架构 author: 实训小组 infoLine: true transition: slide-left mdc: true drawings: 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 --- # 二、架构图
平台分层 · 部署 · 监控 · 安全
--- # 平台分层架构 — 总体分层
```mermaid graph LR User["用户层
LDAP SSO 统一认证"] --> Main["主系统层
统一门户 + 功能模块"] Main --> Sub["子系统层
独立部署,各自授权"] Main --> Infra["基础设施层
计算 · 网络 · 存储 · 自动化"] 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 ```
> 四层模型:用户层 → 主系统层 → 子系统层 → 基础设施层,主系统是统一入口,子系统各司其职。
--- # 平台分层架构 — 主系统功能
```mermaid graph TB Portal["统一门户
LDAP SSO 跳转入口"] subgraph 全局视图 DashBoard["资源大盘
集群拓扑 · 节点方格图"] MonitorView["资源状态看板
物理机/虚机/服务三层告警"] end subgraph 运维能力 TaskCenter["任务中心
Ansible/Wayne 实时日志"] OpsTerminal["运维终端
Ansible / SSH
仅管理员"] end subgraph 治理能力 AuditDash["审计面板
登录记录 · 运维操作日志"] CMDB["资源台账
CMDB 多云同步"] SvcDir["服务目录
Consul 只读聚合"] end Portal --> DashBoard & MonitorView & TaskCenter & AuditDash & CMDB & SvcDir ```
> 主系统不替代子系统,只自建子系统无法覆盖的能力:全局视图、运维兜底、审计、资源台账。
--- # 平台分层架构 — 子系统集成
```mermaid graph LR Portal["XINFRA 主系统"] subgraph 子系统 Wayne["Wayne
多集群容器管理"] CloudDM["CloudDM
SQL 审核"] CacheCloud["CacheCloud
Redis 管理"] Apollo["Apollo
配置中心"] Grafana["Grafana
监控可视化"] QPass["qpass
密码管理"] 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 ```
--- # 平台分层架构 — 基础设施层
```mermaid graph TB subgraph 计算 RKE2["RKE2 集群 × 7 机房
CIS 安全加固"] end subgraph 网络 Calico["Calico BGP
每集群独立 AS 号
跨机房扁平互通"] end subgraph 存储 Ceph["Ceph RBD
MySQL/Redis 有状态服务 PV"] end subgraph 自动化 Ansible["Ansible Playbook
节点初始化 · 服务部署
WebSocket 实时日志"] end RKE2 --> Calico RKE2 --> Ceph Ansible -->|SSH| RKE2 ```
--- # 部署架构
```mermaid graph TB subgraph "RKE2 集群(任一机房)" subgraph "xinfra 命名空间" FE["Nginx
前端静态文件 + 反向代理"] BE["Go API Server
Deployment × 2"] WS["WebSocket Gateway
任务日志实时推送"] 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 ```
--- # 监控告警数据流
```mermaid graph LR subgraph 采集源 RKE2["RKE2 集群"] Zabbix["Zabbix
硬件监控"] end subgraph 指标存储 VM[("VictoriaMetrics
容器/业务指标")] end subgraph 可视化 Grafana["Grafana 仪表盘"] end subgraph 告警链路 Nightingale["夜莺
去重 · 收敛 · 分级"] IM["企业 IM 推送"] end RKE2 -.->|Metrics| VM VM --> Grafana VM --> Nightingale Zabbix -.->|Webhook| Nightingale Nightingale --> IM Zabbix -->|Zabbix API| Main["XINFRA 主系统
资源状态看板"] ```
> Zabbix 硬件监控分两条链路:告警事件通过 Webhook 推送至夜莺统一聚合;可观测数据(IPMI/温度/电源/风扇等)由主系统直接调用 Zabbix API 采集展示。
--- # 基础服务交付流程
```mermaid 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: 部署完成,跳转任务中心 ```
--- # 多租户隔离模型
```mermaid graph LR LDAP["企业 LDAP"] -->|部门 DN| BL["业务线租户
Kodo / LAS / 灵矽 / ..."] BL --> NS["Kubernetes Namespace
+ ResourceQuota + LimitRange"] BL --> NP["物理节点池
node-label + taint"] NS -.->|Pod 只能调度到
本业务线节点| 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 限制资源用量上限。
--- # 安全认证流程
```mermaid 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 自动触发部署 - **一键回滚** — 应用发布异常时快速回滚至历史版本
### 关键对接 ```mermaid 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 操作全程记录,可追溯
### 关键对接 ```mermaid 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
### 关键对接 ```mermaid graph LR User["运维人员"] --> CacheCloud["CacheCloud"] CacheCloud -->|Agent| Redis[("Redis")] Deploy["服务部署完成"] -.->|自动注册| CacheCloud Main["XINFRA 主系统"] -.->|SSO| CacheCloud ``` ### 说明 - 基础服务交付流程中,Redis 部署完成后自动注册至 CacheCloud - 配合应用侧治理解决大 Key / 热 Key 性能问题
--- # 子系统 — Apollo(配置中心)
### 定位 携程开源的分布式配置中心,统一管理各业务线应用配置。 ### 核心能力 - **多机房部署** — 支持 Cluster 模式,7 机房独立部署 - **配置灰度** — 配置变更可灰度发布,降低变更风险 - **版本回滚** — 配置历史版本管理,异常时一键回滚 - **操作审计** — 配置变更全程记录,可追溯
### 关键对接 ```mermaid graph LR App["业务应用"] -->|ConfigService| Apollo["Apollo"] Apollo -->|配置下发| RKE2["RKE2 集群"] Main["XINFRA 主系统"] -.->|SSO| Apollo ``` ### 说明 - 本地缓存降级保障多机房配置一致性 - 灰度发布验证避免配置下发错误
--- # 子系统 — Grafana(监控可视化)
### 定位 统一监控可视化平台,对接 VictoriaMetrics 等数据源。 ### 核心能力 - **仪表盘** — 集群、节点、应用多维度监控面板 - **PromQL 查询** — 直接查询 VictoriaMetrics 中的指标数据 - **告警可视化** — 告警规则与历史趋势展示 - **多数据源** — 支持 VictoriaMetrics、Zabbix 等多种数据源
### 关键对接 ```mermaid graph LR VM["VictoriaMetrics"] -->|PromQL| Grafana["Grafana"] Zabbix["Zabbix"] -->|数据源| Grafana Main["XINFRA 主系统"] -.->|SSO| Grafana ``` ### 说明 - 直接复用现有 Grafana 仪表盘,无需主系统重建监控视图 - 主系统资源状态看板侧重告警聚合,Grafana 侧重指标可视化
--- # 子系统 — qpass(密码管理平台)
### 定位 企业级密码管理平台,统一管理各业务线和基础设施的账号密码。 ### 核心能力 - **密码托管** — 集中存储和管理各类账号密码、密钥、证书 - **权限控制** — 基于 RBAC 的密码访问权限,按业务线隔离 - **审计追溯** — 密码访问、修改、共享全程记录 - **自动轮换** — 支持定期密码轮换策略,降低泄露风险
### 关键对接 ```mermaid 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 — 统一基础设施管理平台