feat(ollama): ADR-110 GCP 三層容災架構(GCP-A → GCP-B → Local → Gemini)
## 變更摘要 - Primary: http://34.143.170.20:11434 (GCP-A SSD, 9x 載速 + 2x 推理) - Secondary: http://34.21.145.224:11434 (GCP-B SSD) - Fallback: http://192.168.0.111:11434 (M1 Pro Local HDD,最後防線) - 廢止 ADR-105「111 唯一鐵律」,新建 ADR-110 ## 核心改動 - config.py: 新增 OLLAMA_SECONDARY_URL;validator 加 GCP IP 白名單(34.143.170.20, 34.21.145.224) - ollama_failover_manager.py: 三層 Ollama 決策矩陣;並行健康檢查三台;health_111 → health_gcp_a - ollama_health_monitor.py: host label 萃取改為通用版(支援 GCP 公網 IP) - failover_alerter.py: 故障/恢復主機動態顯示,不再硬編碼「Ollama 111 (GPU)」 - ollama_auto_recovery.py: notify_recovery 改為 ollama_gcp_a;recovered_host 動態 - k8s/awoooi-prod: configmap + deployment + network-policy 同步更新(egress 加 GCP /32) - 服務層: 10 個服務檔案硬編碼 192.168.0.111 改為讀 settings.OLLAMA_URL - 測試: URL 常數更新,新增三層容災場景,GCP IP 白名單驗證測試 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
# ADR-105: 推翻 A2 鐵律 — DIAGNOSE primary 改 Ollama 本地優先
|
||||
|
||||
**狀態**: 已廢止(Superseded by ADR-110, 2026-05-03)
|
||||
**Status**: Accepted (2026-04-29)
|
||||
**Deciders**: ogt(首席架構師)+ Claude Code
|
||||
**Date**: 2026-04-29
|
||||
|
||||
64
docs/adr/ADR-110-gcp-ollama-topology.md
Normal file
64
docs/adr/ADR-110-gcp-ollama-topology.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# ADR-110: GCP Ollama 三層容災拓撲
|
||||
|
||||
**狀態**: 已採用
|
||||
**日期**: 2026-05-03 (台北時區)
|
||||
**決策者**: 統帥
|
||||
**關聯**: 取代 ADR-105(Revert A2 Ollama Primary)
|
||||
|
||||
---
|
||||
|
||||
## 背景
|
||||
|
||||
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 鏈不變
|
||||
Reference in New Issue
Block a user