Featured image of post VPS 多模型 AI 服务集群:Ollama + vLLM + LiteLLM 混合部署实战(2026 年 6 月)

VPS 多模型 AI 服务集群:Ollama + vLLM + LiteLLM 混合部署实战(2026 年 6 月)

一台 4 核 16GB VPS 同时跑 Ollama、vLLM 和 LiteLLM,打造生产级 AI 服务集群——模型热切换、自动故障转移、统一 API 接口,成本不到 $15/月。

本文包含 VPS 服务商 affiliate 链接。你通过链接购买,我们可能获得佣金,但不会影响你的价格。我们只推荐适合实际部署场景的海外服务。


为什么你需要一个多模型 AI 集群?

如果你已经在 VPS 上跑过 Ollama 或 LiteLLM,你可能遇到过这些问题:

  • 单一模型不够用:Ollama 的 Llama 3.1 8B 对话不错,但处理复杂推理时不如 Mistral 72B;
  • 模型切换成本高:今天用 Llama,明天想试 Qwen,每次都要停服务、拉模型、改配置;
  • 没有故障转移:某个模型推理超时或 OOM 崩溃了,整个 API 直接 500;
  • 无法统一接口:前端应用要同时对接 Ollama 和 vLLM,得写两套适配代码。

多模型 AI 集群就是为了解决这些问题而生的:用 Docker Compose 在一台 VPS 上同时部署 Ollama(轻量模型)、vLLM(高性能推理)和 LiteLLM(统一网关),对外暴露一个 OpenAI-compatible 的 API 端点,内部自动路由到最合适的模型。

本文手把手教你在 $10-$15/月的 VPS 上搭建这套集群,包括:

  • 服务器选型与规格建议
  • Docker Compose 一键部署
  • 模型热加载与切换
  • LiteLLM 自动故障转移
  • 反向代理 + HTTPS 安全加固

服务器选型:跑多模型集群需要什么配置?

多模型集群的资源需求远高于单模型部署。以下是我们的实测建议:

配置档位CPURAM磁盘月付参考价适合场景
入门2 核4GB50GB SSD$3-5仅 Ollama 单模型
推荐4 核16GB100GB NVMe$10-15Ollama + 1 个小模型 + LiteLLM
高性能8 核32GB200GB NVMe$25-40Ollama + vLLM + 多模型并发
旗舰16 核64GB500GB NVMe$60-100多 vLLM 实例 + 生产级负载

核心建议:内存是关键瓶颈。一个 7B 参数的 FP16 模型大约需要 14GB 显存/内存,加上 Ollama + LiteLLM + 系统开销,16GB 内存是最低可行配置

推荐 VPS 服务商

服务商推荐套餐月付数据中心选购链接
RackNerd4 核 / 16GB / 100GB NVMe~$12.99/年DC02/DC03/DC09查看详情
HostingerBusiness VPS$9.99/月洛杉矶、阿姆斯特丹、新加坡领取优惠
VultrHigh Frequency 4C/16G$16.00/月全球 32 个地点免费试用 $100

为什么选 RackNerd? 年付 $12.99 的价格在 4C16G 档位极具竞争力,DC03(纽约)延迟低、线路稳,适合跑 AI 服务。


架构总览

用户请求
    │
    ▼
┌─────────────────────┐
│   Nginx Reverse     │  ← HTTPS / TLS / 速率限制
│   Proxy (443)       │
└─────────┬───────────┘
          │
    ┌─────▼─────┐
    │  LiteLLM   │  ← 统一 API 网关 / 故障转移 / 负载均衡
    │  :4000     │     (OpenAI-compatible 接口)
    └─────┬─────┘
          │
    ┌─────┴──────┬──────────┐
    ▼            ▼          ▼
┌────────┐  ┌────────┐  ┌────────┐
│ Ollama │  │ vLLM   │  │ OpenAI │
│ :11434 │  │ :8000  │  │ Proxy  │
│ (小模型)│  │ (大模型)│  │ (云端) │
└────────┘  └────────┘  └────────┘

关键设计决策

  • Ollama 负责轻量对话模型(Llama 3.1 8B、Mistral 7B),GPU 加速可选
  • vLLM 负责高性能推理(Qwen 2.5 72B、Llama 3.1 70B),需要 GPU 或大内存 CPU 推理
  • LiteLLM 作为统一入口,自动路由请求到最合适的后端,支持 fallback

第一步:准备 VPS 环境

以 Debian 12 为例(所有推荐 VPS 服务商均支持):

# SSH 登录
ssh root@your-vps-ip

# 更新系统
apt update && apt upgrade -y

