使用 DSR 透過 OpenVPN 實現 OpenVPN 的全域伺服器負載平衡

使用 DSR 透過 OpenVPN 實現 OpenVPN 的全域伺服器負載平衡

好吧,那麼…在網路、負載平衡、隧道或 VPN 連接方面,我絕對不是專業人士,但我嘗試了一些方法來讓這個理論概念發揮作用 - 顯然沒有成功。

我試圖實現的目標:建立一個公共VPN(對來自互聯網的外部連接開放),讓客戶端連接到負載平衡器伺服器,然後根據最少連接將流量轉發到不在同一網路中的後端伺服器只能透過互聯網存取(不,不幸的是沒有辦法改變這一點)並讓它們直接回應客戶端(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 Server 節點的環回接口,以便它接受來自虛擬 IP 的流量。

這基本上就是我所做的,但它不起作用。

現在我的問題是:這是否有可能起作用,或者我只是在嘗試一些以我的方式不可能實現的事情?如果是這樣:考慮到伺服器只能透過網路連線並且無法將它們分組在同一專用網路上,那麼最好的方法是什麼。

預先感謝您的任何提示!

相關內容