Linux

高可用性 OpenVPN 服務

  • June 16, 2011

我目前正在設計一個 OpenVPN 服務來為網際網路使用者提供增強的隱私。

到目前為止,我打算使用執行 CentOS 和 Xen 的專用伺服器來提供多個域,每個域都有一個 OpenVPN 伺服器,以實現高可用性和負載平衡。

  1. 如果一個 domU 出現故障,我想在同一主機上自動啟動第二個 domU。這種類型的故障轉移可能嗎?
  2. 是否有任何解決方案可以對與 domU 伺服器的 VPN 連接進行負載平衡?
  1. 是的,可以監控 Xen DomU 的狀態,並在 DomU 失敗時執行一些任意命令。您可以在檢查主要 OpenVPN DomU 的第三台主機(DomU 或物理主機)上執行 Monit 守護程序的實例,並告訴 Dom0 在主要主機出現故障時啟動輔助 DomU。Monit 文件有很多範例可以向您展示如何實現這一點:
  1. 是的,OpenVPN 內置了一些高可用性和/或負載共享功能,而且設置起來非常簡單。

首先,您將並行執行多個 OpenVPN 伺服器,每個伺服器偵聽自己的 IP 地址。伺服器不共享狀態,並且它們彼此不知道任何資訊。

然後,您可以在命令行或 OpenVPN 客戶端的配置文件中指定多個“–remote”選項。當客戶端有多個可用的遠端伺服器選項時,它會隨機選擇一個並與之建立連接。如果該伺服器失敗,它將重新嘗試連接,如果連接失敗,則隨機選擇不同的伺服器。有關更多資訊,請參閱此處的 OpenVPN 文件:

您可能想在此處查看我對類似問題的回答:

正如我在其他答案中所述,您可能需要注意這些客戶端選項,特別是:

  • 連接重試
  • 連接重試最大值
  • 遠端隨機
  • ifconfig-pool-persist

當然,這不是真正的負載平衡,因為 OpenVPN 客戶端不會選擇負載最低的伺服器或客戶端最少的伺服器——它只是隨機選擇一個伺服器。如果您需要真正的負載平衡來確保伺服器負載保持均衡,您將需要找到某種專用的負載平衡解決方案,無論是硬體還是軟體。

引用自:https://serverfault.com/questions/114858