# 安装 Docker
curl -fsSL https://get.docker.com | sh

# 安装 Docker Compose Plugin
apt install -y docker-compose-plugin

# 验证
docker version && docker compose version

内存不足警告:如果你的 VPS 只有 4GB 内存,请先创建 swap:

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

第二步:部署 Ollama(轻量模型服务)

# docker-compose.yml 片段
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    restart: unless-stopped
    # 如果有 GPU(如 NVIDIA T4),取消注释:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: 1
    #           capabilities: [gpu]

拉取常用模型:

# 进入容器并拉取模型
docker exec -it ollama ollama pull llama3.1:8b
docker exec -it ollama ollama pull mistral:7b
docker exec -it ollama ollama pull qwen2.5:7b

# 验证
curl http://localhost:11434/api/tags | python3 -m json.tool

第三步:部署 vLLM(高性能推理后端)

vLLM 支持 PagedAttention 技术,吞吐量比 Ollama 高 2-4 倍,适合大模型:

vllm:
  image: vllm/vllm-openai:latest
  container_name: vllm
  ports:
    - "8000:8000"
  volumes:
    - vllm_data:/root/.cache/huggingface
  restart: unless-stopped
  command: >
    --model Qwen/Qwen2.5-7B-Instruct
    --tensor-parallel-size 1
    --max-model-len 8192
  # GPU 环境取消注释:
  # deploy:
  #   resources:
  #     reservations:
  #       devices:
  #         - driver: nvidia
  #           count: 1
  #           capabilities: [gpu]

CPU-only 注意:70B 级别模型在纯 CPU 上推理速度很慢(每秒 ~0.5 token)。建议先用 7B-14B 模型测试,确认性能达标后再上大模型。

验证 vLLM:

curl http://localhost:8000/v1/models | python3 -m json.tool

第四步:部署 LiteLLM 统一网关

这是整个集群的"大脑"——它把所有后端统一成一个 OpenAI-compatible API:

litellm:
  image: ghcr.io/berriai/litellm:main-latest
  container_name: litellm
  ports:
    - "4000:4000"
  volumes:
    - ./litellm-config.yaml:/app/config.yaml
  restart: unless-stopped
  command: --config /app/config.yaml --port 4000

LiteLLM 配置文件 (litellm-config.yaml):

model_list:
  # Ollama 后端 - 轻量对话
  - model_name: llama3.1-8b
    litellm_params:
      model: openai/ollama/llama3.1:8b
      api_base: http://ollama:11434
      api_key: not-needed

  - model_name: mistral-7b
    litellm_params:
      model: openai/ollama/mistral:7b
      api_base: http://ollama:11434
      api_key: not-needed

  # vLLM 后端 - 高性能推理
  - model_name: qwen2.5-7b
    litellm_params:
      model: openai/vllm/Qwen/Qwen2.5-7B-Instruct
      api_base: http://vllm:8000/v1
      api_key: not-needed
      max_tokens: 4096

  # 故障转移组 - 当 Ollama 不可用时自动切换到 vLLM
  - model_name: fallback-chat
    litellm_params:
      model: openai/ollama/llama3.1:8b
      api_base: http://ollama:11434
      api_key: not-needed
      fallbacks:
        - openai/vllm/Qwen/Qwen2.5-7B-Instruct
      num_retries: 3

# 全局设置
general_settings:
  master_key: sk-your-master-key-here
  store_api_keys: true

启动集群:

docker compose up -d

第五步:统一入口 — Nginx 反向代理 + HTTPS

# /etc/nginx/sites-available/ai-cluster
server {
    listen 443 ssl http2;
    server_name ai.yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/ai.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ai.yourdomain.com/privkey.pem;

    # 速率限制
    limit_req_zone $binary_remote_addr zone=ai_limit:10m rate=30r/s;

    # LiteLLM 网关(主入口)
    location / {
        limit_req zone=ai_limit burst=50 nodelay;
        proxy_pass http://litellm:4000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 支持(用于流式输出)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 超时设置
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }

    # 直接访问 Ollama(可选,建议禁用)
    # location /api/ {
    #     proxy_pass http://ollama:11434;
    # }
}

server {
    listen 80;
    server_name ai.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

获取 SSL 证书(Let’s Encrypt):

apt install -y certbot python3-certbot-nginx
certbot --nginx -d ai.yourdomain.com

第六步:测试你的 AI 集群

一切就绪后,用统一的 OpenAI-compatible 接口测试:

# 测试 LiteLLM 统一接口
curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.1-8b",
    "messages": [{"role": "user", "content": "你好,介绍一下你自己"}],
    "stream": true
  }'

