跳到主要内容

自动扩缩容虚拟机上的 Python / Pip

open-webui serve 以 systemd 管理的进程形式,部署在云自动扩缩容虚拟机组(AWS ASG、Azure VMSS、GCP MIG)中。

前置条件

继续之前,请先确认你已经配置好了共享基础设施要求——包括 PostgreSQL、Redis、向量数据库、共享存储和内容提取服务。

何时选择这种模式

  • 你的组织已经具备成熟的 VM 基础设施和运维实践
  • 监管或合规要求你必须进行操作系统层直接控制
  • 团队容器经验有限,但 Linux 运维能力较强
  • 你希望采用更直接的部署方式,而不引入容器编排开销

架构

安装

在每台 VM 上通过带 [all] 扩展的 pip 安装(包含 PostgreSQL 驱动):

pip install open-webui[all]

创建一个 systemd unit 来管理该进程:

[Unit]
Description=Open WebUI
After=network.target

[Service]
Type=simple
User=openwebui
EnvironmentFile=/etc/open-webui/env
ExecStart=/usr/local/bin/open-webui serve
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

将环境变量放在 /etc/open-webui/env 中(参见 关键配置)。

扩展策略

  • 横向扩展:让自动扩缩容组根据 CPU 利用率或请求数增减 VM。
  • 健康检查:将负载均衡器健康检查指向 /health 端点(健康时返回 HTTP 200)。
  • 每台 VM 一个进程:保持 UVICORN_WORKERS=1,把容量管理交给自动扩缩容系统。这样可以简化内存核算,并避免默认向量数据库的 fork 安全问题。
  • 会话亲和性(粘性会话):在负载均衡器上配置基于 Cookie 的会话亲和性,确保 WebSocket 连接持续路由到同一实例。

关键注意事项

注意事项说明
OS 补丁你需要自行负责操作系统更新、安全补丁和 Python 运行环境管理。
Python 环境固定 Python 版本(推荐 3.11),并使用虚拟环境或系统级安装。
存储由于自动扩缩容组中的 VM 不共享本地文件系统,因此应使用对象存储(如 S3)或共享文件系统(如 NFS)。
Tika Sidecar可以在每台 VM 上运行 Tika 服务,也可以作为共享服务单独运行。共享实例更便于管理。
更新先把实例组缩容到 1 台,执行包更新(pip install --upgrade open-webui),等待数据库迁移完成,再扩容回来。

pip 基础安装方式可参考 快速入门指南


需要帮助规划企业部署? 我们的团队正与全球组织合作,共同设计和落地生产级 Open WebUI 环境。

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

本内容仅供参考,不构成任何保证、担保或合同承诺。Open WebUI 按“现状”提供。请参阅您的许可协议 以了解适用条款。