v2ray进阶篇:负载均衡实现多线程下载带宽叠加,油管8K视频秒开

经常有人问我v2ray可以实现负载均衡吗?答案是肯定的。v2ray的负载均衡能实现什么功能?第一,自动切换节点,会根据观测记录选择 HTTPS GET 请求完成时间最快的一个出站连接。这个功能和Clash提供的功能很类似。第二,会从出站节点数组中随机选出一个作为最终的出站连接。实现宽带叠加,同时降低节点负载。例如我有两只免费的小笨鸡hax.co.id/woiden.id,不管使用哪一个,速度都不是很好,油管上看1080P都不流畅,更不要提8K秒开了。今天我就带领大家使用v2ray负载均衡实现多线程下载带宽叠加。

一、远程服务器端

v2ray负载均衡对于远程服务器端使用什么协议,没有过多要求,常用的vmess,vless,shadowsocks,trojan均支持。但是我更习惯使用本站提供的V2ray多合一脚本安装VMESS+websocket+TLS+Nginx。

bash <(curl -sL https://raw.githubusercontent.com/hiifeng/v2ray/main/install_v2ray.sh)

二、客户端配置

1、windows客户端软件使用v2rayN,可以在github上下载目前的最新版本。

https://github.com/2dust/v2rayN/releases/download/5.38/v2rayN-Core.zip

2、配置config.json文件,建议使用Notepad++或UltraEdit等文本编辑器。配置文件内容参考如下:

{
  "policy": {
    "system": {
      "statsOutboundUplink": true,
      "statsOutboundDownlink": true
    }
  },
  "log": {
    "access": "",
    "error": "",
    "loglevel": "warning"
  },
//入站规则
  "inbounds": [
    {
      "tag": "socks",
      "port": 10808,
      "listen": "127.0.0.1",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls"
        ]
      },
      "settings": {
        "auth": "noauth",
        "udp": true,
        "allowTransparent": false
      }
    },
    {
      "tag": "http",
      "port": 10809,
      "listen": "127.0.0.1",
      "protocol": "http",
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls"
        ]
      },
      "settings": {
        "auth": "noauth",
        "udp": true,
        "allowTransparent": false
      }
    },
    {
      "tag": "api",
      "port": 53284,
      "listen": "127.0.0.1",
      "protocol": "dokodemo-door",
      "settings": {
        "udp": false,
        "address": "127.0.0.1",
        "allowTransparent": false
      }
    }
  ],
  //出站规则
  "outbounds": [
    {//小鸡woiden.id节点的配置
      "tag": "woiden",				//需要给节点配置tag,名称任意
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "woiden.ifeng.ml",
            "port": 443,
            "users": [
              {
                "id": "948a4c79-ef2a-46f0-a781-810db9efc4a1",
                "alterId": 0,
                "email": "[email protected]",
                "security": "auto"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {
          "allowInsecure": false,
          "serverName": "woiden.ifeng.ml"
        },
        "wsSettings": {
          "path": "/woiden",
          "headers": {
            "Host": "woiden.ifeng.ml"
          }
        }
      },
      "mux": {
        "enabled": false,
        "concurrency": -1
      }
    },
    {//小鸡hax.co.id节点的配置
      "tag": "hax",				//需要给节点配置tag,名称任意
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "haxid.ifeng.ml",
            "port": 443,
            "users": [
              {
                "id": "5bc4ab2e-63fe-11ed-81ce-0242ac120002",
                "alterId": 0,
                "email": "[email protected]",
                "security": "auto"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {
          "allowInsecure": false,
          "serverName": "haxid.ifeng.ml"
        },
        "wsSettings": {
          "path": "/haxid",
          "headers": {
            "Host": "haxid.ifeng.ml"
          }
        }
      },
      "mux": {
        "enabled": false,
        "concurrency": -1
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {
        "response": {
          "type": "http"
        }
      }
    }
  ],
 //探针,每隔10分钟测试一次数组中节点的连接速度,负载均衡策略对象为leastPing会调用。
  "observatory": {
	"subjectSelector":[
        "woiden",
        "hax"
	],
	"probeInterval":"10m"
  },
  "stats": {},
  "api": {
    "tag": "api",
    "services": [
      "StatsService"
    ]
  },
  "routing": {
    "domainStrategy": "IPIfNonMatch",
	"balancers": [//负载均衡策略
      {
        "tag": "balancer",
        "selector": [//一个字符串数组,其中每一个字符串将用于和出站协议标识的前缀匹配。
          "woiden",
          "hax"
        ],
		"strategy": {//负载均衡策略对象
		  //type可填 random 或 leastPing ;random 会从出站中随机选出一个作为最终的出站连接;
		  //leastPing 会根据观测记录选择 HTTPS GET 请求完成时间最快的一个出站连接。
		  "type": "random"		
		}
      }
    ],
    "rules": [
      {
        "type": "field",
        "inboundTag": [
          "api"
        ],
        "outboundTag": "api",
        "enabled": true
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": [
          "domain:example-example.com",
          "domain:example-example2.com"
        ],
        "enabled": true
      },
      {
        "type": "field",
        "outboundTag": "block",
        "domain": [
          "geosite:category-ads-all"
        ],
        "enabled": true
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": [
          "geosite:cn"
        ],
        "enabled": true
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
          "geoip:private",
          "geoip:cn"
        ],
        "enabled": true
      },
      {//将流量转发给负载均衡策略
        "type": "field",
        "network": "tcp,udp",
        "balancerTag": "balancer"
      }
    ]
  }
}

相关说明:

①以上示例,我在outbounds中放了两个节点。节点数量没有限制,根据自己情况添加即可。

②leastPing需要v2ray v4.38.0以上版本才能支持,建议v2ray使用最新版本。

③183行,type值为random宽带叠加,type值为leastPing自动选择速度最快的节点出站。

④使用v2ray实现的透明代理同样支持宽带叠加,明白原理后,简单修改一下config.json文件即可。

⑤使用v2ray负载均衡宽带叠加,如果节点套cdn时,可以实现单线复用。

3、v2rayN客户端配置,点击菜单上“服务器”中的“添加自定义服务器”,

v2rayN配置.webp然后选择上一步配置好的config.json文件,导入即可。从下面图片中你可以看到,随机与节点hax或woiden建立连接。

v2rayN配置,导入config.json.webp三、测速情况

1、本例中只使用hax.cd.id节点的测速情况

测速_hax.co.id.webp2、本例中只使用woiden.id节点的测速情况

测速_woiden.id.webp3、使用v2ray负载均衡实现带宽叠加后的测速情况

负载均衡宽带叠加后测速结果.webp

参考文献:
https://toutyrater.github.io/app/balance.html
https://guide.v2fly.org/routing/balance2.html
https://www.v2fly.org/config/routing.html#balancerobject
https://www.v2fly.org/config/observatory.html#observatoryobject


本文出处:HiFeng'Blog
本文链接:
https://hicairo.com/post/41.html
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA许可协议。转载请注明出处!