本文包含 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 安全加固
服务器选型:跑多模型集群需要什么配置?
多模型集群的资源需求远高于单模型部署。以下是我们的实测建议:
| 配置档位 | CPU | RAM | 磁盘 | 月付参考价 | 适合场景 |
|---|---|---|---|---|---|
| 入门 | 2 核 | 4GB | 50GB SSD | $3-5 | 仅 Ollama 单模型 |
| 推荐 | 4 核 | 16GB | 100GB NVMe | $10-15 | Ollama + 1 个小模型 + LiteLLM |
| 高性能 | 8 核 | 32GB | 200GB NVMe | $25-40 | Ollama + vLLM + 多模型并发 |
| 旗舰 | 16 核 | 64GB | 500GB NVMe | $60-100 | 多 vLLM 实例 + 生产级负载 |
核心建议:内存是关键瓶颈。一个 7B 参数的 FP16 模型大约需要 14GB 显存/内存,加上 Ollama + LiteLLM + 系统开销,16GB 内存是最低可行配置。
推荐 VPS 服务商
| 服务商 | 推荐套餐 | 月付 | 数据中心 | 选购链接 |
|---|---|---|---|---|
| RackNerd | 4 核 / 16GB / 100GB NVMe | ~$12.99/年 | DC02/DC03/DC09 | 查看详情 |
| Hostinger | Business VPS | $9.99/月 | 洛杉矶、阿姆斯特丹、新加坡 | 领取优惠 |
| Vultr | High 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 | ~$13 | 74% |
| 每日 5000 次对话 | ~$250 | ~$16 | 94% |
| 每日 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?
- LiteLLM 的
master_key做身份验证 - Nginx 层
limit_req做速率限制 - LiteLLM 的
budget_limit设置每个 key 的月度预算 - 防火墙只开放 443 端口,屏蔽 11434 和 8000 的公网访问
Q: 可以加更多模型吗?
当然。在 litellm-config.yaml 的 model_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。
下一步行动:
- 选一台 VPS(推荐 RackNerd 4C16G 年付方案,或 Hostinger 按月灵活付费)
- 按本文步骤部署 Docker Compose 集群
- 接入你的 AI 应用,享受统一 API 和自动故障转移
👉 Check RackNerd 4C16G 年付优惠 👉 Check Hostinger VPS 月度方案 👉 Check Vultr High Frequency 实例
