Linux
高可用性 OpenVPN 服務
我目前正在設計一個 OpenVPN 服務來為網際網路使用者提供增強的隱私。
到目前為止,我打算使用執行 CentOS 和 Xen 的專用伺服器來提供多個域,每個域都有一個 OpenVPN 伺服器,以實現高可用性和負載平衡。
- 如果一個 domU 出現故障,我想在同一主機上自動啟動第二個 domU。這種類型的故障轉移可能嗎?
- 是否有任何解決方案可以對與 domU 伺服器的 VPN 連接進行負載平衡?
- 是的,可以監控 Xen DomU 的狀態,並在 DomU 失敗時執行一些任意命令。您可以在檢查主要 OpenVPN DomU 的第三台主機(DomU 或物理主機)上執行 Monit 守護程序的實例,並告訴 Dom0 在主要主機出現故障時啟動輔助 DomU。Monit 文件有很多範例可以向您展示如何實現這一點:
- 是的,OpenVPN 內置了一些高可用性和/或負載共享功能,而且設置起來非常簡單。
首先,您將並行執行多個 OpenVPN 伺服器,每個伺服器偵聽自己的 IP 地址。伺服器不共享狀態,並且它們彼此不知道任何資訊。
然後,您可以在命令行或 OpenVPN 客戶端的配置文件中指定多個“–remote”選項。當客戶端有多個可用的遠端伺服器選項時,它會隨機選擇一個並與之建立連接。如果該伺服器失敗,它將重新嘗試連接,如果連接失敗,則隨機選擇不同的伺服器。有關更多資訊,請參閱此處的 OpenVPN 文件:
您可能想在此處查看我對類似問題的回答:
正如我在其他答案中所述,您可能需要注意這些客戶端選項,特別是:
- 連接重試
- 連接重試最大值
- 遠端隨機
- ifconfig-pool-persist
當然,這不是真正的負載平衡,因為 OpenVPN 客戶端不會選擇負載最低的伺服器或客戶端最少的伺服器——它只是隨機選擇一個伺服器。如果您需要真正的負載平衡來確保伺服器負載保持均衡,您將需要找到某種專用的負載平衡解決方案,無論是硬體還是軟體。