Nutanix 雙節點 AHV 巢狀式虛擬化 壓縮 DR

高彈性架構突破成本限制 具仲裁機制與RF2資料保護

打造小型企業雲端方案 建立Nutanix雙節點叢集

2024-12-09
本文將深入剖析及實戰部署Nutanix雙節點叢集,管理人員除了能夠理解雙節點叢集的特色功能和相關限制外,透過實戰演練小節逐步操作後,相信也能幫助分公司或小型企業和組織的管理人員輕鬆建立Nutanix雙節點叢集運作環境。

在傳統的Nutanix叢集運作架構中,叢集內至少需要「三台」成員節點主機才行,如圖1所示。然而,企業和組織有許多規模較小的分公司或ROBO小型公司,需要有更低成本但仍具備高彈性的運作架構,所以Nutanix便推出「雙節點叢集」(Two-Node Cluster)。

圖1  三台成員節點主機組成的Nutanix叢集運作架構示意圖。 (圖片來源:Distributed System | The Nutanix Cloud Bible (nutanixbible.com))

與單節點叢集不同的是,雙節點叢集可以提供類似三台節點主機叢集的部分彈性功能,然而雙節點叢集本身在運作架構上也有些許限制,所以在準備建置雙節點叢集之前,應先理解雙節點叢集具備哪些功能和限制條件,避免導入後才發現無法滿足企業和組織的需求。

首先,在Hypervisor虛擬化平台方面,支援採用AHV和ESXi兩種虛擬化平台,選擇採用AHV時,Controller VM(CVM)的最小硬體需求,必須配置6 vCPU及20GB vMemory硬體資源。

在Replication Factor(RF)資料複寫和完整性方面,預設採用RF2以便資料複寫能夠跨越二台節點主機之間,雖然RF1也支援使用,但管理人員必須認知採用RF1時的風險。此外,在中繼資料(Metadata)方面,則是採用RF4機制,將中繼資料複寫存放到二台節點主機的SSD儲存資源中,以便雙節點叢集發生災難事件時,能夠快速將健康的節點主機轉換為單節點模式並繼續運作,同時保持資料容錯能力確保可用性,如圖2所示。

圖2  Cassandra Ring運作架構示意圖。 (圖片來源:Cassandra Ring Structure | The Nutanix Cloud Bible (nutanixbible.com))

在儲存資源工作負載方面,由於只有二台節點主機,所以必須考量一台節點主機發生故障時,喪失50%的運算和儲存資源,以及接手故障節點主機的工作負載,所以在平時正常運作時,節點主機的儲存和記憶體工作負載不應超過「40%」,以避免屆時發生災難事件時成為唯讀狀態。

值得注意的情況是,雙節點叢集可以承受其中一台節點主機發生故障並繼續運作,但是存活的另一台節點主機,此時若發生SSD磁碟故障的話,那麼便會立即轉換為「唯讀模式」(Read-Only Mode)。

在特色功能方面,雙節點叢集的運作架構下,支援Compression資料壓縮及Asynchronous DR機制,但不支援增加成員節點主機擴充為三節點叢集,不支援Deduplication重複資料刪除,不支援Erasure Coding資料節省機制,不支援Nearsync DR和Metro Availability,不支援Network Segmentation等等機制,所以在導入雙節點叢集前,應再次確認是否會使用到不支援的特色功能。

倘若企業組織在舊有AOS 5.x版本中希望建構雙節點叢集時,強烈建議至少使用「AOS 5.10.7」或後續版本,以避免遭遇許多潛在問題影響運作,例如LCM升級雙節點叢集失敗、雙節點叢集無法從失敗狀態中自動復原等等,詳細資訊請參考Nutanix KB 7585知識庫文章。本文則會使用最新AOS 6.8版本建構雙節點叢集。

雙節點叢集故障情境剖析

在雙節點叢集運作架構中,叢集的健康狀態和復原步驟,取決於發生何種故障情境。舉例來說,成員節點主機發生故障,以及Witness VM仲裁機制發生故障時,叢集的因應方式和復原步驟便不相同。

成員節點主機故障時

當雙節點叢集內其中一台成員節點主機發生故障時,如圖3所示,另一台健康情況良好的成員節點主機將會發送「Leadership Request」給Witness VM仲裁主機,請求重新啟動Zookeeper系統服務,並將運作模式切換為「單節點模式」(Single-Node Mode)。

