22 KiB
theme, title, author, infoLine, transition, mdc, drawings
| theme | title | author | infoLine | transition | mdc | drawings | ||
|---|---|---|---|---|---|---|---|---|
| frankfurt | XINFRA 平台架构 | 实训小组 | true | slide-left | true |
|
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 LR
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(多集群容器管理)
定位
多集群 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 实时日志
故障分层自愈