跳到主要内容

可扩展的企业部署选项

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 ServiceKubernetes(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

详细说明见:


下一步


如果你需要帮助规划企业部署,欢迎联系我们。

联系企业销售 → sales@openwebui.com