圖3  當其中一台成員節點主機發生故障時。 (圖片來源:Node Failure | Prism 6.8 - Two-Node Clusters (nutanix.com))

值得注意的是,成員節點主機從健康運作狀態轉換為單節點模式的工作時間需要「30-60秒」,才能完成運作模式切換的工作任務,此時上層運作的VM虛擬主機可能會遭遇到I/O讀寫逾時的情況,建議應把VM虛擬主機的SCSI控制器,將Timeout數值調整為至少「60秒」,以避免災難事件發生時造成上層VM虛擬主機I/O讀寫逾時的情況。

當主機進入單節點模式時,雖然仍採用RF2機制確保資料可用性,但此時的RF2機制已經從原本「主機層級」(Node Level)轉換為「磁碟層級」(Disk Level),這表示資料複寫機制從原本跨越二台成員節點主機,轉換為單台成員節點主機內的二顆磁碟中。

此時,如果存放中繼資料的二顆SSD磁碟當中有一顆SSD磁碟發生故障時,那麼進入單節點模式的主機將會進入「唯讀模式」(Read-Only Mode),資料僅能讀取而無法寫入,直到加入新的SSD磁碟提供中繼資料服務後,系統才會離開唯讀模式,讓資料恢復讀寫狀態。

一旦故障離線的成員節點主機,修復完畢重新加入叢集後,那麼原本進入單節點模式的成員節點主機將會復原,並且RF2資料複寫機制將會恢復成原本的主機層級機制,確保資料複寫在二台成員節點主機之間,以上這些拆解動作,在災難事件發生時,都將由系統自動執行和轉換運作模式,管理人員無須手動干預。

成員節點主機之間網路中斷時

在雙節點叢集架構中,二台成員節點主機之間的心跳網路,將會每隔「2秒」執行一次Ping的心跳檢查,如果在10秒內心跳檢查都失敗時(也就是連續Ping失敗5次),那麼系統將會判定成員節點主機之間的心跳網路中斷,如圖4所示。

圖4  當成員節點主機之間心跳網路發生故障時。 (圖片來源:Network Failure Between The Nodes | Prism 6.8 - Two-Node Clusters (nutanix.com))

此時,二台成員節點主機會同時向Witness VM仲裁主機發送Leadership Request請求訊息,無論哪一台成員節點主機獲得Leadership Lock,將會保持在運作狀態並進入單節點運作模式,而另一台未獲得Leadership Lock的成員節點主機,則會將所有資料讀寫操作和系統服務關閉,只保留Genesis系統服務,以便後續叢集運作狀態改變時,接收來自Zookeeper的通知,主機此時將進入「等待狀態」(Waiting State)。

一旦系統偵測到心跳網路恢復之後,叢集將會確保心跳網路至少維持15分鐘的健康狀態,才會開始執行叢集復原的操作程序,也就是一台成員節點退出單節點運作模式,二台成員節點主機重新建立RF2資料複寫機制等等工作任務。

主機和仲裁之間網路中斷時

預設情況下,雙節點叢集的成員節點主機與仲裁主機之間,網路延遲時間不應超過「500ms」,若超過這個網路延遲時間,將會觸發系統的RPC Timeout逾時。不同於成員節點主機之間的心跳網路,成員節點主機和仲裁主機之間,每「60秒」執行一次Ping檢查的動作,仲裁主機可以容忍2秒的超時時間,所以可以容忍1秒的網路連線延遲。

當單一成員節點主機和仲裁主機之間,發生網路連線中斷的情況時,如圖5所示,系統將會自動產生告警,內容為成員節點主機和仲裁主機之間喪失通訊,但此時雙節點叢集仍為健康狀態不影響運作。

圖5  當成員節點主機和仲裁主機之間網路發生故障時。 (圖片來源:Network Failure Between Node and Witness VM | Prism 6.8 - Two-Node Clusters (nutanix.com))

仲裁機制故障時

當仲裁主機發生故障,或者二台成員節點主機和仲裁主機之間的網路同時中斷時,系統都會視為仲裁機制故障,如圖6所示,此時系統將會自動產生告警,內容為成員節點主機和仲裁主機之間喪失通訊,但雙節點叢集仍為健康狀態,不影響叢集以及上層的VM虛擬主機正常運作。

圖6  當仲裁主機發生故障時。 (圖片來源:Witness VM Failure | Prism 6.8 - Two-Node Clusters (nutanix.com))

