Skip to content

[Proxy Group] 服务器调度组 ​

本节用于配置代理服务器调度组,聚合多个目标服务器并支持手动选择、延迟测速、故障转移、负载均衡及网络环境匹配等调度策略。

语法声明块 ​

调度组通过标准的 INI 配置行进行声明:

ini
name = type, member1, member2, ..., [options...]

各组成部分解析如下:

  • name:调度组的唯一命名标识,供 [Rule] 分流策略或上级调度组引用。
  • type:调度类型(大小写不敏感),支持 select、url-test、fallback、load-balance、subnet。
  • member1, member2, ...:候选成员列表。成员支持填写:
    • [Proxy] 中声明的命名代理服务器;
    • 内置动作策略(如 DIRECT、REJECT、REJECT-DROP);
    • 其他调度组名称(实现多级嵌套与级联调度)。
  • [options...]:键值选项(格式为 key=value),用于配置外部节点资源挂载(includes)、健康检查频率(check-interval)、延迟切换容差(tolerance)、负载均衡算法(algorithm)等参数。

subnet 类型语法 ​

对于 subnet 类型调度组,候选出口由网络匹配条件决定,不使用位置参数成员列表:

ini
name = subnet, default=outbound_name, condition1=outbound1, condition2=outbound2, ...

调度组类型总览 ​

声明类型调度模式备注
select手动选择
url-test自动测速
fallback故障转移
load-balance负载均衡
subnet网络环境匹配

通用选项 ​

除 subnet 外,其余所有调度组均支持以下通用控制选项:

  • includes(资源名称列表,默认空列表) 适用类型:全部(除 subnet)。引入外部节点资源,引用 Proxy Resource 定义的资源;多个名称以逗号分隔并整体使用双引号包裹。
  • check-interval(正整数,单位:秒,默认值 300) 适用类型:url-test、fallback、load-balance。健康检查与延迟探测的执行周期。

调度组类型与特定选项 ​

select 手动选择 ​

select 类型由外部显式选择生效成员:

ini
name = select, member1, member2, ..., [includes="Resource1,Resource2"]

除了位置参数中显式列出的节点外,还可通过 includes 引入外部节点资源中的所有节点作为候选成员。

ini
[Proxy Group]
Proxy = select, AutoTest, DirectOut, Node-A, Node-B, includes=RemoteNodes

url-test 自动测速 ​

并发探测候选节点的延迟,自动选择延迟最低的可用节点:

  • tolerance(无符号整数,单位:秒,默认值 0) 延迟切换容差;新最优节点的延迟若未低于当前活动节点超过该容差值,则保持当前节点不变。

测速探测与切换机制 ​

  1. 探测目标解析:测试 URL 优先使用候选节点自身的 override-test-url;若节点未单独设置,则继承 [General] 全局配置的 proxy-test-url。
  2. 容差机制:配置 tolerance(秒)后,仅当候选节点的延迟比当前活动节点低出该数值以上时才执行切换。
ini
[Proxy Group]
AutoTest = url-test, NodeA, NodeB, NodeC, check-interval=180, tolerance=1

fallback 故障转移 ​

fallback 类型按配置顺序选择可用成员:

  • max-preferred-latency(正整数,单位:毫秒,未设置) 候选成员健康判定门限;探测延迟高于此门限的成员被判定为不可用。

fallback 调度组从首个成员开始依次检测健康状态。只要排在前面的成员保持健康,流量经由该成员转发;当前驱成员探测超时或延迟超出 max-preferred-latency 时,顺延使用下一顺位成员;当所有成员均不可用时,回退至第一个初始成员。

ini
[Proxy Group]
HighAvailability = fallback, PrimaryNode, BackupNode, DIRECT, check-interval=60, max-preferred-latency=800

load-balance 负载均衡 ​

load-balance 类型在健康成员之间分发连接:

  • algorithm(枚举值,默认值 pcc) 连接分配调度算法,可选 pcc/0/consistent-hash、random/1、round-robin/2,详见下文。
  • max-preferred-latency(正整数,单位:毫秒,未设置) 候选成员健康判定门限;超出此延迟的成员暂时移出负载分配池。

调度算法机制 ​

  • pcc(consistent-hash):一致性哈希算法。基于目标主机名或目标 IP 计算哈希值,相同目标的请求分配至同一成员。
  • random:随机分发。为每个新建立的连接随机选取一个可用成员。
  • round-robin:轮询分发。在健康成员列表上按顺序循环分配新建连接。
ini
[Proxy Group]
LoadBalanced = load-balance, NodeA, NodeB, NodeC, algorithm=pcc, check-interval=120, max-preferred-latency=600

subnet 网络环境匹配 ​

根据当前网络属性(Wi-Fi SSID、BSSID、接口类型或网关地址)匹配网络出口:

  • default(代理名称或调度组名称,必填) 当当前网络未命中任何匹配条件时的默认出口。
  • 条件映射键(格式为 前缀:匹配值 = 目标名称,未设置) 网络环境与出口目标的映射规则,支持声明多条。

网络匹配前缀 ​

前缀大小写不敏感,支持以下匹配维度:

  • SSID:名称:匹配当前连接的 Wi-Fi 名称(SSID)。未带前缀的键值默认按 SSID 规则处理。
  • BSSID:MAC地址:匹配当前连接的无线热点 AP 物理 MAC 地址。
  • TYPE:网络类型:匹配当前系统网络介质类型(例如 WIFI、CELLULAR)。
  • GATEWAY:网关IP:匹配当前网卡的默认网关 IP 地址。
ini
[Proxy Group]
AutoNetwork = subnet, default=ProxyGroup, SSID:HomeWiFi=DIRECT, SSID:OfficeCorp=OfficeGateway, TYPE:CELLULAR=DIRECT

配置示例 ​

基础配置 ​

ini
[Proxy Group]
# 1. 手动选择组
FinalProxy = select, AutoTest, FallbackGroup, LoadBalancedGroup, DIRECT

# 2. 自动测速组
AutoTest = url-test, includes=RemoteNodes, check-interval=300, tolerance=1

# 3. 故障转移组
FallbackGroup = fallback, PrimaryNode, BackupNode, DIRECT, check-interval=60, max-preferred-latency=500

# 4. 负载均衡组
LoadBalancedGroup = load-balance, NodeA, NodeB, NodeC, algorithm=consistent-hash, check-interval=180

# 5. 子网环境匹配组
OfficeAware = subnet, default=FinalProxy, SSID:OfficeWiFi=DIRECT, TYPE:CELLULAR=FinalProxy