1. 负载均衡 2

在前面的章节当中有提到过利用 V2Ray 的一个特性来实现负载均衡。但是由于这种负载均衡是投机取巧利用配置实现的,最终的效果不尽如人意,也就在特殊情况下用一用而已,也有人认为这种轮询的机制压根算不上负载均衡。不过经过漫长的等待,V2Ray 终于可均衡负载了,但是可能 V2Ray 认为时机还不成熟,官方文档上并没有负载均衡方面的描述。我研究了一番源代码,粗略测试了几分钟,V2Ray v4.3 版本可以均衡负载了,于是放出本篇教程给大伙尝尝鲜。

1.1. 配置

负载均衡的配置位于 routing 字段,仅需在客户端上配置即可。在 routing 当中,配置一个 balancers 数组,代表这负载均衡的规则,每一个对象包含负载均衡唯一的标签,均衡策略(目前的策略好像只有随机选择)以及可选择的出站代理。然后在路由规则中根据需要配置特定的流量进行负载均衡。在本例中,最后一个路由规则为负载均衡。根据示例可以知道目的地址是私有 IP 或中国大陆的流量直连,其余的所有流量是负载均衡 b1(即 在 jp1 和 jp2 两者之间选择)。本例中没有使用到 b2 的负载均衡。

  1. {
  2. "inbounds": [
  3. ...
  4. ],
  5. "outbounds": [
  6. {
  7. "tag": "us1",
  8. ...
  9. },
  10. {
  11. "tag": "jp1",
  12. ...
  13. },
  14. {
  15. "tag": "jp2",
  16. ...
  17. },
  18. {
  19. "tag": "hk1",
  20. ...
  21. },
  22. {
  23. "tag": "direct",
  24. ...
  25. }
  26. ],
  27. "routing": {
  28. "domainStrategy": "IPOnDemand",
  29. "balancers": [
  30. {
  31. "tag": "b1",
  32. "selector": [
  33. "jp1",
  34. "jp2"
  35. ]
  36. },
  37. {
  38. "tag": "b2",
  39. "selector": [
  40. "us1",
  41. "hk1"
  42. ]
  43. }
  44. ],
  45. "rules": [
  46. {
  47. "type": "field",
  48. "outboundTag": "direct",
  49. "ip": [
  50. "geoip:private",
  51. "geoip:cn"
  52. ]
  53. },
  54. {
  55. "type": "field",
  56. "outboundTag": "direct",
  57. "domain": [
  58. "geosite:cn"
  59. ]
  60. },
  61. {
  62. "type": "field",
  63. "network": "tcp,udp",
  64. "balancerTag": "b1"
  65. }
  66. ]
  67. }
  68. }

从配置中可以看出,V2Ray 的负载均衡同样有着高度灵活的优点,可以针对指定的流量进行负载均衡,也可以按需配置多个负载均衡,不同底层传输配置的出站协议也可以负载均衡,可以说 V2Ray 的路由有多灵活那么它的负载均衡就有多灵活。

可能是刚刚推出的原因,现在的均衡策略只有随机选择,随着时间的推进应该会陆续有其他的策略。

以上配置是我根据 V2Ray v4.3 的源代码写的,在正式的文档出来之前只适合尝鲜使用。

1.2. 更新历史

  • 2018-11-09 初版
  • 2019-11-01 修正某些情况下 IP 规则无法匹配