一旦仲裁主機恢復作並重新上線時,就會自動與成員節點主機再次建立仲裁機制,如果仲裁主機受損嚴重無法復原(Unrecoverable)時,管理人員則必須介入,手動重新部署及配置仲裁主機。

實戰雙節點叢集

在本文實作環境中,採用日前官方最新釋出的Nutanix CE 2.1版本,如圖7所示,除了包含大量新功能AOS 6.6、AOS 6.7、AOS 6.8、AOS 6.8.1外,還包括Prism Central 2024 v4 API,也有適合用於分公司或小型環境的X-Small Prism Central部署選項。

圖7  最新Nutanix CE 2.1安裝流程示意圖。 (圖片來源:Installation for AOS and AHV | Nutanix Community Edition 2.1 | Nutanix University)

巢狀式虛擬化環境

在巢狀式虛擬化環境中,最新版本的AOS 6.8.1與過去舊版的AOS 6.5相較,除了新增許多特色功能外,更重要的是底層的作業系統版本也改版了,在AOS 6.5版本中,AHV和CVM均採用CentOS 7.9作業系統版本,而最新的AOS 6.8.1版本中,AHV和CVM則改為採用Red Hat Enterprise Linux 8(RHEL8)作業系統版本,Python相關服務和腳本也從2.7升級為3版本,其他詳細資訊請參考Nutanix AOS 6.8 Release Notes文件內容。

因此,在開啟VMware Workstation虛擬化軟體,點選Create a New Virtual Machine選項後,在選擇Guest OS客體作業系統時,選擇Linux選項中的「Red Hat Enterprise Linux 8 64-bit」項目,如圖8所示,待安裝程序完成後,屆時管理人員登入便能看到AHV和CVM皆採用了Red Hat Enterprise Linux 8作業系統版本。

圖8  新版AOS 6.8.1請選擇採用RHEL 8作業系統版本。

在選擇vDisk虛擬硬碟類型時,由於選擇採用RHEL 8作業系統版本,所以預設的vDisk虛擬硬碟類型將為「NVMe」改選至「SCSI」選項,如圖9所示,否則屆時安裝完成後CVM主機會無法順利啟動。

圖9  選擇採用SCSI的vDisk虛擬硬碟類型。

此外,在建立VM虛擬主機完成後,先別急著開機進入安裝程序,使用系統管理員權限開啟Notepad筆記本,修改Guest Hypervisor虛擬主機的「.vmx」組態設定檔,加上「disk.EnableUUID = "TRUE"」參數值,確保指派給vDisk虛擬硬碟Serial Number序列號,否則在稍後的安裝程序中,可以看到硬碟未顯示Serial Number,後續也會導致啟動叢集服務時,在Medusa服務啟動環境時卡住並產生錯誤,造成叢集無法順利啟動。

在本文雙節點叢集運作架構中,總共會安裝三台AHV主機,如圖10所示,其中二台擔任雙節點叢集的成員主機,另一台則負責運作Witness VM仲裁機制,在IP位址的配置如下:

圖10  安裝最新的Nutanix CE 2.1版本,包含AOS 6.8.1和過往新增特色功能。

‧AHV Hypervisor:10.10.75.11, 12, 15

‧Controller VM(CVM):10.10.75.21, 22, 25

‧CVM Cluster IP:10.10.75.30

‧Witness Cluster IP:10.10.75.35

建構Nutanix叢集

由於Nutanix CE社群版本在官方文件中有明確說明,僅支援建立單節點、三節點、四節點叢集,必須採用實體伺服器才能建構雙節點叢集,所以在本文中將建立三節點叢集,搭配Witness VM仲裁機制模擬雙節點叢集運作環境。

只要登入其中一台CVM主機,並使用ping指令確認三台主機之間,AHV和CVM主機皆能ping通無誤之後,便可以鍵入「cluster -s 10.10.75.21,10.10.75.22,10.10.75.25 create」指令,執行建構多節點Nutanix叢集的工作任務。

建構多節點Nutanix叢集的工作任務,需要等待一段時間才完成,在部署過程中,管理人員從資訊中可以看到,系統會自動指派其中一台CVM主機擔任ZeusLeader角色負責Nutanix叢集的指揮作業,當叢集環境建構完成後,系統將出現「INFO MainThread cluster:3104 Success!」訊息,提醒Nutanix叢集已經部署並啟動完成。

