Files
ai-ops/tech/DEPLOYMENT.md
2026-05-12 17:48:22 +08:00

4.2 KiB
Raw Permalink Blame History

AI-Ops 部署设计

版本v1.0 | 状态:初稿


1. 部署架构

1.1 总体架构

├── Load Balancer (Nginx / 云 CLB)
    │
    ├── AI-Ops API Server x 2 (主备)
    │   │
    │   ├── HTTP API (标准库 net/http)
    │   └── WebSocket (告警推送)
    │
    ├── AI-Ops Worker x 2 (后台任务)
    │   │
    │   ├── 指标采集器
    │   ├── 告警评估器
    │   ├── 自愈执行器
    │   └── 审计清理器
    │
    └── 共享层
        │
        ├── PostgreSQL 15+ (主库 + 备库)
        ├── Redis (缓存 + 会话 + 锁)
        ├── Prometheus (时序数据)
        └── Grafana (监控可视化)

1.2 容器化部署

使用 Docker Compose 或 Kubernetes

# docker-compose.yml 抽象
services:
  ai-ops-api:
    image: ai-ops:latest
    command: ["./ai-ops", "api"]
    replicas: 2
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=postgres
      - REDIS_HOST=redis
      - PROMETHEUS_HOST=prometheus

  ai-ops-worker:
    image: ai-ops:latest
    command: ["./ai-ops", "worker"]
    replicas: 2
    environment:
      - DB_HOST=postgres
      - REDIS_HOST=redis
      - PROMETHEUS_HOST=prometheus

  postgres:
    image: postgres:15
    volumes:
      - pg_data:/var/lib/postgresql/data

  redis:
    image: redis:7

  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: grafana/grafana:latest

2. 资源需求

2.1 API Server

资源 需求 说明
CPU 2 核 Go 服务主要为 IO 密集型
内存 1 GB 含连接池缓存
存储 状态外部化
网络 内网 100Mbps 调用内部服务

2.2 Worker

资源 需求 说明
CPU 1 核 定时任务CPU 需求低
内存 512 MB
存储

2.3 数据库

资源 需求 说明
CPU 2 核
内存 4 GB 索引与缓冲
存储 200 GB 90 天审计日志 + 时序数据
网络 内网 1Gbps

2.4 Prometheus

资源 需求 说明
CPU 1 核
内存 2 GB
存储 100 GB 时序数据保留 90 天

3. 监控与运维钩子

3.1 健康检查

端点 路径 预期响应 失败行为
存活检查 /actuator/health/live HTTP 200 容器重启
就绪检查 /actuator/health/ready HTTP 200 从负载均衡移除
综合检查 /actuator/health HTTP 200 + JSON 触发告警

3.2 启动/关闭顺序

启动顺序:

  1. PostgreSQL 启动完成
  2. Redis 启动完成
  3. Prometheus 启动完成
  4. Worker 启动(执行 migration
  5. API Server 启动

关闭顺序:

  1. 停止接收新 HTTP 请求(健康检查返回非 200
  2. 等待现有请求处理完成(超时 30 秒)
  3. 停止 Worker 定时器
  4. 关闭数据库连接池
  5. 退出进程

3.3 配置管理

  • 配置文件 config.yaml + 环境变量覆盖。
  • 敏感字段(密钥、密码)仅通过环境变量传入,不落地配置文件。
  • 支持热更新的配置:告警规则、通知渠道。

4. 灾备设计

4.1 数据库灾备

策略 方案 RTO RPO
主库故障 自动切换至备库 < 5 min < 1 min
逻辑损坏 从备库恢复 + 审计日志回放 < 30 min < 1 min
全库损坏 每日冷备份恢复 < 2 h < 24 h

4.2 应用层灾备

场景 处理
API Server 单机故障 负载均衡自动移除,剩余节点继续服务
Worker 单机故障 剩余 Worker 继续执行定时任务,某些任务可能延迟
Redis 故障 审计日志落地 PostgreSQL告警缓存失效不影响核心功能
Prometheus 故障 实时指标采集中断,告警引擎依赖本地缓存继续运行

4.3 多中心部署

  • 当前阶段为单中心部署。
  • 备份中心仅用于数据库备份恢复,不提供活跃服务。
  • 未来扩展至多中心时,需要解决 PostgreSQL 的分布式写入和 Prometheus 的联邦查询问题。