116 lines
5.2 KiB
Markdown
116 lines
5.2 KiB
Markdown
# 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` active,override 固定 `OLLAMA_HOST=127.0.0.1:11434`,不再有 systemd restart loop。
|
||
- 2026-05-12 18:35 重新跑 24 小時 Gate:repo runtime、`awoooi-prod`/`awoooi-dev` live env、Prometheus target、LAN exposure、24 小時推理 POST、dev health check 全部 PASS。判讀:188 Ollama 已是 stop candidate,但仍不直接 uninstall;依階段決策先保留服務、等待明確停用窗口。
|