Thursday, March 23, 2023

Clash多节点负载均衡

配置前可能需要删除clash便携版中的data文档夹,重新订阅。

配置 Clash 的 parsers(预处理)实现负载均衡

在刚才我们已近导入了所有的节点,大约有20组这样。现在我们要利用 Clash 的 parsers 预处理配置功能实现节点的负载均衡。简单说就是让所有节点雨露均沾,不浪费任何一个带宽,提升我们的魔法上网体验。

打开 Clash,左侧选择【设置】,并在右侧选择【配置】

Clash 的设置界面

在【预处理配置(parsers)】后面点击【编辑】:

将下方代码完整的放入编辑文档中,然后 Ctrl+S 、或者点击右小角按钮保存:

parsers:
  - reg: 'slbable$'
    yaml:
      append-proxy-groups:
        - name: ⚖️ 负载均衡-散列
          type: load-balance
          url: 'http://www.google.com/generate_204'
          interval: 300
          strategy: consistent-hashing
        - name: ⚖️ 负载均衡-轮询
          type: load-balance
          url: 'http://www.google.com/generate_204'
          interval: 300
          strategy: round-robin
      commands:
        - proxy-groups.⚖️ 负载均衡-散列.proxies=[]proxyNames
        - proxy-groups.0.proxies.0+⚖️ 负载均衡-散列
        - proxy-groups.⚖️ 负载均衡-轮询.proxies=[]proxyNames
        - proxy-groups.0.proxies.0+⚖️ 负载均衡-轮询

博主鸣谢:代码 Shout out to 不良林 老师(YouTube

再次点击编辑,出现的应该是如下这样的界面:

Clash 的 parsers(预处理)配置代码
Clash 的 负载均衡(散列+轮询)配置代码

回到左侧【配置】,选择之前出现的灯塔 Cloud选项,右击选择【设置】。此时应该会出现之前复制过的灯塔 Cloud 的订阅地址。你需要在订阅地址之后加上【#slbable】:

在订阅地址后面手动输入:#slbable
在订阅地址后面手动输入:#slbable

点击确定回到【配置】界面,右击灯塔 Cloud 选择【预处理配置】。如果出现如下界面,就代表负载均衡规则已加载成功:

出现 reg(slbable$) 代表负载均衡规则加载成功
出现 reg(slbable$) 代表负载均衡规则加载成功

此时,你的 Clash 已经配置好的节点之间的负载均衡规则。在【代理】-【规则】中出现了【负载均衡-散列】和【负载均衡-轮询】的选项:

添加的【负载均衡-散列】和【负载均衡-轮询】选项卡
添加的【负载均衡-散列】和【负载均衡-轮询】选项卡

在只需要重启 Clash 并选择好代理,就可以实现负载均衡效果。

重启 Clash 并选择对应规则

重启之后,打开【代理】-【规则】,并点击选择【负载均衡-轮询模式】。然后右击窗口右下角的Clash小蓝猫图标,像右侧图片这样选择。选择【系统代理】、然后代理模式选择【规则】。

关于系统代理、TUN模式、混合配置这些,新手可以这么理解

  • 系统代理:就是浏览页面、看视频之类的走代理(魔法上网)。游戏、应用之类的不会走代理(虽然不是绝对)。
  • TUN 模式:就是无论网页、游戏、应用还是什么全部按照规则走代理(魔法上网)。
  • 混合模式:就是上面两个混一起用。

关于全局、规则、直连、脚本,这些我就不解释了。正常选择【规则】模式(类似其他绕过大陆或 PAC 模式)就对了。

到此你就可以愉快的扶墙看 YouTube 了。博主的体会是:学习任何新知识,有 YouTube 足以。国内除了 B 站能看之外,其余的都是垃圾。

速度测试

如果你想测试负载均衡的效果,可以在 Clash 界面左侧,选择【链接】,然后打开 Google 网站进行检测:

因为我是用的是【轮询】模式,可以看到上方不同的请求,使用的节点都不一样。即使有一个节点速度慢,只会导致其中一个请求失效或加载慢、而不会影响到整体效果。

博主提示:如果要测试负载均衡的下载效果可以通过 speedtest.net 进行测试。记得测试前将 Clash 切换到全局模式。

这时有人要问:如果大部分节点都失效怎么办?雨露均沾大部分不就没用了?这个不必担心,预处理规则中会隔一段时间就检测节点有效性。负载均衡也只会在有效的节点中进行

在上方 parsers(预处理)代码中,有一个 interval 的属性,就是查询有效性的时间间隔。interval: 300 其实就代表,每隔 300 秒就查询一次节点有效性。

散列模式和轮询模式的说明

我在上面使用的是轮询模式,关于轮询和散列模式在具体使用中感觉并不是特别的大。新手可以这么理解这两个模式(并不准确,但足够你理解):

  • 轮询模式:按照节点顺序,挨个匹配请求。
  • 散列模式:按照随机规律(hash 随机),匹配请求。

结语

负载均衡的好处就是可以规避单节点失效导致无法科学上网的问题。同时在多请求时,可以通过给不同的请求分配不同的节点,将科学上网体验、速度最大化。

利用 Clash 客户端的 parsers(预处理)功能,可以完美的实现这个功能。再拉跨的节点,只要数量够多,都可以实现带宽叠加,网速叠加的效果。

https://jiasupanda.com/clash-load-balance

 

No comments: