
我在同一台電腦上託管了兩個虛擬機,其中一個本質上是活動的,即託管服務並連接到客戶端(客戶端直接在主機上運行)。我必須實現容錯服務,即在主虛擬機發生故障時,用戶端會自動連接到輔助虛擬機,因為兩個虛擬機都託管相同的服務。
我在某處讀到有關浮動IP的信息,但當我檢查時,我發現它是一項付費服務。有什麼簡單的方法可以實現這一目標,而不需要花費任何錢嗎?
這台機器是基於Linux的,具體來說,主機是ubuntu 20.*,虛擬機器是ubuntu 18.*。
答案1
您可以透過以下任一方式實現「浮動 IP」(也稱為 VIP 或虛擬 IP):
- 保持活動 (VRRP)
- 起搏器/corosync
- 鯉魚(http://manpages.ubuntu.com/manpages/precise/man4/carp.4freebsd.html)
僅供參考:您還可以透過讓客戶端從清單中選擇健康的伺服器來實現客戶端的冗餘。
請注意,在虛擬機器之間實現冗餘同一主機不推薦。 (主機是單點故障)
答案2
我建議您在應用程式/虛擬機器之前使用反向代理作為負載平衡器。你可以使用類似nginx
或haproxy
nginx 設定如下所示:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server 192.0.0.1 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
它會自動對上游主機進行健康檢查,因此如果任何上游主機發生故障,nginx會自動偵測到它,從而停止向不健康的主機發送請求。
您可以在以下位置閱讀更多內容: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/