返回

高可用性(HA)功能

高可用性功能是指當物理主機故障時,自動在另一台正常運行的主機上「重新啟動」(稱為故障轉移)的虛擬機功能。因此,必須事先在虛擬機的客戶作業系統內進行安排,以便系統能夠自動恢復。

使用 HA 的條件是什麼?

要在 HRPC KVM 版本中使用 HA,必須滿足以下條件:

  1. 由三台或更多配置相同的節點組成的虛擬資料中心。
  2. 必須是 HCI 類型或三層類型,因為需要共享儲存(Ceph、帶 ES 的 ESF)。
  3. 設備上必須有足夠的備用容量(特別是記憶體)。重要的是,總共至少有一個節點的記憶體是空閒的。
    *例如,在由三個節點組成的虛擬資料中心中,總共只能使用兩個節點的記憶體。
  4. 確保虛擬機已進行備份
    我們強烈建議您與備份儲存或類似服務簽訂合約,並設置虛擬機的定期備份。

如何啟用 HA 功能?

若要啟用 HA 功能,首先在左側面板中選擇資料中心,在中間面板中開啟 HA,然後點擊「群組」。

在右側面板中點擊「創建」按鈕,建立一個 HA 群組 ID,並勾選與 HA 相關的主機。在與 HA 相關的主機上創建虛擬機時,必須準備至少一台物理主機的備用記憶體。如果您以總共四台配備 768GB 記憶體的 HRPC 參與 HA,則其餘三台機器需要有 768GB 的空閒記憶體,以便即使一台 HRPC 發生物理故障,其他設備仍能繼續運行。若未勾選 HA 群組,即使位於同一資料中心,也將被忽略作為 HA 目標。

若故意將某主機從 HA 群組中移除,且勾選了 HA 群組設置中的「受限」,則屬於該 HA 群組的虛擬機無法在被移除的主機上啟動。

若勾選了「nofailback」,當故障的物理節點重新啟動並恢復時,虛擬機不會被還原,而是繼續在目標位置運行。若未勾選「nofailback」,它們將透過即時遷移返回原始節點,從而允許嚴格管理節點主機和虛擬機的放置。然而,若物理節點變得不穩定並反覆重啟,HA 將再次啟動,虛擬機將反覆重新啟動。因此,我們建議勾選「nofailback」。

此外,雖然即時遷移是一個很少失敗的功能,但會有瞬間的內部中斷,可能對即時軟體造成問題。

如何為虛擬機啟用 HA?

除非虛擬機處於 HA 管理之下,否則 Proxmox HA 不適用。

要將虛擬機置於 HA 管理之下,請選擇該虛擬機,並從右上方的「更多▼」下拉選單中選擇「管理 HA」。從群組中選擇您上述配置的 HA 群組 ID,將期望狀態設為「已啟動」,然後點擊「新增」按鈕。

此虛擬機現已處於 HA 控制之下。

HA 運作範圍因虛擬化管理程式而異。在 VMware 中,當在虛擬資料中心啟用 HA 時,它會影響虛擬資料中心中的所有虛擬機;而在 XenOrchestra 中,僅影響啟用了 HA 並設為「重新啟動」的池中的虛擬機。

HA 群組中節點(主機)的維護重啟與虛擬機的關係

當屬於 HA 群組的節點因維護而重啟(非意外故障)時,虛擬機的行為將取決於其是否處於 HA 管理之下而有所不同。

處於 HA 管理下的虛擬機 即時遷移至另一台機器
未受 HA 管理的虛擬機 自動關閉並在重啟後保持關閉狀態

專欄

HA 功能的限制

HA 功能存在限制,使用 HA 時可能會出現一些問題。

  1. 虛擬機意外重新啟動
  2. 虛擬機資料損壞

簡單來說,HA 是當某個節點故障時,能從另一個節點啟動虛擬機的能力,但這是從上帝視角來看的工作方式,實際的軟體邏輯必須以完全不同的方式實現。

首先,無法嚴格定義三個節點(即節點 A、節點 B 和節點 C)中某個特定節點的「故障」是什麼。HA 是透過各節點之間協調工作來實現的。

當節點 A 與節點 B 失去通訊時,不清楚是節點 B 發生故障,還是節點 A 與節點 B 之間的通訊僅僅是中斷。若從節點 A 的角度看,它能與節點 C 通訊,則可以設想節點 B 可能已發生故障。

然而,若託管在節點 B 上的虛擬機資料在共享儲存上不斷更新,節點 B 可能完全被隔離。

在上述例子中,若節點 A 和節點 C 正在通訊,則節點 B 很可能是故障的。因此,節點 A 和節點 C 將嘗試自行啟動託管在節點 B 上的虛擬機。

然而,節點 B 可能並未故障,而只是被隔離。若某節點判定自己被隔離,它將立即關閉其託管的虛擬機,以準備節點 A 和節點 C 可能啟動,這就是上述提到的意外重啟原因。

那麼,若節點 B 未關閉會發生什麼?

若同一虛擬機同時在節點 B 和另一個節點上運行,虛擬機的虛擬磁碟將瞬間損壞,這將導致上述提到的虛擬機資料毀壞。

因此,您的選擇是重啟或毀壞資料。

HA 需要在各節點之間協調,以判斷是節點宕機、僅僅失去通訊還是運行緩慢。

若上述兩種故障互斥,您希望避免的是資料損壞,因此應立即關閉。

此決定是間隔性進行的,Proxmox 每 2 分鐘執行一次。若 2 分鐘內無回應,則判定「主機已故障」。因此,至少會有 2 分鐘的停機時間 + 虛擬機啟動所需的時間(實際上會更長)。

然而,若節點速度變慢、記憶體被換出、氣球驅動程式的記憶體回收導致暫時減速,或儲存寫入速度變慢,兩分鐘可能很快過去,無法及時關閉。因為必須保護的是資料,系統會自動使用看門狗計時器或類似設備,私有雲運行在配備即使主機內核停止回應也能自動重啟內核的硬體上。