126 期 - 啟用 vSphere FT 容錯機制,享受 VM 超高可用性運行


網管人雜誌

本文刊載於 網管人雜誌第 126 期 - 2016 年 7 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

前言
vSphere FT 運作架構
          運算資源(Compute)
          儲存資源(Storage)
          運作狀態(Runtime State)
          網路資源(Network)
          透明容錯移轉(Transparent Failover)
          啟用 vSphere FT 技術的注意事項
          最佳作法
          vSphere FT 效能測試
實作 vSphere FT 高可用性機制
結語





前言

VMware 虛擬化平台的最新版本 VMware vSphere 6.0,已經在 2015 年 3 月時正式發行。之後,在 2015 年 9 月時推出 VMware vSphere 6.0 Update 1(簡稱 6.0 U1),此版本中主要增強功能為 VAIO、停用 SSLv3 支援、支援 VSAN 6.0 Update 1 跨地理位置之叢集運作架構。

接著,在 2015 年 10 月時推出 VMware vSphere 6.0 Update 1a(簡稱 6.0 U1a)版本,並在 2016 年 1 月時推出 VMware vSphere 6.0 Update 1b(簡稱 6.0 U1b)版本,主要為修正虛擬化平台 ESXi 與 Active Directory 之間 Kerberos 通訊,以及低延遲 VM 虛擬主機會獨佔運算核心的修正。

現在,最新的 VMware vSphere 6.0 Update 2(簡稱 6.0 U2)版本,已經於 2016 年 3 月時正式推出,此版本當中的重要增強功能及修正如下(有關 VMware ESXi 6.0 Updtae 2 重要功能及修正的詳細資訊,請參考 VMware ESXi 6.0 U2 Release Notes):

  • 高速乙太網路: 從 ESXi 6.0 U2 版本開始,ESXi 虛擬化平台支援 25 Gbps 及 50 Gbps 乙太網路。
  • VMware Host Client: 採用 HTML 5 技術的 VMware Host Client(由 VMware Labs 當中的 Embedded Host Client 演化而來),可以用於連線管理「單台」ESXi 主機,例如,建立 VM 虛擬主機、調整虛擬網路、儲存資源……等。同時,VMware 也正式宣告舊有的 vSphere C# Client 將不會在下一版本的 vSphere 中出現。
  • VMware VSAN 6.2: 最新的 VMware Virtual SAN 6.2 版本,正式與 ESXi 6.0 Update 2 版本綁定在一起。因此,當企業及組織將底層虛擬化平台升級為 ESXi 6.0 U2 版本時,便能直接建構 VMware VSAN 6.2 軟體定義儲存運作環境。
  • VAIO 支援 IPv6 網路環境: 在純 IPv6 網路環境中,ESXi 6.0 U2 運作環境中的 VAIO(vSphere APIs for I/O Filtering)已經支援 VASA Provider。同時,也正式支援 VMIOF 1.0 與 1.1 版本。
  • 停止支援 AMD 部分處理器: 目前在 vSphere 5.x 版本中,支援的 AMD Opteron 12xx、22xx、82xx 系列處理器,從 vSphere 6.0 U2 開始將不再繼續支援。
  • VCSA 外部資料庫: 在未來的主要版本中,VMware 將不支援採用 Oracle 11g 和 12g 當成 VCSA(vCenter Server Appliance)的外部資料庫。
  • 修正 VXLAN 與 Netflow 問題: 在先前版本中,於 VXLAN 網路虛擬化運作環境內啟用 Netflow 功能時,可能導致 ESXi 發生 PSOD 的問題已經解決。
  • 新版 VMware Tools: 在 ESXi 6.0 U2 版本中 VMware Tools 將採用最新的 10.0.6 版本,並解決先前版本中在 IGMP 運作環境的問題。


當企業或組織將 vSphere ESXi 虛擬化平台,升級至最新的 ESXi 6.0 U2 版本之後。倘若,vCenter Server 與 vSphere Web Client 發生故障無法使用時,管理人員只需要透過內建的 VMware Host Client 機制,開啟瀏覽器並在網址欄鍵入「https://<FQDN or IP of host>/ui」,便可以連線至單台 ESXi 主機進行管理作業,而無須依靠必須額外安裝的舊有 vSphere C# Client。

圖 1、VMware Host Client 操作示意圖 





vSphere FT 運作架構