# 测试故障转移 — 故意停止 Ollama,看是否自动切换到 vLLM
docker stop ollama
# 请求应自动 fallback 到 qwen2.5-7b

# 测试直接调用 vLLM
curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-7b",
    "messages": [{"role": "user", "content": "用 Python 写一个快速排序"}]
  }'

进阶:监控与告警

使用 LiteLLM 内置日志

LiteLLM 支持将 API 调用日志写入 PostgreSQL、Elasticsearch 或本地文件:

general_settings:
  litellm_settings:
    successful_response_logger: true
    drop_params: true
  database_url: "postgresql://user:pass@postgres:5432/litellm"

添加 Prometheus + Grafana 监控

prometheus:
  image: prom/prometheus:latest
  container_name: prometheus
  ports:
    - "9090:9090"
  volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml
    - prometheus_data:/prometheus

grafana:
  image: grafana/grafana:latest
  container_name: grafana
  ports:
    - "3000:3000"
  volumes:
    - grafana_data:/var/lib/grafana
  depends_on:
    - prometheus

关键监控指标:

指标说明告警阈值
litellm_proxy_request_success_total成功请求数持续下降 → 后端故障
litellm_proxy_request_latency_seconds请求延迟P99 > 30s → 模型过载
container_memory_usage_bytes容器内存> 90% → OOM 风险
ollama_model_load_duration_seconds模型加载时间> 60s → 磁盘 I/O 瓶颈

成本分析

组件资源占用月成本
Ollama (llama3.1:8b)8GB RAM, ~20% CPU$0 (开源)
vLLM (qwen2.5:7b)14GB RAM, ~30% CPU$0 (开源)
LiteLLM 网关512MB RAM, ~5% CPU$0 (开源)
VPS 服务器4 核 / 16GB / 100GB$10-16
域名 + SSL$0-12/年
总计~$12-18/月

对比云端 API 成本:

场景云端 API 月费自托管月费节省
每日 1000 次对话 (8B 模型)~$50~$1374%
每日 5000 次对话~$250~$1694%
每日 10000 次对话 + 批量推理~$500~$25 (8 核)95%

用量越大,自托管越划算。超过每日 2000 次调用,自托管基本都能回本。


常见问题

Q: 我的 VPS 只有 8GB 内存,能跑吗?

可以,但需要精简。只跑 Ollama + LiteLLM,不跑 vLLM。选 7B 以下的模型(如 llama3.1:8b 的量化版 llama3.1:8b-q4_K_M),内存占用可降到 6GB 以内。

Q: 如何防止别人滥用我的 API?

  1. LiteLLM 的 master_key 做身份验证
  2. Nginx 层 limit_req 做速率限制
  3. LiteLLM 的 budget_limit 设置每个 key 的月度预算
  4. 防火墙只开放 443 端口,屏蔽 11434 和 8000 的公网访问

Q: 可以加更多模型吗?

当然。在 litellm-config.yamlmodel_list 中添加新的 model entry 即可。支持的后端包括:

  • Ollama 系列(Llama、Mistral、Qwen、Phi 等)
  • vLLM 系列(任何 HuggingFace 兼容模型)
  • OpenAI / Claude / Gemini(通过 API Key 代理)
  • 任何 OpenAI-compatible 接口

Q: 模型太大加载慢怎么办?

  • 使用量化模型(GGUF 格式的 q4/q5 量化,精度损失 < 2%)
  • 启用 vLLM 的 enable_chunked_prefill 减少首 token 延迟
  • Ollama 使用 --num-thread 限制线程数避免 CPU 过载
  • 考虑 RackNerd DC09(日本)或 Vultr 东京节点降低亚洲用户延迟

总结

多模型 AI 集群的核心价值在于灵活性和成本控制

  • Ollama 负责日常轻量对话,启动快、资源少
  • vLLM 负责高质量推理,吞吐量大、延迟低
  • LiteLLM 把它们统一成一个接口,前端无需改动
  • 故障转移 确保某个后端挂了,服务不中断

对于月调用量超过 2000 次的 AI 应用,自托管集群的成本通常是云端 API 的 1/5 到 1/10

下一步行动

  1. 选一台 VPS(推荐 RackNerd 4C16G 年付方案,或 Hostinger 按月灵活付费)
  2. 按本文步骤部署 Docker Compose 集群
  3. 接入你的 AI 应用,享受统一 API 和自动故障转移

👉 Check RackNerd 4C16G 年付优惠 👉 Check Hostinger VPS 月度方案 👉 Check Vultr High Frequency 实例