# 负载均衡

相较于 Shadowsocks 等其它的代理,V2Ray 可以配置多服务器实现负载均衡。此处的负载均衡并非是自动选择一个延迟或网速最好的服务器进行连接,而是指多个服务器共同承担网络流量,从而减小单个服务器的资源占用及提高服务器的利用率。举个实际例子,早期的时候 V2Ray 优化稍差,再加上我的小鸡特别小,恰恰网络带宽非常大,所以每当使用代理全力下载大文件时 VPS 负荷很大,当时 CPU 占用率都在 80% 以上,时而超过 95%。这样的情况使得我下载东西时基本都限一下速,就怕商家停了我的机子。后来我突然想到 V2Ray 可以均衡负载,配置好双服务器均衡之后大流量下载虽然 CPU 占用率还有 50% 左右,但至少我可以毫无顾忌地大流量下载了。如今过了一年,我的小鸡全换了,V2Ray 也没当时那么吃性能了,我就再也没用过负载均衡,但是时不时有人问到,于是献出本文。

# 配置

实现负载均衡很简单,在客户端配置同一个 outbound 的 vnext 写入各个服务器的配置即可(前提是服务器已经部署好并能正常使用)。形如:

{
  "inbounds": [
  ...
  ],
  "outbound": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "address_of_vps1",
            "port": 8232,
            "users": [
              {
                "id": "1ce383ea-13e9-4939-9b1d-20d67135969a",
                "alterId": 64
              }
            ]
          },
          {
            "address": "address_of_vps2",
            "port": 4822,
            "users": [
              {
                "id": "bc172445-4b5e-49b2-a712-12c5295fd26b",
                "alterId": 64
              }
            ]
          }
          // 如果还有更多服务器可继续添加
        ]
      },
      "streamSettings": {
      ...
      }
    },
    ...
  ]
}

# 原理

V2Ray 是以轮询的方式均衡负载,也就是说当有流量需要通过代理时,首先走第一个 vnext 配置的服务器,有第二个连接就走第二个服务器,接着第三个,以此类推。轮询完一遍又头开始轮询。这样的方式虽然简单粗暴,特别是对于拥有多个性能差的 VPS 的人来说比较有用。另外也能减小长时间大流量连接单个 IP 的特征(由于没有足够的样本,我个人对这样的条件作为代理判据持怀疑态度),给自己一个心理安慰。

# 注意事项

如端口、id 这些在 vnext 数组内的配置项可以各不相同,但是它们的传输层配置(streamSettings)必须一致。

# 更新历史

  • 2018-01-03 初版
  • 2018-04-05 Update
  • 2019-01-13 v4.0+ 配置格式