使用 HAProxy 或 Nginx 在 VPS 之間進行負載均衡
我想負載平衡+故障轉移備份託管在不同提供商上的多個 vps 網路伺服器。
我聽說對於 HAProxy,您需要同一子網下的多個伺服器,以及負載均衡器之間的共享(虛擬)IP 地址。
但在我的情況下這是不可能的,因為每個 VPS 都在不同的節點/網路上。
- 有沒有辦法在這種設置中使用 HAProxy?(請解釋一下,我不想听到你的“是”回答)
- NginX 呢?是否可以使用 Nginx 實現相同的結果?(當伺服器位於不同的網路上時)
我知道 Round Rubin DNS,但它沒有提供真正的故障轉移解決方案,也沒有提供伺服器之間的負載平衡。
負載平衡和高可用性(HA)是兩個不同的東西。
是的,您可以使用 NginX 為兩個或更多節點配置負載平衡,無論它們位於何處。
對於負載平衡,您有:
DNS -> 服務 IP -> 負載平衡器 -> AppSrv1,AppSrv2,…,AppSrvn -> 一個或多個後端
對於高可用性 (HA),您有:
- Active/Passive:
正常工作情況:
DNS -> Virtual Service IP (assigned on LB1) -> AppSrv1,AppSrv2,…,AppSrvn -> 一個或多個 Backends 如果 LoadBalancer1 (LB1) 中斷:
Hartbeat 將 VirtualIP 分配給 LB2
DNS - > 虛擬服務 IP(在 LB2 上分配)-> AppSrv1,AppSrv2,…,AppSrvn -> 一個或多個後端
- 主動/主動:
DNS -> VirtIP1 (LB1),VirtIP2 (LB2), VirtIPn (LBn) -> AppSrv1,AppSrv2,…,AppSrvn -> 一個或多個後端
基本上,負載均衡器會根據客戶端 IP 創建散列,並將具有此散列的所有流量轉發到同一個 AppSrv(以保留會話等)。您可以配置首選 AppSrv、故障轉移 AppSrv 等
您可以在所有 VPS 上使用 LB 進行配置,將流量轉發到本地 AppSrv(相同的 VPS),如果該 AppSrv 無法訪問,則轉發到“備份”VPS。但是這種實施在很多層面上都存在問題……