可扩展的企业部署选项
OPL 数据空间采用 无状态、容器优先 架构,因此无论你把它部署成 VM 上的 Python 进程、托管容器服务里的容器,还是 Kubernetes 集群里的 Pod,应用本身的行为是一致的。差异主要在于你如何 编排、扩展和运维。
模型推理与 OPL 数据空间部署方式解耦
LLM 模型如何提供服务,与 OPL 数据空间本身怎么部署是两回事。你可以在任意部署模式下结合 托管 API 或 自托管推理服务 一起使用。
共享基础设施要求
无论使用哪种部署方式,只要要扩展到多实例,就需要同一套后端基础服务:
| 组件 | 为什么需要 | 选项 |
|---|---|---|
| PostgreSQL | 多实例部署必须使用真正 的数据库,SQLite 不支持多进程并发写入 | 自建、RDS、Azure Database、Cloud SQL |
| Redis | 会话管理、WebSocket 协调、实例间配置同步 | 自建、ElastiCache、Azure Cache、Memorystore |
| Vector DB | 默认 ChromaDB 使用本地 SQLite,不适合多进程 | PGVector、Milvus、Qdrant、HTTP 模式 ChromaDB |
| 共享存储 | 上传文件必须能被所有实例访问 | NFS、EFS、CephFS 或对象存储 |
| 内容提取服务 | 默认 pypdf 在高负载下有内存问题 | Apache Tika、Docling |
| Embedding 引擎 | 默认 SentenceTransformers 每个 worker 会额外占用大量内存 | OpenAI Embeddings、Ollama embedding |
关键配置
这些环境变量必须在所有实例上保持一致:
WEBUI_SECRET_KEY=your-secret-key-here
DATABASE_URL=postgresql://user:password@db-host:5432/openwebui
VECTOR_DB=pgvector
PGVECTOR_DB_URL=postgresql://user:password@db-host:5432/openwebui
REDIS_URL=redis://redis-host:6379/0
WEBSOCKET_MANAGER=redis
ENABLE_WEBSOCKET_SUPPORT=true
CONTENT_EXTRACTION_ENGINE=tika
TIKA_SERVER_URL=http://tika:9998
RAG_EMBEDDING_ENGINE=openai
UVICORN_WORKERS=1
ENABLE_DB_MIGRATIONS=false数据库迁移
除一个实例外,其余实例都应设置 ENABLE_DB_MIGRATIONS=false。升级时,先缩到单实例完成迁移,再扩回多实例。
选择部署模式
OPL 数据空间当前支持三种常见生产部署模式:
Python / Pip on Auto-Scaling VMs
把 open-webui serve 作为 systemd 管理的进程,运行在自动伸缩虚拟机组中。适合以 VM 为主、熟悉 Linux 运维,或受监管要求约束必须直接控制 OS 的团队。
Container Service
在 AWS ECS/Fargate、Azure Container Apps、Google Cloud Run 等托管平台上运行官方容器镜像。适合希望获得容器收益,但不想承担 Kubernetes 复杂度的团队。
Kubernetes with Helm
通过官方 Helm Chart 部署到任意 Kubernetes 发行版。适合需要声明式 IaC、高级自动伸缩和 GitOps 工作流的大规模关键业务环境。
部署对比
| Python / Pip(VM) | Container Service | Kubernetes(Helm) | |
|---|---|---|---|
| 运维复杂度 | 中等 | 低 | 更高 |
| 自动扩展 | 借助云平台 VM 自动伸缩 | 平台原生 | HPA,可精细控制 |
| 容器隔离 | 无 | 完整 | 完整 |
| 滚动更新 | 主要靠手工 | 平台托管 | 声明式回滚与滚更 |
| 基础设施即代码 | VM + 配置管理 | 任务/服务定义 | Helm + GitOps |
| 适合场景 | VM 导向运维团队 | 想要容器但不想上 K8s | 大规模关键业务部署 |
| 最小团队能力要求 | Linux、Python | 容器与云平台基础 | Kubernetes、Helm、云原生经验 |
可观测性
无论哪种部署方式,生产环境都应该具备监控与观测能力。
健康检查
/health:基础存活检查/api/models:验证模型后端连接情况
OpenTelemetry
可通过以下方式启用:
ENABLE_OTEL=true
OTEL_EXPORTER_OTLP_ENDPOINT=http://your-collector:4318
OTEL_SERVICE_NAME=open-webui结构化日志
LOG_FORMAT=json
GLOBAL_LOG_LEVEL=INFO详细说明见:
下一步
如果你需要帮助规划企业部署,欢迎联系我们。