
我目前正在設計一項 OpenVPN 服務,為網路使用者提供增強的隱私性。
到目前為止,我打算使用運行 CentOS 和 Xen 的專用伺服器來提供多個網域,每個網域都有一個 OpenVPN 伺服器,以實現高可用性和負載平衡。
如果一個 domU 發生故障,我想自動在同一台主機上啟動第二個 domU。這種類型的故障轉移可能嗎?
是否有任何解決方案可以平衡 VPN 連接到 domU 伺服器的負載?
答案1
是的,可以監控 Xen DomU 的狀態,並在 DomU 出現故障時執行某些任意命令。您可以在第三台主機(DomU 或實體主機)上執行 Monit 守護程式的實例,該執行個體會檢查主 OpenVPN DomU,並告訴 Dom0 在主 DomU 出現故障時啟動輔助 DomU。 Monit 文件有很多範例可以向您展示如何實現這一點:
是的,OpenVPN 內建了一些高可用性和/或負載共享功能,而且設定起來非常簡單。
首先,您將並行運行多個 OpenVPN 伺服器,每個伺服器監聽自己的 IP 位址。伺服器不共享狀態,並且彼此不了解任何資訊。
然後,您可以在命令列或 OpenVPN 用戶端的設定檔中指定多個「--remote」選項。當客戶端有多個可用的遠端伺服器選項時,它將隨機選擇一個並與其建立連線。如果該伺服器發生故障,它將重新嘗試連接,然後在連接失敗時隨機選擇不同的伺服器。有關更多信息,請參閱此處的 OpenVPN 文件:
您可能想在這裡查看我對類似問題的回答:
正如我的其他答案中所述,您可能需要注意這些客戶端選項,特別是:
- 連線重試
- 最大連線重試次數
- 遠端隨機
- ifconfig-池-持久
當然,這不是真正的負載平衡,因為 OpenVPN 用戶端不會選擇負載最低或客戶端最少的伺服器 - 它只是隨機選擇一個伺服器。如果您需要真正的負載平衡來確保伺服器負載保持平衡,則需要找到某種專用的負載平衡解決方案,無論是硬體還是軟體。
答案2
也許您可以像普通 Linux HA 叢集的兩個節點一樣配置兩個 domU VM。但我認為只有當第二個節點處於待機狀態而不是關閉時,此配置才可以工作。如果你希望備份domU 節點在第一個節點不起作用時啟動,我認為你必須在dom0 層級編寫腳本,該腳本永遠運行檢查第一個節點的運行狀況,並在發生故障時強制其完全關閉,備份的啟動(我不認為這樣的 shell 腳本應該太困難,或者也許你可以使用一些好的 Linux 軟體來完成這項工作,但它可能更具侵入性)。
為此,您可以考慮使用兩個 VM,就像常規 Linux 機器一樣,並安裝和使用負載平衡標準 Linux 解決方案。
答案3
對於 OpenVPN HA 叢集設置,您可以結合使用 OpenVPN、WAN 負載平衡和 OSPF。這裡有一個新的 HOWTO: http://www.vyatta4people.org/highly-available-openvpn-connection- Between-two-offices/ 享受!