可以手動執行「cluster status」、「ncli cluster info」等指令,確認叢集運作和健康狀態,以及叢集的組態設定等資訊。

叢集基礎設定

雖然已經成功建立叢集環境,但是叢集仍有其他組態設定未完成,例如叢集名稱、叢集IP位址、DNS名稱解析伺服器等等,因此立即開啟瀏覽器,鍵入任一CVM主機的IP位址,例如「http://10.10.75.25」,系統將會自動導向至「https://10.10.75.25:9440」,在嘗試連線Prism Element(PE)管理介面時,會看到系統提示「NET::ERR_CERT_INVALID」網頁警告訊息。

此時,只要在警告頁面中的空白處,直接按下鍵盤上的「thisisunsafe」,即可順利載入PE管理介面的登入畫面,請使用預設管理帳號「admin」和密碼「nutanix/4u」。登入之後,系統會提示需要變更管理者帳號的密碼,變更後再度回到PE登入介面,以管理帳號和新的密碼登入。

首先,在預設情況下叢集名稱為「Unnamed」,並且未設定叢集專用的Virtual IP(VIP)位址。登入PE管理介面後,依序點選「Settings > General > Cluster Details」,將Cluster Name欄位中的預設值Unnamed刪除,鍵入本文實作環境的叢集名稱「ntnx-cluster」,並在Virtual IP欄位填入「10.10.75.30」叢集VIP位址,然後按下〔Save〕按鈕存檔,如圖11所示。

圖11  組態設定叢集名稱和VIP位址。

當組態設定套用生效後,便可以登出現有CVM IP位址連線的PE管理介面,改為採用叢集名稱搭配VIP位址名稱解析的網址登入,本文實作環境請在網址列鍵入「https://ntnx-cluster.lab.weithenn.org:9440」,順利通過使用者身分驗證程序並登入PE管理介面後,就可以在管理介面左上角看到叢集名稱已經套用生效。

接著,組態設定叢集使用的DNS名稱解析伺服器,以及NTP時間校對伺服器。在PE管理介面中,依序點選「Settings > Network > Name Servers」,將預設的「8.8.8.8」和「8.8.4.4」IP位址刪除後,按下〔Add〕按鈕,新增「10.10.75.10」環境中的DNS名稱解析伺服器。

在PE管理介面中,依序點選「Settings > Network > NTP Servers」,先將預設值「1.pool.ntp.org和0.pool.ntp.org」的NTP時間校對伺服器刪除,再按下〔Add〕按鈕,新增一台內部「10.10.75.10」和外部的「clock.stdtime.gov.tw」NTP時間校對伺服器,如圖12所示。

圖12  新增內部和外部的NTP時間校對伺服器。

部署Witness VM仲裁主機

在Nutanix叢集架構中,仲裁機制是透過部署Witness VM主機達成,先登入至Nutanix Support Portal,依序點選「Nutanix Support & Insights > Downloads > Essential Tools > WitnessVM」項目,依據採用的Hypervisor虛擬化平台,選擇下載的Witness VM主機映像檔,如果是ESXi就下載.ova,若是AHV則下載.qcow2映像檔,如圖13所示。

圖13  下載適用於AHV虛擬化平台的Witness VM映像檔。

下載完成後,切換至PE管理介面,依序點選「Settings > General > Image Configuration > Upload Image」,接著在Create Image視窗中填入Witness VM映像檔資訊,如圖14所示:

圖14  上傳適用於AHV虛擬化平台的Witness VM映像檔。

‧Name:由於Witness VM有三個映像檔(boot、data、home),分別填入Witness VM映像檔名稱以供識別。

‧Annotation:此欄位為選擇填寫項目(可不填),填入Witness VM映像檔描述資訊。

‧Image Type:選擇上傳的映像檔類型為ISO或Disk,此欄位為選擇項目(可不選)。

‧Storage Container:選擇上傳的Witness VM映像檔要儲存在哪個Storage Container儲存資源中,本文實作環境儲存至預設的Storage Container儲存資源。

‧Image Source:選擇上傳的Witness VM映像檔來源。選擇From URL方式時,可透過NFS或HTTP通訊協定上傳;選擇Upload a file方式時,則可按下〔Choose File〕鈕選擇由本機直接上傳。

然後建立Witness VM虛擬主機,在VM Dashboard頁面中,按下Create VM準備建立Witness VM虛擬主機,在彈出的Create VM視窗中,依序填入和選擇下列資訊:

‧Name:鍵入建立的VM虛擬主機名稱。

‧Description:鍵入VM虛擬主機的描述資訊,此欄位為選擇填寫項目(可不填)。

‧Timezone:選擇VM虛擬主機採用的時區,若建立的是Linux VM虛擬主機,保持預設的UTC時區設定即可。

‧vCPU:組態設定VM虛擬主機的vCPU數量,根據官方文件說明,Witness VM虛擬主機至少需要配置2 vCPUs虛擬處理器。

‧Number of Cores per vCPU:組態設定VM虛擬主機每個vCPU的Cores數量,根據官方文件說明,Witness VM虛擬主機至少需要配置2 vCPUs虛擬處理器。

‧Memory:組態設定VM虛擬主機的vMemory空間,根據官方文件說明,Witness VM虛擬主機至少需要配置6GB vMemory空間。

然後,按下Add New Disk,在Add Disk視窗中將三個Witness VM映像檔加入,如圖15所示。其中,「Type」欄位值選擇至Disk項目;「Operation」欄位選擇至Clone from Image Service項目;「Bus Type」欄位則選擇至SCSI項目;而「Image」則依序選擇剛才上傳的三個Witness VM映像檔(boot、data、home)。

圖15  新增vDisk虛擬硬碟,採用剛才上傳的Witness VM映像檔。

接著,按下Add New NIC,在Create NIC視窗中,組態設定vNetwork虛擬網路,其中「Subnet Name」為選擇準備連接的Subnet網路環境,而「Network Connection State」則選擇預設的Connected項目。

最後,按下〔Save〕按鈕,系統便開始建立Witness VM虛擬主機。

組態Witness VM仲裁主機

在VM Dashboard頁面中,切換至Table頁籤後,選擇Witness VM虛擬主機執行Power On開機的動作,順利啟動後執行Lunch Console,可以看到Witness VM虛擬主機,預設會嘗試搜尋網路中是否有DHCP Server派發IP位址,如果有的話,會直接抓取IP位址。

在實務上,應該為Witness VM虛擬主機組態設定固定IP位址。在Console視窗中,使用預設管理者帳號「nutanix」和密碼「nutanix/4u」登入,執行「sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0」指令,修改網卡設定檔為如下內容:

DEVICE="eth0" NM_CONTROLLED="no" ONBOOT="yes" BOOTPROTO="none" IPADDR="10.10.75.35" NETMASK="255.255.255.0" GATEWAY="10.10.75.254"

組態設定完成並存檔離開後,執行「sudo reboot」指令重新啟動主機以便套用生效。重新啟動完成後,執行「cat /etc/redhat-release」指令確認系統版本資訊。接著,執行「ip -c -br a」指令確認網路資訊,以及執行「hostname」指令確認主機名稱,如圖16所示。

圖16  確認Witness VM虛擬主機網路組態設定。

最後,在Witness VM虛擬主機上執行「cluster -s 10.10.75.35 --cluster_function_list=witness_vm create」指令,建立Witness VM叢集以便完成仲裁機制的組態設定,如圖17所示。

圖17  建立Witness VM叢集以便完整仲裁機制的組態設定。

現在,即可開啟瀏覽器,在網址列鍵入「https://witness.lab.weithenn.org:9440」,登入Witness仲裁機制管理介面,如圖18所示。

圖18  登入Witness仲裁機制管理介面。

註冊Witness仲裁機制

切換至PE管理介面後,依序點選「Settings > Data Resiliency > Configure Witness」,可以在Witness Address欄位中鍵入Witness VM IP位址「10.10.75.35」,一旦運作環境符合Two-Node Clusters時,便能順利按下〔Save〕按鈕套用生效,如圖19所示。

圖19  指定Witness VM仲裁機制IP位址。

切換回Witness仲裁機制管理介面,在Configure Witness組態設定頁面中,填入Witness仲裁機制IP位址、預設管理者帳號「admin」和預設管理密碼「Nutanix/4u」,然後按下〔Apply & Continue〕按鈕套用生效,如圖20所示。至此,Nutanix叢集就順利建立Witness仲裁機制了。

圖20  註冊並組態設定Witness仲裁資訊。

<本文作者:王偉任,Microsoft MVP及VMware vExpert。早期主要研究Linux/FreeBSD各項整合應用,目前則專注於Microsoft及VMware虛擬化技術及混合雲運作架構,部落格weithenn.org。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!