決策矩陣:控制面先切什麼
用於新建或擴張跨區域 Apple Silicon 建置農場。rsync/flock 細節見《rsync、建置鎖與延遲驗收》;遠端入口見《Mosh 與 SSH》;Webhook/探針見《OpenClaw 多可用區網關》。
| 控制面切片 | 主槓桿 | 理想結果 | 常見失敗型態 |
|---|---|---|---|
| 拆分 DNS | 每區視圖或地理導向紀錄指向 registry.git.internal |
建置機解析到最近健康回源,無需逐城改 Job YAML。 | TTL 過舊,演練時亞太流量仍繞美東。 |
| 內網製品庫 | 區內反向代理+共用簽章金鑰 | 拉取延遲落在驗收包絡內。 | HTTP/HTTPS 混用或 CA 不一致,SwiftPM/Docker 憑證助手失效。 |
| 建置鎖 | 僅在提升、索引發布或清單寫入週邊使用窄 flock | 並聯 Mac Mini Worker 維持並聯。 | 全域鎖把編譯+測試序列化,叢集形同虛設。 |
| 同步路徑 | rsync 扇出 對上 支援 byte-range 的物件儲存 | 頻寬與校驗語意可預測。 | 每次 Job 全樹複製塞滿跨區上行。 |
DNS 視圖與解析策略
把拆分 DNS當產品能力:各地理區的內部解析器應回同一組邏輯名(製品庫、狀態端點、快取主節點),但指向已通過健康檢查的區內目標。請文件化三層:權威紀錄、VPN/Zero Trust 轉送器、以及僅供緊急使用的 /etc/hosts。
在擴節點至新加坡或美西前,先把故障切換對的 TTL 降到約 60–120 秒;並做負向測試:模擬單台 Mac 解析器失效時,Job 應落到文件化的次要名稱,而非靜默逾時連到錯洲。
內網回源與 TLS
製品庫回源路徑愈單調愈好:每環境一個 HTTPS 主機名,在代理終止 TLS,後端走 HTTP/2。各區信任庫需一致——要麼每區發放同一私有中繼憑證,要麼有同步的信任庫更新劇本——因為 macOS 無頭 CI 對鑰匙圈提示特別敏感。
勿混用純 HTTP 鏡像與 HTTPS 提升目標為同一「正式 URL」。舊快取請隔離在 rewrite 後,公開名強制 HSTS。
# 範例:自各「區域等級」主機驗證製品庫 TLS curl --max-time 8 --connect-timeout 3 -fsS \ --resolve registry.git.internal:443:10.20.30.40 \ https://registry.git.internal/v2/ >/dev/null
建置鎖粒度
建置鎖應保護不變式,而非樂觀鎖滿全線。僅在兩個 Job 可能毀損同一 POSIX 樹、製品庫索引或清單檔時持有互斥鎖;編譯、靜態分析與多數測試應跨節點無鎖,競爭留在提升邊界。
LOCK_FILE="/var/tmp/ci-registry-promote.lock"
flock -n "$LOCK_FILE" bash -c '
./scripts/publish-manifest.sh
rsync -az --delete ./staging/ "/Volumes/Artifacts/promote/"
' || { echo "promote lock busy"; exit 17; }
鎖檔放在低延遲本機 SSD,勿放 SSHFS。若需跨機櫃協調可引入小型共識服務,但 Mac 端契約建議維持與 flock 相同語意,方便 runbook 敘事。
rsync/物件儲存同步閾值
當增量 POSIX 樹、頻寬上限與維運主導的校驗輪詢比「海量並行讀者」更重要時,維持 rsync;當多台並行 Worker 在數分鐘內拉同一多 GB 產物、且可用邊緣快取攤銷 egress 時,偏向 物件儲存。
| 訊號 | 偏向 rsync | 偏向物件儲存 |
|---|---|---|
| 中位產物大小 | 單次同步約 5 GB 以下 | 數百 GB 或頻繁大扇出 |
| 並行型態 | 少數 golden→worker 流,搭配 --bwlimit |
數分鐘內大量讀者拉同一 key |
| 維運預算 | 團隊已標準化 SSH+POSIX 路徑 | 具 S3 相容工具與 IAM 輪換節奏 |
無論媒介,以 /usr/bin/timeout 限制牆鐘同步時間、對結束碼 124 發指標,並排程每週校驗演練,避免靜默位元衰減拖到發布日。
延遲驗收
- 製品庫拉取:對區內回源,中繼資料重的解析 p95 < 3 秒。
- 控制面 SSH:自動化網路至各 並聯 Mac Mini 等級主機,RTT 中位數 < 70 ms。
- 提升路徑:含鎖取得,每週最大 bundle 端到端 < 2 分鐘。
- 故障演練:DNS 切換在一個 TTL 內完成,建置機無需手改 hosts。
若反覆未過門檻,優先加「中繼地理」而非收緊鎖:在香港或美東補齊對稱節點,可縮 RTT 又保留簽章與合規錨點。
建置鎖合併驗收清單
在合併會動到 DNS、製品庫回源或鎖範圍的基礎設施變更前執行;新區加入既有並聯艦隊時尤為重要。
- DNS 對齊:內部 dig(或等效)顯示各區將製品庫/快取名解析到健康區內 VIP。
- TLS 對齊:每台建置機信任同一鏈;撤銷與輪換測過且無 GUI 提示。
- 鎖範圍審查:無 Job 在「編譯+測試」全程持互斥鎖;僅提升鎖寫入 runbook。
- 同步演練:在預期並行下,rsync dry-run 或物件複寫於逾時預算內完成。
- 延遲探針:各地理合成拉取符合上文門檻。
- 回滾:至少一個維護窗內,舊 DNS 答案與製品庫端點仍可連線。
FAQ:拆分 DNS、製品庫與採購語境
每區要不同製品庫主機名嗎? 視圖正確則邏輯名可統一;分名除錯易但憑證成本高,選定後自動續期。
能跳過拆分 DNS 嗎? 延遲常在長假現形;拆分視圖讓故障轉移可預期,少改流水線密鑰。
多節點放哪? 一區過、一區不過,多半要加地理而非加鎖。比較方案,讓 DNS/製品庫/扇出在地化。
按地理擴充並聯 Mac mini M4
將拆分 DNS 與區域製品庫回源,對齊多節點專用機:編譯維持並行、提升仍受窄鎖保護。從購買頁起案,頻寬參數對齊 rsync 矩陣文章,拓樸每變更一次就重跑上文合併清單。