VMware vSphere FT(Fault Tolerance)運作機制,在於能夠提供 VM 虛擬主機中運作服務或應用程式高可用性,當運作在 ESXi 虛擬化平台上的 VM 虛擬主機啟用 vSphere FT 特色功能後,當原本所運作的 ESXi 虛擬化平台發生硬體故障事件時,那麼 vSphere FT 機制將會以類似 vSphere vMotion 的遷移技術,讓身處於另一台 ESXi 虛擬化平台上的次要 VM 虛擬主機立即接手,原有 VM 虛擬主機的服務及應用程式。

簡單來說,啟用 vSphere FT 機制後的 VM 虛擬主機,將能夠在「主機層級(Host Level)」的部分達到零停機時間(Zero Downtime)、零資料遺失(Zero Data Loss)、零連線遺失(Zero Connection Loss)的目的。

事實上,vSphere FT 的運作機制,就是在 VMware vSphere Cluster 當中的 2 台 ESXi 主機內,分別運作受到 vSphere FT 機制保護的 VM 虛擬主機,稱之為「主要 VM 虛擬主機(Primary VM)」以及「次要 VM 虛擬主機(Secondary VM)」。

這 2 台啟用 vSphere FT 機制的 VM 虛擬主機,一定會運作在叢集中「不同台」ESXi 虛擬化平台上。基本上,雖然次要 VM 虛擬主機是獨立的執行個體,有自己的 VM 虛擬主機檔案(包括 VMX 組態設定檔案、VMDK 虛擬硬碟檔案……等),但是它的運作狀態以及網路識別皆與主要 VM 虛擬主機相同。

值得注意的是,倘若企業或組織採用的是舊版 vSphere 4.x5.x 虛擬化平台的話,當 VM 虛擬主機啟用 vSphere FT 機制之後,在主要及次要 VM 虛擬主機之間將透過 VMware vLockstep 技術,採用「Record-Replay」資料同步方式。

圖 2、舊版 vSphere FT(Record-Replay)運作示意圖 

在最新版本 vSphere 6.0 虛擬化平台中,vSphere FT 的資料同步機制則改採「Fast Checkpointing」方式,它的運作機制是透過 xvMotion(Cross-vCenter vMotion),透過持續執行 Checkpoints(Multiple/Sec)的動作,以達成主要及次要 VM 虛擬主機之間,例如,儲存資源、運作狀態、網路……等資料同步作業,進而達到「透明容錯移轉(Transparent Failover)」的目的。

圖 3、新版 vSphere FT(Fast Checkpointing)運作示意圖 



運算資源(Compute)

首先,針對受 vSphere FT 機制保護的 VM 虛擬主機,在運算資源的部分倘若是採用舊版 vSphere 4.x 5.x 虛擬化平台的話,那麼啟用 vSphere FT 機制的 VM 虛擬主機,便僅能配置「1 vCPU」的虛擬處理器運算資源。但是,最新版本的 vSphere 6.0 啟用 FT 功能的 VM 虛擬主機,則可以配置「1、2、4 vCPU」虛擬處理器運算資源。

請注意,必須採用 vSphere 6.0 的 Enterprise Plus 軟體授權版本才支援 4 vCPU,若採用的是 StandardEnterprise 版本的話,啟用 vSphere FT 機制的 VM 虛擬主機則最多只能支援 2 vCPU



儲存資源(Storage)

在 VM 虛擬主機的儲存資源部分,倘若採用舊版 vSphere 4.x 5.x 虛擬化平台時,那麼啟用 vSphere FT 機制的 VM 虛擬主機,除了能有任何「快照(Snapshot)」之外,虛擬磁碟也僅能使用「EZT(Eager Zeroed Thick)」格式。

但是,最新版本的 vSphere 6.0 啟用 vSphere FT 功能的 VM 虛擬主機,除了 VM 虛擬主機能夠建立快照之外,在 VMDK 虛擬磁碟的部分則支援所有磁碟格式,也就是「Thin、Thick、EZT」3 種格式都支援。

當 VM 虛擬主機啟用 vSphere FT 機制進行保護後,那麼系統便會自動在 2 台 VM 虛擬主機之間,啟用 VMware vSphere Storage vMotion 機制,針對 VMDKs 虛擬磁碟進行資料初始化及同步作業,確保主要及次要 VM 虛擬主機擁有「相同」的資料內容及磁碟狀態。

