9.2 High Availability

若要建構高可用性的 Linux Virtual Server 叢集,可以使用本軟體的幾項內建功能。一般情況下,在負載平衡器上會執行服務監控精靈,定期檢查伺服器的狀態。如果在指定時間內,某部伺服器對服務存取要求或 ICMP ECHO_REQUEST 沒有回應,則服務監控器就會認為該伺服器已停止執行,將其從負載平衡器中的可用伺服器清單中移除。如此,新的要求將不再傳送至此停止的伺服器。當服務監控器偵測到該停止的伺服器已恢復正常並可重新工作時,會重新將該伺服器新增到可用伺服器清單中。因此,負載平衡器可以自動對服務精靈或伺服器的故障進行遮罩。

此外,管理員也可以使用系統工具新增新的伺服器以提高系統輸送量,或移除伺服器以維護系統,而不需要關閉整個系統服務。

為了防止負載平衡器成為整個系統的單一故障點,須設定一或多個負載平衡器的備份。兩個活動訊號精靈分別在主要負載平衡器和備份負載平衡器上執行。這兩個精靈會透過序列線和/或網路介面定期相互傳送 I'm alive (我存在) 的活動訊號訊息。如果在指定時間內,備份負載平衡器的活動訊號精靈無法監聽到主要負載平衡器的活動訊號訊息,便會接管虛擬 IP 位址以提供負載平衡服務。

如果發生故障的負載平衡器恢復正常,則可能會產生兩種結果:其自動成為備份負載平衡器,另一種結果是使用中的負載平衡器會釋放 VIP 位址,以便讓恢復正常的負載平衡器接管 VIP 位址,重新成為主要負載平衡器。主要負載平衡器瞭解各連線的狀態,也就是說它知道連線應轉遞至哪部伺服器。若備份負載平衡器接管了工作卻不知道該連線資訊,則用戶端必須重新傳送其要求才能存取服務。為了使負載平衡器的容錯移轉對用戶端應用程式透明化,IPVS 中提供了連線同步功能:主要 IPVS 負載平衡器可透過 UDP 多路廣播將連線資訊同步到備份負載平衡器中。如果備份負載平衡器在主要負載平衡器失敗後接管了工作,備份負載平衡器將會瞭解大多數連線的狀態,這樣基本上所有連線便可繼續透過備份負載平衡器存取服務。