大多數訂閱預設產生的策略群組類型是 select(手動選擇)或 url-test(自動測速選最優),這兩種已經能涵蓋日常需求。但如果你手上有很多節點、或者對穩定性要求更高,fallback 和 load-balance 這兩種類型能提供更好的容錯和分攤效果。
01四種策略群組類型速覽
| 類型 | 選擇邏輯 | 適用場景 |
|---|---|---|
| select | 完全手動選擇,核心不做任何自動切換 | 你想自己精確控制用哪個節點 |
| url-test | 定期測速,自動選延遲最低的一個節點使用 | 日常使用,追求省心,多數訂閱的預設設定 |
| fallback | 按清單順序使用第一個可用節點,目前節點失敗才切到下一個 | 有明確的「主備」節點優先級,希望優先用某個節點 |
| load-balance | 按演算法把不同連接分攤到多個節點上,同時使用 | 多節點、希望流量分攤、避免單節點過載 |
02Fallback 容錯移轉設定範例
Fallback 會按你填寫的節點順序嘗試連接,只要清單裡第一個節點還能用,就一直用它;一旦偵測失敗才會切換到下一個,因此節點順序本身就是優先級。
proxy-groups:
- name: "Fallback-Group"
type: fallback
proxies: ["HK-主", "HK-備", "SG-備"]
url: "http://www.gstatic.com/generate_204"
interval: 300上面的例子裡,只要「HK-主」這個節點探測正常,流量就一直走它;探測失敗時才依次嘗試「HK-備」「SG-備」。
03Load Balance 負載平衡設定範例
Load Balance 會把不同的連接(不是同一個連接內的封包)分配給群組內的多個節點,達到分攤流量的效果,同時也天然具備一定的容錯能力——某個節點失效時,新連接會分配給其他健康節點。
proxy-groups:
- name: "LoadBalance-Group"
type: load-balance
proxies: ["HK-01", "HK-02", "HK-03"]
strategy: consistent-hashing
url: "http://www.gstatic.com/generate_204"
interval: 300strategy 欄位的兩種取值
- consistent-hashing:根據連接的目標位址做一致性雜湊,同一個目標大概率始終走同一個節點,適合需要「會話保持」的場景(比如某些網站對來源 IP 敏感)。
- round-robin:按順序依次輪詢分配給群組內節點,分攤更均勻,但不保證同一目標始終走同一節點。
04該怎麼選
如果你只有 1~2 個穩定節點,url-test 已經足夠;如果你明確知道某個節點品質更好、希望優先用它、其他節點僅作備用,用 fallback;如果你手上有多個品質相近的節點、擔心單節點扛不住多裝置同時使用,load-balance 是更合適的選擇。三種類型也可以巢狀組合,比如把一個 fallback 群組作為另一個策略群組的候選項之一,具體取決於你的實際節點情況。
05健康檢測相關的兩個欄位
fallback 和 load-balance 都依賴背景的健康檢測來判斷節點是否可用,這個檢測行為由 url 和 interval 兩個欄位共同控制,設定不當會導致切換不及時或者檢測過於頻繁浪費流量。
- url:健康檢測請求存取的位址,一般用輕量的測速位址(如 http://www.gstatic.com/generate_204),回傳成功即視為節點可用,不需要換成真實業務網站。
- interval:檢測間隔(單位:秒),數值太小會讓用戶端頻繁發起探測請求,增加不必要的流量與耗電;數值太大則節點故障後要等更久才會被發現並切換,一般 300 秒左右是比較均衡的選擇。
06常見問題
Q:load-balance 群組裡的節點數量有上限嗎?
沒有硬性上限,但節點數量越多,健康檢測的開銷也越大;實務上 3~6 個品質相近的節點通常就能取得不錯的分攤效果,節點太多反而不利於問題排查。
Q:策略群組切換的時候會不會斷線?
fallback 和 load-balance 只影響「新連接」分配到哪個節點,已經建立的連接通常不會被強制中斷,但如果原節點已經失效,該連接本身大概率也已經無法正常使用,需要用戶端重新發起請求。