值得注意的是,協同 vSphere FT 運作的 vSphere Storage vMotion 機制,僅在下列 3 種情境時才會觸發其運作機制:

  1. 當 VM 虛擬主機啟用 vSphere FT 機制時。
  2. 當受到 vSphere FT 機制保護的主要 VM 虛擬主機,其底層的 ESXi 虛擬化平台發生故障事件。此時,服務及應用程式由次要 VM 虛擬主機接手,並且轉換身份為主要 VM 虛擬主機,同時在另外存活的 ESXi 主機上建立次要 VM 虛擬主機時。
  3. 當啟用 vSphere FT 機制的 VM 虛擬主機,其運作狀態由 Powered-Off 轉變成 Power-On 時。


當 vSphere FT 機制觸發 vSphere Storage vMotion 機制,將主要及次要 VM 虛擬主機進行資料同步作業完成後,那麼系統便會確認主要及次要 VM 虛擬主機已經受到 vSphere FT 機制保護。此外,當資料同步作業完成後,後續主要及次要 VM 虛擬主機之間的資料同步機制,將會改為採用「鏡像 VMDK 寫入(Mirror VMDK Write)」的方式,以確保兩造之間資料仍維持同步狀態。

圖 4、vSphere FT 機制保護 VM 虛擬主機服務及應用程式示意圖 



運作狀態(Runtime State)

受到 vSphere FT 機制保護的 VM 虛擬主機,首先必須確保在 vSphere Cluster 運作架構中,所有的 ESXi 主機都已經規劃專屬且高速的 FT Network(建議採用 10 Gbps 網路環境),以便 vSphere FT 運作機制能夠將主要 VM 虛擬主機的運作狀態(包括,記憶體狀態、執行程序狀態……等),透過專屬且高速的 FT Network 傳送至次要 VM 虛擬主機。

因此,當主要 VM 虛擬主機所處的底層 ESXi 主機發生故障事件時,次要 VM 虛擬主機能夠瞬間接手原有主要 VM 虛擬主機提供的所有服務及應用程式。



網路資源(Network)

在網路資源的部分,受到 vSphere FT 機制保護的 VM 虛擬主機,也會結合底層 ESXi 主機的網路虛擬化機制,以便次要 VM 虛擬主機接手原有主要 VM 虛擬主機服務或應用程式時,不會發生資料遺失或連線遺失的情況。

當 ESXi 主機發生故障事件觸發 vSphere FT 機制後,系統將會以類似 vSphere vMotion 遷移技術,除了保留主要 VM 虛擬主機的 MAC 位址之外,當次要 VM 虛擬主機接手主要 VM 虛擬主機所有服務及應用程式後,此時次要 VM 虛擬主機除了轉換角色為主要 VM 虛擬主機之外,也會發送「ARP」封包通知實體網路交換器更新 MAC 位址,讓原本使用者的網路連線能夠順利且無縫的轉移到接手的 VM 虛擬主機中。

因此,受到 vSphere FT 機制保護的 VM 虛擬主機,在發生故障事件時接手服務及應用程式的過程,並不會導致使用者資料遺失或連線中斷的情況。

圖 5、規劃專屬且高速的 vSphere FT 網路頻寬 



透明容錯移轉(Transparent Failover)

vSphere FT 與 vSphere HA 高可用性機制不同的地方在於,當 Cluster 內的 ESXi 主機發生非計劃性故障損壞事件時,受到 vSphere HA 高可用性機制所保護的 VM 虛擬主機,會從 Cluster 中其它存活的 ESXi 主機上「重新啟動」,因此 VM 虛擬主機上所運作的服務或應用程式,大約會發生 2 ~ 5 分鐘的中斷時間(實務上,必須視共用儲存設備的運作效能及工作負載情況而定)。

反觀 vSphere FT 高可用性機制,因為平時主要及次要 VM 虛擬主機之間,已經透過 Fast Checkpointing 技術將 2 台主機之間進行資料同步作業。因此,當 Cluster 內的 ESXi 主機發生非計劃性故障損壞事件時,雖然主要 VM 虛擬主機故障損壞無法提供服務,但是次要 VM 虛擬主機將會立即接手所有服務及應用程式,並且將角色由「次要(Secondary)」轉變成為「主要(Primary)」。

同時,在其它 ESXi 主機上再建立 1 台新的次要 VM 虛擬主機,並將目前的資料透過 vSphere Storage vMotion 機制進行資料同步,所以在 VM 虛擬主機的服務及應用程式接手期間,並沒有任何中斷時間(Zero Downtime)、資料遺失(Zero Data Loss)、連線遺失(Zero Connection Loss)等情況發生。

