使用 DSR 通过 OpenVPN 实现 OpenVPN 的全局服务器负载平衡

使用 DSR 通过 OpenVPN 实现 OpenVPN 的全局服务器负载平衡

好吧,所以...在网络、负载平衡、隧道或 VPN 连接方面,我绝对不是一个专业人士,但是我尝试了一些方法来实现这个理论概念——显然没有成功。

我试图实现的目标:创建一个公共 VPN(因此对来自 Internet 的外部连接开放),让客户端连接到负载均衡器服务器,然后该服务器根据最少连接将流量转发到不在同一网络内且只能通过 Internet 访问的后端服务器(不,不幸的是没有办法改变这一点)并让它们直接响应客户端(DSR),以便带宽主要发生在后端节点上而不是负载均衡器上,这样负载均衡器上就不会出现瓶颈。

所以我的想法是:由于我们的托管商不提供专用网络,我需要远程连接多台服务器以进行负载平衡。因此,出于测试目的,我创建了:

  • 我认为需要一个负载平衡服务器,它也可以充当内部 VPN 服务器来创建网络,以便私下连接服务器并将它们放在同一子网上
  • 第一个外部 VPN 服务器节点位于负载均衡器服务器的“后面”,也就是说,我想要连接到负载均衡器,然后使用“最少连接”将流量转发到其中一个节点,然后让该节点直接连接到客户端(直接服务器返回),以免所有带宽再次出现在负载均衡器上
  • 虚拟 IP(10.8.0.250)

成功创建 VPN 并将节点连接到它后,我拥有以下 IP:

10.8.0.1 (Load Balancer and internal VPN Server)
10.8.0.10 (First external VPN Server node)

在负载均衡器上我启用了 IP 转发,并创建了以下 DNAT 条目:

sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1194 -j DNAT --to-destination 10.8.0.250

以及以下 IPVS 条目:

ipvsadm -A -u 10.8.0.250:1194 -s wlc
ipvsadm -a -u 10.8.0.250:1194 -r 10.8.0.10:1194 -g -w 1

我还将虚拟 IP 添加到外部 VPN 服务器节点的环回接口,以便它可以接受传入虚拟 IP 的流量。

这基本上就是我所做的,但没有效果。

现在我的问题是:这是否有可能成功,还是我只是在尝试一些不可能的事情?如果是这样:考虑到服务器只能通过互联网连接,并且无法将它们组合在同一个专用网络上,那么最好的方法是什么?

提前感谢任何提示!

相关内容