當虛擬環境中實體機發生故障時會發生什麼?

當虛擬環境中實體機發生故障時會發生什麼?

我正在開始使用虛擬化,所以請耐心等待。

在虛擬環境中,應用程式在虛擬機器管理程式層中運作。因此,一台實體機上可以有許多運行多個應用程式的虛擬機器。

到目前為止,一切都很好?

那麼當實體機發生故障時會發生什麼事呢?這不會導致許多應用程式在一台機器上全部失敗嗎?

我正在尋找開發私有雲開放式堆疊,但我想先充分了解虛擬化。

答案1

具體細節取決於您使用的特定虛擬化解決方案,但其想法是您有一個虛擬場,其中有許多實體主機,每個主機都有多個虛擬機器。然後你使用一些無需為每個虛擬機器配備實體主機,從而在實體機故障時留有足夠的開銷來應對,從而提高效率。

此外,您可以在公共(冗餘)SAN 上找到每個虛擬機器的 VHD。每個實體主機上的虛擬機器管理程式可以設定為相互通訊並共享來自不同虛擬機器的記憶體。存在一定的延遲,並且大部分記憶體將由磁碟支持,但如果其中一台實體主機發生故障,您甚至不需要等待該主機上的虛擬機器啟動備份。相反,這些虛擬機器將自動分佈在其餘主機之間。最終目標是這些機器將從幾乎停止的地方繼續,幾乎沒有停機時間。從某種意義上說,您的所有虛擬機器已經在至少兩台實體主機上運行。在實踐中,現在虛擬機器管理程式一次只能在一台機器上進行這種遷移,因為他們知道這種遷移會在主機發生故障之前發生…但請不要誤會:硬體故障時的即時遷移是所有主要遷移的最終目標。

這就是為什麼您有時會看到伺服器虛擬化到場中的單一實體主機。您可能無法獲得任何硬體效率(您甚至可能失去一些效能),但您可以透過管理一致性和內建高可用性來彌補它。

答案2

如果實體主機發生任何故障,則所有在實體主機上執行的虛擬伺服器都將離線。

也就是說,大多數平台都為單一虛擬機器提供高可用性解決方案。有時,系統是由多個節點建構的,以防止在一個節點發生故障時服務中斷。

如果兩個VM節點組成一個高可用服務,則可以設定虛擬機器管理程式以確保兩個節點不依賴相同的實體基礎架構(容錯)。這可能不僅僅是實體伺服器容錯,包括不同的網路路徑,一直到地理位置不同的位置。

答案3

您的假設是正確的,如果實體機發生故障,虛擬機器也會變得不可用。

但 openstack 可以解決這個問題,並在其他伺服器上啟動發生故障的實體伺服器的虛擬機,或者您可以使用已經分散式的虛擬機管理程式系統,我認為 vsphere 可以做到這一點。

您應該閱讀關於 HA 的 openstack 文檔了解更多。

答案4

關於您的問題 - 是的,您將失去對該實體主機內所有電腦的存取權。當然,這取決於哪個組件發生了故障。如果是磁碟 - 這是一個問題,如果是主機板 - 那就容易多了。一般來說,硬體恢復更容易,因為管理程式與硬體無關。此時,您可以使用許多供應商特定的技術來獲得高度可用的服務。

資源池(vmware) - 是不是如同上面提到的,能夠聚合多個實體主機資源(CPU、記憶體等),因此,如果您有 2 個實體主機(假設 1CPU 四核,沒有超線程 - 每個 8GBRAM),它將不是那裡可能有 5vCPU-12Gb VM。資源池是邏輯資源池,它們無法建立超級運算系統。目前,這是控制資源利用率的一種方法。

可用性(vmware) - 可以使用類似的技術高可用性(HA),它允許您進行自動恢復(根據我的經驗)1-2分鐘),如果您使用儲存陣列(NAS、iSCSI、FC)並將所有虛擬機器檔案保存在那裡,則自動儲存叢集中所有虛擬機器的資料。而且HA僅在CPU、RAM、主機板故障時才起作用,顯然儲存陣列宕機時它將無法運作。為了防止 RAID/控制器故障,人們使用複製、儲存 LUN 鏡像等。

如果無法在 1-2 分鐘內恢復,可以採用以下技術容錯能力(FT),透過保留已設定虛擬機器的影子(運作)副本,可以在發生故障時實現虛擬機器的零停機時間。但這項技術也有很多限制——多vCPU虛擬機器的容錯問題還沒有完全解決。

總的來說,每個解決方案都取決於您的目標。

相關內容