3.0 KiB
3.0 KiB
ADR-110: GCP Ollama 三層容災拓撲
狀態: 已採用 日期: 2026-05-03 (台北時區) 決策者: 統帥 關聯: 取代 ADR-105(Revert A2 Ollama Primary)
2026-05-05 修正:本 ADR 的「GCP-A → GCP-B → 111 → paid provider」邏輯仍有效, 但公網 GCP IP / 110 nginx proxy 僅為過渡傳輸。正式傳輸與 runtime 管理由 ADR-125(GCP Ollama Private Mesh and AwoooP Inference Gateway)取代。
背景
2026-04-27 訂立「192.168.0.111 唯一 Ollama」鐵律(ADR-105),當時 GCP 主機尚未就緒。 2026-05-03 兩台 GCP SSD 主機(34.143.170.20 / 34.21.145.224)正式上線,具備:
- 9x 模型載速(SSD vs HDD)
- 2x 推理效能
- 免費方案(成本零增加)
決策
採用三層 Ollama 容災架構,GCP 主機優先:
路由優先序
| 層級 | URL | 說明 |
|---|---|---|
| Primary (GCP-A) | http://34.143.170.20:11434 | SSD 高效能主機 |
| Secondary (GCP-B) | http://34.21.145.224:11434 | SSD 高效能備援 |
| Fallback (Local) | http://192.168.0.111:11434 | M1 Pro Local HDD 最後防線 |
| 緊急 | Gemini → Nemotron → Claude | 全部 Ollama 掛掉時 |
決策矩陣
GCP-A HEALTHY → primary=GCP-A, fallback=[GCP-B, Local]
GCP-A not HEALTHY + GCP-B HEALTHY → primary=GCP-B, fallback=[Local]
GCP-A + GCP-B 不健康 + Local OK → primary=Local, fallback=[Gemini]
所有 Ollama 不健康 → primary=Gemini, fallback=[Nemotron, Claude]
Config 欄位映射
| 欄位 | 值 | 說明 |
|---|---|---|
| OLLAMA_URL | http://34.143.170.20:11434 | GCP-A Primary |
| OLLAMA_SECONDARY_URL | http://34.21.145.224:11434 | GCP-B Secondary(新增欄位) |
| OLLAMA_FALLBACK_URL | http://192.168.0.111:11434 | Local HDD Fallback |
安全考量
GCP IP(34.143.170.20, 34.21.145.224)屬公網 IP,已加入 config.py 的 _ALLOWED_PUBLIC_IPS
白名單,繞過 RFC1918 私網限制。任何不在白名單的公網 IP 仍會被拒絕(端點中毒防護不變)。
K8s NetworkPolicy egress 已新增 GCP-A/GCP-B 的 /32 出口規則(port 11434)。
取代的決策
- ADR-105: Revert A2 Ollama Primary(已廢止,被本 ADR 取代)
feedback_ollama_111_only.md:更新為新三層容災鐵律
結果
- Ollama 主要流量走 GCP SSD,效能提升
- Local 111 保留為最後防線,不棄用
- Gemini/Nemotron/Claude fallback 鏈不變
2026-05-05 現場校正
冷啟動救援期間的實測顯示:
- GCP-A / GCP-B 透過 110 nginx proxy 可連線,但長 prompt 曾出現 504。
/api/ps顯示 GCP-A / GCP-Bsize_vram: 0,因此不可假設它們等同 111 GPU/VRAM 推理能力。- 告警同步路徑必須使用
gemma3:4b這類 fast lane 模型;14B/32B 模型需移到 async 或 111/GPU 節點。 - 公網
34.143.170.20:11434/34.21.145.224:11434不再視為最終安全架構。
後續以 ADR-125 為準:WireGuard private mesh 是正式網路層,AwoooP Inference Gateway 是正式 runtime 層。