直接重啟單埠 OpenClaw 很快,但對正在串流回覆或執行工具呼叫的使用者極不友善:連線被重設、自動重試可能造成重複扣款或重複寫入。2026 年較穩健的做法是藍綠雙實例:舊版繼續服務既有 TCP 工作階段,新版綁定第二個迴環埠,由前置 nginx 透過加權上游逐步把新連線導過去,待閒置逾時後再停舊版。請搭配閱讀 反向代理與 Tunnel 加固 以及 LaunchAgent 重啟復原,以便在排空失敗時快速回退。
讀者對象為已在 macOS 託管閘道、希望降低釋出窗口客訴的平台工程師與 SRE。
若你同時串接多家模型供應商,切流前請核對每家的併發配額,避免綠色實例冷啟動瞬間觸發上游限流而被誤判為二進位瑕疵。
為何硬重啟不足
使用者更在意「突然斷線」而非「稍慢」。硬重啟會丟棄 keep-alive 池內的進行中請求。合規與財務也擔心缺少冪等鍵的自動重試造成重複工具呼叫。
預設至少約 120 秒 的排空視窗,成本遠低於事後對帳。
對外溝通時,建議把「排空」翻成產品語言:例如「系統正在完成既有對話」,比顯示原始 HTTP 499 更易降低社群負評。
若你的閘道與內部審計平台整合,請在事件時間軸標記每次 nginx reload 與權重調整,讓稽核人員能把帳務差異與釋出窗口對齊。
拓樸與權重表
範例:藍色監聽 127.0.0.1:8787,綠色監聽 127.0.0.1:8788。對外僅 nginx 443,upstream 指向兩個回環位址。穩態 100/0,釋出時每次調整約 10%。
| 階段 | 藍權重 | 綠權重 | 備註 |
|---|---|---|---|
| 穩態 | 100 | 0 | 建立基線 |
| 金絲雀 | 90 | 10 | 比對錯誤率 |
| 半量 | 50 | 50 | 尾延遲 |
| 完成 | 0 | 100 | 排空藍連線 |
nginx 片段
upstream openclaw_gateway {
least_conn;
server 127.0.0.1:8787 weight=90 max_fails=3 fail_timeout=10s;
server 127.0.0.1:8788 weight=10 max_fails=3 fail_timeout=10s;
}
執行 nginx -t && nginx -s reload 前先於預備環境演練;並保留上一版設定檔壓縮備份以利 diff。
若你的上游還需要 WebSocket 升級標頭,請在對應 location 補齊 Upgrade 與 Connection 轉發規則,避免僅在藍色實例手動測過而綠色遺漏,造成權重一切換就集體斷線。
針對大型多媒體回應,建議另開獨立 location 調整 proxy_max_temp_file_size,避免暫存檔寫滿根分割區後,讓閘道行程在寫日誌時一併阻塞。
若組織採用 GitOps 管理設定檔,記得在合併請求描述欄貼上本次權重調整時間軸與核准人,方便日後稽核與保險理賠文件引用。
逾時對齊
proxy_read_timeout 必須與閘道內部對上游模型的閒置上限一致。常見錯配是 nginx 300 秒、閘道 60 秒。串流位置請加 proxy_buffering off,避免預設緩衝在約 4MB 造成假死。
驗證與回滾
第一次切 10% 前,先對綠色埠做合成探針;若首符元延遲相對藍色退步超過約 8%,應暫停釋出。nginx 存取紀錄與 OpenClaw JSON 需共享關聯 ID。回滾即權重回100/0並停止綠行程;建議每月演練。
對於長時間佔用的 Server-Sent Events,請在產品層提供「重新連線」按鈕文案,並在切流期間暫時降低前端自動重連頻率,以免在權重切換瞬間產生重試風暴。
若閘道後方還有共用 Redis 作為速率限制儲存,確認綠色實例啟動時不會清空共享計數器造成短暫放行 burst;必要時在切流前手動同步關鍵鍵值。
針對跨區使用者,建議在狀態頁提前公告預計的 reload 秒級窗口,並在 Slack 或 Teams 頻道貼出當班工程師與備援聯絡方式,降低支援工單重複提報。
可觀測性與安全
切流期間每 10 秒擷取每色作用中連線、5xx 占比與合成探針 p95;於圖表標註 reload 時間與 Git SHA。雙埠意味誤綁 0.0.0.0 的風險加倍,CI 應自動檢查監聽位址。金鑰輪替須同步覆蓋藍綠,否則綠可能帶著過期權杖卻開始接流。
避開磁碟快照與釋出重疊:APFS 寫放大可能短暫抬高尾延遲 30–80 毫秒。跨國排班應涵蓋至少兩個時區,避免權重調到一半遇到憑證過期卻無人回滾。
釋出結束後保留二十四小時儀表板截圖與 nginx 設定 diff,利於稽核。若閘道前尚有企業 HTTPS 檢測設備,確認其對串流的緩衝策略是否與 nginx 衝突。
最後,將本次切流指令封裝成內部 CLI 子命令(例如 ops gateway canary --green 10),降低人工輸錯埠號的機率。
若你在教育或政府專案中必須保留六個月以上的原始存取紀錄,請確認輪替後的綠色實例仍寫入同一受控日誌目錄,避免權重完成後舊檔案權限被錯誤回收或遺失。
建議在雲端 Mac mini 完整彩排:MacHTML 常見價位約 每日 16.9 美元,可取得貼近量產的 Apple Silicon 與 launchd 行為,SSH 便於腳本化調整,VNC 便於查看選單列狀態圖示。
常見問題
可用 Unix socket 嗎?
可以,upstream 支援 unix: 路徑,加權邏輯不變。
排空能消除所有錯誤嗎?
不能,應用程式缺陷仍在,但可減少傳輸層重設類客訴。
mTLS 到上游模型?
藍綠設定必須一致,否則會出現單側握手失敗的幽靈故障。
7×24 閘道更看重熱行為可預測與低噪音硬體。Mac mini 在 Apple Silicon 上適合長時間雙實例並行;macOS 亦符合多數自動化假設。MacHTML 租賃讓你在釋出週臨時加開預備主機,先把 nginx reload 與 launchctl 操作練熟再上線,避免一次性採購閒置設備。