圖 6、vSphere FT 高可用性機制沒有任何中斷時間、資料遺失、連線遺失等情況發生 



啟用 vSphere FT 技術的注意事項

雖然,相較於 vSphere HA 來說 vSphere FT 高可用性機制提供更即時的保護,但是仍有下列限制以及注意事項必須考量:

  • 啟用 vSphere FT 機制的 VM 虛擬主機,最多僅支援至 4 vCPU64 GB Memory,這樣的 VM 虛擬主機運作規模並無法承受大型虛擬化架構的工作負載。
  • 啟用 vSphere FT 機制的 VM 虛擬主機,vCPU 及 vRAM 虛擬資源將會重置為「保留(Reservation)」狀態且無法更改,虛擬磁碟也無法增加或刪除。
  • vSphere FT 高可用性機制,主要是因應 ESXi 主機發生硬體故障事件(Host Level),而無法因應 VM 虛擬主機當中運作的服務或應用程式發生的軟體故障事件(Application Level)。
  • vSphere FT 機制無法因應主機進行更新或修復作業,所產生的停機時間。
  • 啟用 vSphere FT 機制後,除了多出 1 台次要主機增加資源消耗之外,由於 2 台主機之間會有大量且頻繁的同步資料行為,因此需要規劃專屬且高速 10 Gbps 的 VMkernel 網路環境。



最佳作法

啟用 vSphere FT 高可用性機制之後,除了 2 台 VM 虛擬主機之間會有頻繁的資料同步之外,對於 VM 虛擬主機的工作負載也會有些許的影響,透過下列所建議的最佳作法,將能有效提升 VM 虛擬主機的運作效能表現。

避免 Large Packet Loss
不管採用的是舊版 ESXi 4.x、5.x 或新版 ESXi 6.0 虛擬化平台,當 VM 虛擬主機使用 VMXNET3 虛擬網路卡時,倘若在網路頻寬發生突發性爆增網路流量時,有可能會發生大型封包遺失的情況。主要發生的原因在於,預設情況下 VMXNET3 虛擬網路卡的收送緩衝區空間較小所導致。

詳細資訊請參考 VMware KB 2039495KB 1010071

因此,建議啟用 vSphere FT 功能的 VM 虛擬主機,應該要將預設的緩衝區空間進行調整。請登入 VM 虛擬主機當中的 Windows 作業系統之後,依序點選「開始 > 控制台 > 裝置管理員 >  vmxnet3 > 內容 > 進階」後點選「Small Rx Buffers」項目,預設值為 512 請調整至最大值為「8192」。

圖 7、調整 Small Rx Buffers 至最大值 8192

接著,點選「Rx Ring #1」項目後,預設值為 1024 請調整至最大值為「4096」。

圖 8、調整 Rx Ring #1 Size 至最大值 4096


必要更新(Patch ESXi600-201504401-BG)
此外,當 VM 虛擬主機(作業系統版本 Windows XP 及後續版本),並且採用 vSphere ESXi 6.0 虛擬化平台,以及搭配最新的虛擬硬體版本 11.0。倘若,發現啟用 vSphere FT 高可用性機制後,VM 虛擬主機的工作負載明顯下降時,那麼請確認是否已經安裝 Bugfix 更新「Patch ESXi600-201504401-BG」,以避免因為未修正此臭蟲而導致運作效能降低。

值得注意的是,安裝完此 Bugfix 之後 ESXi 主機必須重新啟動才能套用生效。

詳細資訊請參考 VMware KB 2111975KB 2111976



vSphere FT 效能測試

相信許多 IT 管理人員,對於 VM 虛擬主機啟用 vSphere FT 高可用性機制後,對於 VM 虛擬主機的工作負載有多大影響應該很好奇。接下來,將針對啟用 vSphere FT 高可用性機制的 VM 虛擬主機,在運算資源(CPU)、儲存資源(Disk)、網路資源(Network)等 3 方面,分別觀察其運作效能表現。

運算效能測試 
此運算效能測試環境中,採用 Linux 核心編譯(Kernel Compile)進行測試,這是原有的 CPU 及 MMU 工作負載並且同時執行並行的執行程序,此測試工作負載將會針對磁碟進行一些資料的讀取及寫入行為,但是並不會產生網路流量。

