Files
awoooi/docs/runbooks/OLLAMA-188-RETIREMENT-GATE.md
Your Name f0255e0300
All checks were successful
Code Review / ai-code-review (push) Successful in 10s
chore(ops): 補強 RLS role bootstrap gate
2026-05-12 18:36:35 +08:00

116 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 188 Legacy Ollama 退場 Gate
## 目的
`192.168.0.188:11434` 已不再是 AWOOOI / AwoooP 的 Ollama provider。正式順序是
1. GCP-A`192.168.0.110:11435`
2. GCP-B`192.168.0.110:11436`
3. Local 111`192.168.0.110:11437`
4. Gemini / Claude雲端備援不是主路徑
188 主機仍承載 PostgreSQL、Redis、SigNoz、OpenClaw 等服務,所以不能把「解除 188 Ollama」誤解成「動 188 主機」。退場只針對 `ollama.service``:11434`
## 退場前不變式
- repo runtime 不得再出現 `ollama_188``OLLAMA_188``Ollama188Provider``192.168.0.188:11434`
- `awoooi-prod``awoooi-dev` live env 不得指向 `192.168.0.188:11434`
- Prometheus live config 不得再探測 `192.168.0.188:11434`
- 188 的 Ollama journal 在觀察窗口內不得有 `/api/generate``/api/chat``/v1/chat/completions` 推理 POST。
- `192.168.0.121` 不得再固定對 188 `/api/tags` 做 dev health check。
- 188 不得以 `0.0.0.0:11434` / `*:11434` 監聽;允許狀態只有 `ollama.service` active 且綁定 `127.0.0.1:11434`
## 檢查方式
```bash
scripts/ops/ollama188-retirement-gate.sh
```
可調整觀察窗口:
```bash
POST_SINCE="24 hours ago" HEALTH_SINCE="10 minutes ago" scripts/ops/ollama188-retirement-gate.sh
```
## 階段決策
| 階段 | 條件 | 動作 |
| --- | --- | --- |
| Observe | Gate 仍有 failures | 不停止服務,只繼續追來源 |
| Stop | Gate 連續 24 小時綠燈 | 可執行 `systemctl stop ollama`,保留 binary 與模型 |
| Disable | Stop 後 48 小時無回歸 | 可 `systemctl disable ollama` |
| Uninstall | Disable 後 7 天無回歸,且確認無其他專案依賴 | 才評估移除套件與模型資料 |
## 192.168.0.88 的正確判讀
`192.168.0.88` 不是 AWOOOI 的下游專案主機。188 上的路由顯示:
```text
default via 192.168.0.88 dev ens160
```
因此 Ollama journal 中的 `192.168.0.88` 應視為 gateway / NAT / port-forward / hairpin 來源。若看到它打 `/api/generate``/api/chat``/v1/chat/completions`,代表 188 的 `:11434` 曾經暴露給 gateway 入口,不是正常 tenant 依賴。
## 緊急封口
若發現 188 Ollama 又變成 `*:11434`,可先執行臨時封口:
```bash
scripts/ops/ollama188-localhost-containment.sh
```
臨時封口會:
- kill 目前 `ollama` 使用者的 `/usr/local/bin/ollama serve`
- 以同一個 `ollama` 使用者重啟一個只綁 `127.0.0.1:11434` 的進程。
-`192.168.0.188:11434` 從 LAN / gateway 視角拒絕連線。
限制:
- 若 systemd override 尚未完成永久修復,原服務仍可能因 root-owned override 裡的 `OLLAMA_HOST=0.0.0.0` 而反覆 restart 失敗。
- 這是安全封口,不是乾淨的永久狀態。
## 永久修法(已封裝為腳本)
目前採用受控 host 修復腳本,透過 188 上 `ollama` 使用者的 Docker root-equivalent 能力修改 host systemd override`OLLAMA_HOST` 固定為 `127.0.0.1:11434`,再 `daemon-reload` 與重啟 `ollama.service`
```bash
scripts/ops/ollama188-systemd-localhost-fix.sh
```
腳本會做三件事:
- 備份 `/etc/systemd/system/ollama.service.d/override.conf`
-`Environment="OLLAMA_HOST=0.0.0.0"` 改為 `Environment="OLLAMA_HOST=127.0.0.1:11434"`
- 驗證 188 本機 `127.0.0.1:11434` 可用、LAN 入口 `192.168.0.188:11434` 拒絕連線。
若需要人工在 188 上重新操作,等效命令如下:
```bash
sudo install -d /etc/systemd/system/ollama.service.d
sudo cp /etc/systemd/system/ollama.service.d/override.conf \
/etc/systemd/system/ollama.service.d/override.conf.bak.$(date +%Y%m%d_%H%M%S)
sudo sed -i 's/Environment="OLLAMA_HOST=0.0.0.0"/Environment="OLLAMA_HOST=127.0.0.1:11434"/' \
/etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo pkill -u ollama -f "/usr/local/bin/ollama serve" || true
sudo systemctl restart ollama
ss -lntp | grep 11434
curl -sS --max-time 3 http://127.0.0.1:11434/api/tags >/dev/null && echo LOCAL_OK
curl -sS --max-time 3 http://192.168.0.188:11434/api/tags || echo LAN_CLOSED
```
## 今日發現
- `awoooi-prod` provider registry 已沒有 `ollama_188`
- `awoooi-dev` 原本仍使用 `OLLAMA_URL=http://192.168.0.188:11434`,已 live patch 到 GCP-A/GCP-B/111 proxy。
- Prometheus 舊 blackbox target 已移除並 reload避免退役後誤報。
- 188 journal 中近期少量推理 POST 來源為 `192.168.0.88`;後續確認 `.88` 是 188 的 default gateway不是下游主機。
- 2026-05-06 14:53 短窗口 Gate 綠燈repo、K8s env、Prometheus target、dev health check 均已避開 188。
- 24 小時 Gate 尚未綠燈:仍看得到 `192.168.0.88` 在 24 小時內送過推理 POST。
- 2026-05-06 15:14 已執行臨時封口188 只聽 `127.0.0.1:11434`從本機、110、K8s Pod 直連 `192.168.0.188:11434` 均拒絕。
- 2026-05-06 15:22 已執行永久 systemd 修復:`ollama.service` activeoverride 固定 `OLLAMA_HOST=127.0.0.1:11434`,不再有 systemd restart loop。
- 2026-05-12 18:35 重新跑 24 小時 Gaterepo runtime、`awoooi-prod`/`awoooi-dev` live env、Prometheus target、LAN exposure、24 小時推理 POST、dev health check 全部 PASS。判讀188 Ollama 已是 stop candidate但仍不直接 uninstall依階段決策先保留服務、等待明確停用窗口。