網管人雜誌
本文刊載於
網管人雜誌第 227 期 - 2024 年 12 月 1 日出刊,NetAdmin 網管人雜誌
為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology
Learning
技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份
1 日出刊您可於各大書店中看到它,或透過城邦出版人讀者服務網進行訂閱。
本文目錄
前言
在傳統的 Nutanix 叢集運作架構中,叢集內至少需要「三台」成員節點主機才行(如圖 1 所示)。然而,企業和組織有許多規模較小的分公司或 ROBO 小型公司,需要有更低成本但仍具備高彈性的運作架構,所以 Nutanix 便推出「雙節點叢集」(Two-Node Cluster)。
圖 1、三台成員節點主機組成的 Nutanix 叢集運作架構示意圖
與單節點叢集叢集不同的是,雙節點叢集可以提供類似三台節點主機叢集的部份彈性功能,然而雙節點叢集本身在運作架構上也有些許限制,所以管理人員在準備建置雙節點叢集之前,應先理解雙節點叢集具備哪些功能和限制條件,避免導入後才發現無法滿足企業和組織的需求。
首先,在 Hypervisor 虛擬化平台方面,支援採用 AHV 和 ESXi 兩種虛擬化平台,選擇採用 AHV 時 Controller VM(CVM)最小硬體需求,必須配置 6 vCPU 及 20GB vMemory 硬體資源。
在 Replication Factor(RF)資料複寫和完整性方面,預設採用 RF2 以便資料複寫能夠跨越二台節點主機之間,雖然 RF1 也支援使用,但管理人員必須認知採用 RF1 時的風險。此外,在中繼資料(Metadata)方面,則是採用 RF4 機制,將中繼資料複寫存放到二台節點主機的 SSD 儲存資源中,以便雙節點叢集發生災難事件時,能夠快速將健康的節點主機轉換為單節點模式並繼續運作,同時保持資料容錯能力確保可用性(如圖 2 所示)。
圖 2、Cassandra Ring 運作架構示意圖
在儲存資源工作負載方面,由於只有二台節點主機,所以必須考量一台節點主機發生故障時,喪失 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、當其中一台成員節點主機發生故障時
值得注意的是,成員節點主機從健康運作狀態,轉換為單節點模式的工作時間需要「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、當成員節點主機之間心跳網路發生故障時
此時,二台成員節點主機將會同時向 Witness VM 仲裁主機,發送 Leadership Request 請求訊息,無論哪一台成員節點主機獲得 Leadership Lock 後,將會保持在運作狀態並進入單節點運作模式,而另一台未獲得 Leadership Lock 的成員節點主機,則會將所有資料讀寫操作和系統服務關閉,只保留 Genesis 系統服務,以便後續叢集運作狀態改變時,接收來自 Zookeeper 的通知,主機此時將進入「等待狀態」(Waiting State)。
一旦系統偵測到心跳網路恢復之後,叢集將會確保心跳網路至少維持 15 分鐘的健康狀態,才會開始執行叢集復原的操作程序,也就是一台成員節點退出單節點運作模式,二台成員節點主機重新建立 RF2 資料複寫機制……等工作任務。
主機和仲裁之間網路中斷時
預設情況下,雙節點叢集的成員節點主機與仲裁主機之間,網路延遲時間不應超過「500 ms」,倘若超過這個網路延遲時間時,將會觸發系統的 RPC Timeout 逾時。
不同於成員節點主機之間的心跳網路,成員節點主機和仲裁主機之間,每「60 秒」執行一次 Ping 檢查的動作,仲裁主機可以容忍 2 秒的超時時間,所以可以容忍 1 秒的網路連線延遲。
當單一成員節點主機和仲裁主機之間,發生網路連線中斷的情況時(如圖 5 所示),系統將會自動產生告警,內容為成員節點主機和仲裁主機之間喪失通訊,但此時雙節點叢集仍為健康狀態不影響運作。
圖 5、當成員節點主機和仲裁主機之間網路發生故障時
仲裁機制故障時
當仲裁主機發生故障時,或者二台成員節點主機和仲裁主機之間的網路同時中斷時,系統都會視為仲裁機制故障(如圖 6 所示),此時系統將會自動產生告警,內容為成員節點主機和仲裁主機之間喪失通訊,但雙節點叢集仍為健康狀態,不影響叢集以及上層的 VM 虛擬主機正常運作。
圖 6、當仲裁主機發生故障時
實戰 – 雙節點叢集
在本文實作環境中,採用日前官方 最新釋出的 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 安裝流程示意圖
巢狀式虛擬化環境
在巢狀式虛擬化環境中,由於最新版本的 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)系列作業系統版本 (其實是 Rocky Linux 8 😏),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 位址的配置如下:
- 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
圖 10、安裝最新 Nutanix CE 2.1 版本,包含 AOS 6.8.1 和過往新增特色功能
建構 Nutanix 叢集
由於 Nutanix CE 社群版本,在官方文件中有明確說明,僅支援建立單節點、三節點、四節點叢集,必須採用實體伺服器才能建構雙節點叢集,所以在本文中將建立三節點叢集,搭配 Witness VM 仲裁機制模擬雙節點叢集運作環境。
管理人員只要登入其中一台 CVM 主機,並使用 ping 指令確認 3 台主機之間,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 映像檔資訊:
- 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 鈕選擇由本機直接上傳。
圖 14、上傳適用於 AHV 虛擬化平台的 Witness VM 映像檔
建立 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 虛擬主機,至少需要配置 6GBvMemory 空間。
- 按下 Add New Disk,在 Add Disk 視窗中,將三個 Witness VM 映像檔加入(如圖 15 所示)
- Type: 選擇至 Disk 項目。
- Operation: 選擇至 Clone from Image Service 項目。
- Bus Type: 選擇至 SCSI 項目。
- Image: 依序選擇剛才上傳的三個 Witness VM 映像檔(boot,data,home)。
- 按下 Add New NIC,在 Create NIC 視窗中,組態設定 vNetwork 虛擬網路
- Subnet Name: 選擇準備連接的 Subnet 網路環境。
- Network Connection State: 選擇預設的 Connected 項目。
- Save: 按下 Save 鈕,系統便開始建立 Witness VM 虛擬主機。
圖 15、新增 vDisk 虛擬硬碟,採用剛才上傳的 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 仲裁資訊
結語
透過本文的深入剖析和實戰演練後,管理人員除了理解雙節點叢集的特色功能和相關限制外,透過實戰演練小節逐步操作後,相信能幫助分公司或小型企業和組織的管理人員,輕鬆建立 Nutanix 雙節點叢集運作環境。