如下圖所示,你可以看到當 VM 虛擬主機啟用 vSphere FT 機制後,雖然進行核心編譯工作負載的時間有一段差距,但是隨著 VM 虛擬主機配置的 vCPU 虛擬處理器數量增加,則之間的落差也逐漸縮小,當配置最大 4 vCPU 時差距縮小至只相差 7 秒鐘而已。

圖 9、運算效能(數值越小越佳)- VM 虛擬主機啟用及停用 vSphere FT 機制效能測試 


儲存效能測試 
在儲存效能測試的部分,採用 IOMeter 這個通用的 I/O 效能測試工具,分別採用 2 KB、64 KB 的區塊大小,針對啟用及停用 vSphere FT 機制的 VM 虛擬主機,進行儲存效能的工作負載測試。

如下圖所示,你可以看到工作負載的測試結果幾乎相差無幾,甚至某些測試條件下啟用 vSphere FT 機制的 VM 虛擬主機,在儲存效能表現上反而更佳。

圖 10、儲存效能(數值越大越佳)- VM 虛擬主機啟用及停用 vSphere FT 機制效能測試 


網路效能測試 
在網路效能測試的部分,採用 Netperf 這個通用的網路效能測試工具,分別針對 1 Gbps、10 Gbps 網路環境,啟用及停用 vSphere FT 機制的 VM 虛擬主機,進行網路效能的工作負載測試。

從測試結果中可以看到,在 1 Gbps 網路環境時工作負載的測試結果幾乎相差無幾。值得注意的是,在 10 Gbps 網路環境時開啟 vSphere FT 機制的 VM 虛擬主機,在網路封包的「接收(Receive)」部分效能表現不佳。

圖 11、1 Gbps 網路效能(數值越大越佳)- VM 虛擬主機啟用及停用 vSphere FT 機制效能測試

圖 12、10 Gbps 網路效能(數值越大越佳)- VM 虛擬主機啟用及停用 vSphere FT 機制效能測試 





實作 vSphere FT 高可用性機制

至此,相信你已經了解 vSphere FT 的運作架構、相關注意事項以及最佳作法。建議你應該再參考 VMware KB 1013428KB 1008027,以便了解啟用 vSphere FT 技術的相關 FAQ 及其它注意事項。

事實上,一切條件準備妥當後啟用 vSphere FT 高可用性機制非常簡單。首先,請先確認 Cluster 已經「啟用 vSphere HA(Turn on vSphere HA)」功能。

圖 13、確認 Cluster 啟用 vSphere HA 功能

接著,在規劃用於 vSphere FT 網路的 VMkernel Port 中,確認勾選「Fault Tolerance logging」項目,表示此 VMkernel Port 負責屆時 2 台 VM 虛擬主機之間資料同步用。

圖 14、勾選 Fault Tolerance logging 項目

然後,在 vSphere Web Client 管理介面中,點選欲啟用 vSphere FT 高可用性機制的 VM 虛擬主機,依序點選「Actions > All vCenter Actions > Fault Tolerance > Turn On Fault Tolerance」,接著選擇 VM 虛擬主機檔案要存放的 Datastore 及 ESXi Host 即可順利啟用。

當 vSphere FT 機制啟用時,此時原本的 VM 虛擬主機便會轉換成為「主要」VM 虛擬主機的角色,同時系統便會自動在剛才你所選擇的 ESXi 主機上建立「次要」VM 虛擬主機,並觸發 vSphere Storage vMotion 機制同步 2 台 VM 虛擬主機之間的資料。

由 vSphere FT 機制所觸發的 vSphere Storage vMotion 動作,將會在背景自動運作在 Recent Tasks 視窗中並不會看到此項工作任務。

當主要及次要 2 台 VM 虛擬主機完成資料同步作業後,此時主要 VM 虛擬主機圖示將由「淡藍色」轉變成為「深藍色」,並且點選該 VM 虛擬主機的「Summary」頁籤後,將會看到多出 Fault Tolerance 區塊,並且在 Fault Tolerance Status 欄位看到為「Protected」。

此時,便可以確認 vSphere FT 機制已經順利啟用,並且在此實作環境中可以看到次要 VM 虛擬主機運作在「esxi02.weithenn.org」主機上。

圖 15、VM 虛擬主機順利啟用 vSphere FT 高可用性機制





結語

透過本文的說明,相信讀者已經了解到 vSphere FT 高可用性機制,能夠在無須建置複雜的高可用性運作環境(相較之下,建構 Windows Failover Cluster 較為複雜),便能幫助企業或組織保護 VM 虛擬主機的服務及應用程式保持高可用性。