跳转至

Loadbalance

结构

{
  "type": "loadbalance",
  "tag": "my-lb",

  "primary_outbounds": [
    "proxy-a",
    "proxy-b"
  ],
  "backup_outbounds": [
    "proxy-c"
  ],
  "url": "https://www.gstatic.com/generate_204",
  "interval": "3m",
  "timeout": "5s",
  "idle_timeout": "30m",
  "tolerance": 10,
  "top_n": {
    "primary": 0
  },
  "strategy": "consistent_hash",
  "hash": {
    "key_parts": ["src_ip", "matched_ruleset_or_etld"],
    "virtual_nodes": 100,
    "on_empty_key": "random",
    "key_salt": ""
  },
  "empty_pool_action": "error",
  "interrupt_exist_connections": false,
  "prefer_domain": false,
  "override_ip": ""
}

字段

primary_outbounds

必填

主出站标签列表。健康的主出站总是优先于备用出站。

backup_outbounds

可选

备用出站标签列表。备用出站仅在没有任何主候选出站健康时使用。

url

可选

健康检查测试 URL。默认使用 https://www.gstatic.com/generate_204

interval

可选

健康检查间隔。默认使用 3m

timeout

可选

健康检查超时时间。如果候选出站延迟超过此值,则视为不健康。默认使用 5s

idle_timeout

可选

空闲超时时间。当检测到没有流量时,健康检查将停止。默认使用 30m

top_n

可选

Top N 候选选择选项。

top_n.primary

可选

按延迟选择前 N 个健康主出站。0 表示使用所有健康主出站。默认:0

tolerance

可选

选择 Top N 候选集合时的延迟容差,单位为毫秒。 更快的出站只有在比当前候选快出超过该值时才会将其替换。 默认使用 10

strategy

可选

选择策略。支持的值:consistent_hashrandom。默认:consistent_hash

hash

可选

一致性哈希选项。

hash.key_parts

可选

用于构建哈希键的部分。支持的值:src_ipmatched_ruleset_or_etld。默认:["src_ip", "matched_ruleset_or_etld"]

hash.virtual_nodes

可选

哈希环中每个候选的虚拟节点数量。较高的值可以提高分布均匀性。默认:100

hash.on_empty_key

可选

哈希键为空时的行为。random 随机选择一个候选;error 返回拨号错误。默认:random

hash.key_salt

可选

添加到哈希键输入前面的盐,用于额外随机化。默认:""

empty_pool_action

可选

没有健康候选时的行为。支持的值:errorrandomerror 拨号失败并返回错误;random 从所有已配置的主出站和备用出站中随机选择,不进行健康过滤。默认:error

interrupt_exist_connections

可选

当选定的出站发生更改时,中断现有连接。

仅入站连接受此设置影响,内部连接将始终被中断。

prefer_domain

可选

通过选定的出站优先进行域名解析。默认:false

override_ip

可选

参见 Dial 字段

启动行为

出站立即启动,并用全部主出站预填充候选池。后台健康检查随后用健康的 Top-N 集合替换该预填充。仅在已有健康结果且没有任何候选健康时,才使用 empty_pool_action

主备语义

健康的主出站总是优先于备用出站。备用出站仅在没有任何主候选出站健康时使用。

一致性哈希

使用 consistent_hash 策略时,只要候选集合不变,相同的哈希键始终选择相同的候选。当某个候选被移除时,只有映射到该候选的键会被重新映射。

随机策略

使用 random 策略时,每次连接请求从当前健康候选池中随机选择一个候选。不进行哈希键计算,不提供会话亲和性。每次选择相互独立。