組織規模越大的IT環境往往越重視高可用性(HA),高可用性的時程規劃有執行順序,第一順位是主機硬體故障的HA設計,然後再投入更多的成本來解決服務與應用程式的HA需求。對此,本文將示範vSphere 7.0虛擬機器的熱備援部署。
通常在購買一台標準伺服器的主機時,除了CPU與RAM的規格外,對於硬碟的規格選擇會特別講究,因為除了儲存容量大小與I/O讀寫的速度外,還需要搭配磁碟陣列控制卡(RAID Controller)的配置,來預防發生單一磁碟故障時的容錯機制。
舉例來說,可以選定兩顆磁碟配置為RAID 1來做為系統磁碟,接著選定四顆磁碟配置為RAID 6以當作資料磁碟,最後再配置一顆純熱備援(Host Spare)用途的磁碟。
關於上述常見的磁碟陣列規劃方式,無非是要確保資料儲存的基本安全,以便在發生磁碟故障時主機仍可繼續維持正常運作。如果想要更加保障主機的可用性,可以考慮再添加電源供應器的熱備援。
上述這些做法僅是針對單一實體主機在硬體故障時的容錯機制,然而當有多個虛擬機器需要在這一台主機上運行時,如何預防主機在發生硬體故障、斷電或網路無法連線時,仍可繼續運行提供服務的可用性狀態呢?
答案其實很簡單,只要再多準備一台以上的主機並且建立叢集(Cluster)架構,便可以啟用這個虛擬化平台所支援的HA機制,讓叢集中所有連接共用儲存區的虛擬機器,都享有容錯移轉的熱備援能力,如此一來便可以讓所有運行於這些虛擬機器中的應用程式、服務以及資料庫等系統,同時獲得硬體架構與虛擬化架構的雙重保護。如今像這樣的基礎私有雲的架構部署,早已成為了許多組織在新一代IT基礎建設的規劃重點,並且絕大多數都是選擇以VMware vSphere為主的HA方案。
vSphere HA的運作方式並沒有很複雜,簡單來說,在其叢集中啟用HA功能時,系統會自動完成叢集中每台主機代理程式的部署,接著它會監視叢集中所有的ESXi主機,並自動選擇一台ESXi主機來作為主要主機(Master Host),讓它負責監視所有受保護虛擬機器和次要主機的狀態。
往後,一旦有主機發生故障將會藉由資料存放區活動訊號來確認故障的類型,如果發現主機發生故障而必須重新啟動運行中的虛擬機器時,就會立即在叢集中其他備用的主機上重新啟動,而且虛擬機器重新啟動的優先順序可以由管理員預先配置。
接著就來實際演練一番,過程中將會詳細說明如何在現行的vSphere 7.0基礎架構之下,依序完成iSCSI共用儲存區與網路的準備、叢集的建立與配置、相關問題的排除、虛擬機器容錯移轉測試。最後,則是進一步深入ESXi主機網卡備援的配置講解。
準備iSCSI共用儲存區
關於iSCSI共用儲存區的準備,在如今的IT世界裡已有相當豐富的資源可以選擇,其中包括採用簡易的開源伺服器或商用的進階解決方案。舉例來說,可以到FreeNAS官方網站下載開源免費的映像,自行建立一台NAS主機,或是直接使用Windows Server 2019內建的檔案服務功能,來啟用iSCSI Target服務並完成相關LUN磁碟的配置與權限設定,即可開始提供給接下來要啟用vSphere HA功能的叢集來連接使用。
在此以Windows Server 2019操作為例,首先必須完成安裝「檔案和存放服務」相關伺服器角色,先到「伺服器管理員」介面中,再切換至「檔案和存放服務」的「iSCSI」節點頁面。點選「若要建立iSCSI虛擬磁碟,啟動『新增iSCSI虛擬磁碟精靈』」超連結。隨後,在「iSCSI虛擬磁碟位置」頁面內直接選擇磁碟代號或是輸入自訂的存放路徑,而選定的磁碟最好是已具備RAID容錯設計。
接著,在「iSCSI虛擬磁碟名稱」頁面中,輸入新虛擬磁碟名稱以及描述,資料夾名稱則由系統預設產生,並按下〔下一步〕按鈕。來到「iSCSI虛擬磁碟大小」頁面後,除了需要輸入虛擬磁碟的大小外,還可選擇要採用固定大小、動態擴充還是差異類型的虛擬磁碟。若以效能為優先考量,就選擇「固定大小」。相反地,如果現行可用空間相當有限,則選「動態擴充」。至於「差異」磁碟類型,這裡還使用不到。設定完畢,按下〔下一步〕按鈕。
進入「iSCSI目標」頁面,決定所新增的虛擬磁碟是要指派給現有的iSCSI目標,還是要在此順便新增一個iSCSI目標,本例選擇後者,然後按下〔下一步〕按鈕。接著,在「目標名稱和存取」頁面中輸入一個新的iSCSI目標名稱與描述,以作為後續管理上的識別,再按下〔下一步〕按鈕。
在「存取伺服器」頁面中,加入能夠存取此iSCSI目標的iSCSI啟動器,在本文中所指的就是ESXi主機。如果目前已經有現成的iSCSI啟動器需要連線使用,便可直接點選「新增」來加入,這一項設定也可以待後續完成ESXi主機的儲存裝置介面卡設定後,再回頭修改即可。按下〔下一步〕按鈕,就完成iSCSI Target的新增。
新增iSCSI專用網路
完成iSCSI Target的準備後,接下來到vSphere Client網站上設定相關的連線配置。首先,建議再建立一個連接iSCSI儲存區專用的網路,以便與現行的虛擬機器運行網路流量分隔開來,因此在開始動手之前預先準備一個尚未使用的實體網卡。在此先選定一台叢集下的ESXi主機(例如192.168.7.251),再點選「設定」→「網路」→「虛擬交換器」頁面中的「新增網路」,來開啟如圖1所示的「選取連線類型」設定頁面。選取「VMkernel網路介面卡」,並按下〔NEXT〕按鈕繼續。
在「選取目標裝置」頁面中,建議選取「新增標準交換器」以便建立一個iSCSI專屬的網路連線,然後按下〔NEXT〕按鈕。在「建立標準交換器」頁面中,點選新增小圖示來加上入一個尚未使用的實體網卡,並按下〔NEXT〕按鈕。如圖2所示,在「連接埠內容」頁面中,先輸入網路標籤,再選擇需要的VLAN識別碼、MTU、TCP/IP堆疊等資訊,至於可用服務的選項,可以不用勾選。按下〔NEXT〕按鈕,繼續後面的設定。
在如圖3所示的「IPv4設定」頁面中,由於在前面步驟中已設定新增標準交換器,因此必須進行網路位址配置。選取「使用靜態IPv4設定」,並依序完成IPv4位址、子網路遮罩、預設閘道、DNS伺服器位址。必要的話,可能需要勾選「覆寫此介面卡的預設閘道」設定,然後輸入專屬此網路連線的閘道位址。按下〔NEXT〕按鈕,確認上述設定皆正確後便可完成設定。
回到「設定」→「網路」→「虛擬交換器」頁面中,如圖4所示便可以檢視到新增的標準交換器,以及VMKernel與實體介面卡的對應關係。未來仍可以在此虛擬交換器中執行新增網路、編輯或是管理實體介面。最後,繼續完成叢集中其他ESXi主機的iSCSI網路新增配置。
連接iSCSI共用儲存區
在陸續完成iSCSI Target網路儲存區及iSCSI網路的準備後,接下來得回到vSphere Client網站,使用其內建的軟體式iSCSI Initiator進行連接,並完成資料存放區建立,以作為後續vSphere HA叢集使用。
在選定ESXi主機節點的「設定」→「儲存區」→「儲存裝置介面卡」頁面中,點選「新增軟體介面卡」。如圖5所示,接著選取「新增軟體iSCSI介面卡」選項並按下〔確定〕按鈕。
新增軟體iSCSI介面卡之後,點選至「網路連接埠繫結」子頁面中,點選「新增」來開啟如圖6所示的配置頁面,勾選前面步驟中所建立的iSCSI專屬網路,並按下〔確定〕按鈕。
在選取所新增的軟體iSCSI介面卡並設定好VMkernel介面卡的繫結後,點選至「動態探索」子頁面並點選「新增」,來開啟「新增傳送目標伺服器」視窗。如圖7所示,在「iSCSI伺服器」欄位中輸入前面步驟所建立的iSCSI Target主機IP位址或FQDN,至於「連接埠」,如果iSCSI Target沒有進行過異動,採用預設值即可。設定完成後,按下〔確定〕按鈕。
回到「儲存裝置介面卡」頁面,就會看到已新增的iSCSI伺服器連線設定,以及「由於最近發生組態變更,建議重新掃描[vmba65]」的提示訊息。點選「重新掃描儲存區」,來開啟如圖8所示的頁面,直接按下〔確定〕按鈕。接著,必須為叢集中的每一部ESXi主機皆完成相同設定。
接下來,還需要回到iSCSI Target的Windows Server 2019主機中,完成允許這些ESXi主機的授權配置,如此在後續的操作步驟當中,才能夠正常連接並顯示iSCSI儲存區。圖9所示便是開啟iSCSI Target的內容,並在「啟動器」頁面中透過按下〔新增〕按鈕來加入每一部ESXi主機的iSCSI Initiator,最後按下〔確定〕按鈕。完成iSCSI儲存裝置的掃描與授權後,當點選至「儲存裝置」頁面中便可檢視到所有已授權此ESXi主機連接的儲存裝置。
最後,到ESXi主機節點的「資料存放區」頁面中,如圖10所示透過「動作」選單中的【新增資料存放區】功能,來陸續完成LUN虛擬磁碟連接。值得注意的是,未來如果所連接的資料存放區大小有異動,只要回到此選單中點選【重新掃描儲存區】,即可完成容量更新。
執行過程中必須選擇VMFS類型的資料存放區,以及設定一個全新的名稱並決定所要分配的存放區大小。如圖11所示,便是在「磁碟分割組態」頁面中,所使用的資料存放區大小、區塊大小、空間回收細微度配置,按下〔NEXT〕按鈕完成設定。未來萬一發生現行資料存放區空間不足時,仍然可以進行擴充,只要先到iSCSI Target完成虛擬磁碟大小的擴充,再回到ESXi主機上讓相對儲存裝置的資料存放區完成擴充即可。
建立vSphere叢集
登入vSphere Client網站後,在資料中心節點的「動作」選單中點選【新增叢集】,如圖12所示,在此首先需要輸入新的叢集名稱,並且將「vSphere HA」設定啟用,至於vSphere DRS與vSAN功能是否要一併啟用,可以參考其他相關專文介紹後再來決定。
在此有一項「使用單一映像管理叢集中的所主機」選項,主要用途在於簡化叢集中ESXi 7.0以上版本主機的更新管理,讓它們可以透過繼承相同的映像,來維持主機之間的差異性,並且集中進行相容性檢查、叢集範圍的修復以及升級。須留意的是,一旦使用此功能,便無法使用設定基準的方式進行版本更新與修復功能。設定完畢,按下〔確定〕按鈕。
完成叢集的新增與vSphere HA功能的啟用後,建議切換到叢集「設定」→「組態」→「快速入門」頁面,如圖13所示,在此將可以看到三大步驟,其中第一步驟的「叢集基礎」可以發現已經啟用了vSphere HA功能,後續如果需要進行叢集相關功能的調整,只要在此按下〔編輯〕按鈕即可。接下來,在第二步驟的「新增主機」中按下〔新增〕按鈕,加入更多的叢集主機。
對於已經連接vCenter Server的ESXi 7.0主機,如圖14所示,只要從「現有主機」清單中勾選後,再按下〔下一頁〕按鈕即可看到每一台主機的摘要資訊,確認主機資訊無誤後,即可成功加入叢集。如果要直接將剛完成安裝的多台ESXi主機一次加入至叢集中,可以在「新主機」子頁面中,先輸入所有欲加入主機的位址,再輸入第一台主機的連線帳號與密碼,就能夠勾選「為所有主機使用相同的認證」選項,快速地將多台新主機加入叢集。
完成將選定的主機加入叢集後,如圖15所示便可以在步驟2的「新增主機」資訊中,看到「主機和VC之間的時間已同步」及「所有必要主機均處於維護模式」的訊息提示。可以在此按下〔新增〕按鈕來繼續加入其他主機,或是按下〔重新驗證〕以重新確認主機的狀態。
接下來是最後第三步驟的「設定叢集」,按下〔設定〕按鈕,如圖16所示,將開啟設定叢集的「Distributed Switch」頁面,透過這項功能可以迅速完成分散式交換器的配置,並且在往後的網路配置維護過程中,迅速完成集中配置的設定,而不必像傳統虛擬交換器一樣得逐一手動設定,這裡只需要決定分散式交換器的數目以及各個實體介面卡的對應配置。如果仍希望自行手動配置,則勾選「稍後設定網路設定」選項。按下〔下一步〕按鈕,繼續設定。
來到「進階選項」頁面後,如圖17所示,首先在「主機故障監控」設定部分,一般情況下也必須啟用,因為它主要就是讓叢集中的ESXi主機,彼此監測對方是否還存活著,如此HA的容錯備援機制才能夠正常運行。因此,除非需要進行網路方面的維護作業,才可暫時將此設定取消勾選,否則都保持在勾選狀態。
在「虛擬機器監控」啟用部分,則是讓系統透過對於受保護虛擬機器的VMware Tools訊號進行監視,一旦發生訊號中斷,也就是發生Guest OS(或應用程式)當機時,HA機制便會嘗試重新啟動這個虛擬機器,在此還可以進一步設定其敏感度。等級越高,則嘗試重新啟動的頻率就會越高。
在「許可控制」的啟用設定中,可以自訂容許的主機故障數量,上限是叢集中主機數目減一。而「主機選項」區域內,可以決定是否要啟用鎖定模式功能,以及自訂NTP伺服器位址與選定主機更新喜好設定。其中,若主機處於鎖定模式下,依預設所有操作配置都必須透過vCenter Server連線才能執行
至於EVC(Enhanced VMotion Compatibility)功能是否需要啟用呢?其實EVC是vSphere HA架構下的一項重要功能,也是許多虛擬化平台都會提供的類似功能,因為它可以解決多部ESXi主機在相同叢集架構下、但CPU規格卻不一樣的相容性問題,讓虛擬機器的容錯移轉、vMotion作業一樣可以正常運行。
不過必須注意的是,EVC僅支援相同品牌但不同型號的CPU,無法讓不同品牌的CPU在EVC功能的啟用之下進行HA功能,例如想要讓以Intel與AMD為主的兩種ESXi主機,混搭在相容的叢集中進行各類HA的運行,那肯定是行不通的。
完成上述所有設定後按下〔下一步〕按鈕,接著在「檢閱」頁面內確認所有設定正確,便可以按下〔完成〕按鈕。回到叢集組態快速入門的頁面中,將會發現目前已標示完成網路、叢集以及超聚合式叢集組態符合性配置。
在完成設定叢集的任務後,若只唯一勾選一個資料存放區來存放叢集的活動訊號資料,將會發現在叢集(Cluster)熱備援架構下的每一部ESXi主機摘要頁面中,將出現「此主機的vSphere HA活動訊號資料存放區數目為1,其少於必要數目2」的警示訊息,雖然仍然可以正常運行,但卻會降低整體運行的可靠度。
以本文的Windows Server 2019 iSCSI Target管理而言,若發現只有一個儲存區,那麼在其「工作」選單中點選【新增iSCSI虛擬磁碟】,來加入第二個虛擬磁碟於相同的iSCSI Target配置中,然後完成與叢集中每一部ESXi主機的連接。
接著,再回到vSphere Client的網站中,開啟「編輯叢集設定」頁面,其中在「活動訊號資料存放區」頁面中,如圖18所示,將能夠自行選定活動訊號資料存放區選取規則,包括「自動選取可從主機存取的資料存放區」、「僅使用來自指定清單的資料存放區」、「使用來自指定清單的資料存放區並視需要自動補充」等三種方式,建議採用第三種方式進行配置。
在完成整個vSphere HA的叢集配置後,未來在運行過程中若系統偵測到現行可用的ESXi主機數量不足以因應高可用的熱備援需求時,便會在叢集「摘要」頁面中,顯示類似「資源不足,無法滿足Datacenter中叢集Cluster01上的vSphere HA容錯移轉層級」的訊息,如圖19所示。以最小叢集架構的兩台ESXi主機為例,只要發生其中一台主機無法正常連線使用時,便會出現此警告訊息。
解決主機沒有管理網路重複問題
關於vSphere HA叢集功能的啟用,讓管理人員經常遭遇的問題,除了有前面提到的「此主機的vSphere HA活動訊號資料存放區數目為1,其少於必要數目2」的警示訊息外,另一個常見的就是「此主機目前沒有管理網路重複」警示訊息。
儘管這些警示都不會讓ESXi主機的熱備援功能無法運作,但卻會造成日後永續運行目標上的隱憂。換句話說,除了要有備用的活動訊號資料存放區,最好ESXi主機的管理網路(Management Network)也一樣要有兩個。
如何為叢集中的每一台ESXi主機新增一個管理網路呢?點選至叢集中任一ESXi主機節點的「設定」→「網路」→「虛擬交換器」頁面,再點選「新增網路」來準備添加第二個虛擬交換器,以做為第二個Management Network連線。
在「選取連線類型」頁面中,選取「VMkernel網路介面卡」,並按下〔NEXT〕按鈕。接著,在「選取目標裝置」頁面中先選擇「選取現有網路」、「選取標準交換器」或「新增標準交換器」,再按下〔NEXT〕按鈕。如果現階段只有一個網路或一個標準交換器,建議再新增一個標準交換器以供第二個管理網路使用,在這樣的情境下,過程中就必須選定一個尚未使用的實體網卡進行配置。
然而,無論是選擇上述哪一種做法,皆必須在「連接埠內容」頁面中,如圖20所示設定此管理網路的識別標籤並且至少勾選一個「管理」的服務選項,至於其他用途的服務選項,依照實際需要來勾選即可。設定完成後,按下〔NEXT〕按鈕。
如圖21所示,在「IPv4設定」頁面中,選取「使用靜態IPv4設定」並完成IPv4位址、子網路遮罩的輸入,然後按下〔NEXT〕按鈕。最後,在「即將完成」頁面中先確認所有設定皆無誤,再按下〔FINISH〕按鈕即可。
回到「虛擬交換器」頁面,如圖22所示,可以發現在範例的vSwitch0配置中,採用了在同一個虛擬交換器配置兩個管理網路,這種做法雖然可以解除管理網路的警示訊息,但在實務上並不可靠,因為一旦所對應的實體網卡發生斷線或故障,便會同時影響到兩個管理網路的連線,因此採用兩個獨立的虛擬交換器來分開配置肯定是必要的。此外,是否有想過針對實體網卡連線的備援機制,在vSphere管理中是否也有相對應的解決方案呢?答案是有的,稍後再做說明。
測試虛擬機器故障備援
一旦完成vSphere HA功能的啟用,接著就可以進行容錯移轉的測試,不過必須針對已經運行在叢集中的虛擬機器進行測試,而不是針對叢集以外的虛擬機器,或是使用ESXi本機儲存區的虛擬機器來進行測試。為此,建議管理人員對於虛擬機器的「摘要」資訊檢視,可以透過按下〔切換到新視圖〕按鈕來開啟如圖23所示的檢視頁面,這個新的視圖設計除了可以迅速查看此虛擬機器對於各項資源的容量與使用量、硬體規格以及快照資訊外,更重要的是能夠直接得知虛擬機器所在的叢集、主機、網路以及儲存區。
如果想要將目前運行於ESXi本機儲存區的虛擬機器,移轉至叢集所連接的共用儲存區中,只要在選取虛擬機器後,點選「動作」選單中的【移轉】,然後在「選取移轉類型」頁面中選擇「僅變更儲存區」選項,即可開始進行虛擬機器儲存區的移轉任務。
接下來回到虛擬機器容錯移轉的測試,在此將一台正在運行虛擬機器的ESXi主機,透過在「動作」選單中點選【電源】→【重新開機】或【關閉】並完成原因的輸入。緊接著,所有於此ESXi主機運行中的虛擬機器,便會自動移轉至叢集中其他可用的ESXi主機來啟動。而在虛擬機器發生故障移轉的過程中,也會在虛擬機器的事件紀錄中產生相關的事件,可以在「監控」→「工作和事件」→「事件」頁面中,查看到有關於vSphere HA保護的相關事件內容。
ESXi主機備援網卡配置
接下來說明如何為ESXi主機的網路提供一個自動備援的網路,以便在主要實體網路卡或網路交換器故障時,用戶端或管理端的各項服務連線依舊能夠繼續運作。
首先,在準備配置備援網路卡的ESXi主機上,點選至「設定」→「網路」→「實體介面卡」頁面,如圖24所示便可以查看到目前正處於無任何用途的網路卡有哪些,在這個範例中只有vmnic2。
緊接著,點選至「虛擬交換器」頁面,如圖25所示,這裡以選取「vSwitch0」為例,可以發現它目前相關的連接埠群組共有三個,依序為用以處理管理網路、虛擬機器網路流量。也就是說,萬一其唯一對應的實體網路卡發生故障時,對此ESXi主機而言,這兩個連接埠群組的網路流量將無法進行傳輸,導致虛擬機器中的相關應用服務的運作全部停擺。
接著,在「虛擬交換器」頁面中,點選「管理實體介面卡」連結。執行後,首先將可檢視到目前已指派的實體網卡,可以點選新增圖示來加入第二張、第三張或是更多的實體網卡。
成功加入後,便可以進一步將該網路卡,如圖26所示透過點選向上箭頭圖示的方式,將它歸類至「作用中介面卡」區域內。如果還有更多的實體網路卡介面可以運行,建議選定一片網路卡至「待命介面卡」區域來作為純粹備援用途,也就是說,當上述兩片網卡都發生故障,這個備援網卡將會自動完成遞補。
最後,進行網卡的熱備援測試。將連接在vmnic0網卡的接線拔除,此時便會在此頁面中發現vmnic0圖示出現錯誤符號,但相關虛擬機器的連線與主機的連線管理操作卻沒有受到影響,這便是因為vSwitch0的網路流量已經迅速自動切換至vmnic2網卡繼續運行。在此如果還有準備好「待命介面卡」的配置,那麼建議也拔除vmnic2網卡的接線,然後觀察這個待命的網卡是否一樣自動繼續接手運行。
結語
透過本文的實戰講解後,會發現想要解決主機層級的HA需求,對於VMware vSphere 7.0來說實在太容易了。若是曾經經歷過早期實體主機HA部署年代的人,肯定會深深體會到在vSphere虛擬化架構之下,不僅做法更簡單快速,其故障發生時的熱備援切換速度也快上許多,若有進一步採用更先進的FT(Fault Tolerance)連續可用性功能,那更是在眨眼之間就已經完成熱備援任務,用戶幾乎完全感覺不到有故障的事件發生。在解決了主機層級的HA需求後,接下來該如何針對服務層級或應用層級架構設計HA方案呢?其實許多應用系統或資料庫系統都有自家的HA機制,例如Microsoft的Exchange Server或SQL Server等等。如果所運行的系統本身沒有提供也不用灰心,因為仍可透過第三方的監視系統來加以解決,雖然可能無法達到像原生的功能那樣地即時,但至少可以做到在短時間內自動完成修復操作。
<本文作者:顧武雄, Microsoft MVP 2004-2016、MCITP與MCTS認證專家、台灣微軟Technet、TechDays、Webcast、MVA特約資深顧問講師、VMware vExpert 2016-217、IBM Unified Communications/Notes/Domino/Connections Certified。>