巢狀式虛擬化 Nutanix AHV HCI 超融合基礎架構

虛擬化熟悉概念易懂相通 按部就班完成基本組態設定

部署Nutanix多節點叢集 沒有超融合設備也能實測

2024-06-11
先前已經示範過如何部署及建構Nutanix單節點叢集,接下來本文將透過深入剖析及實戰演練的方式,讓企業和組織即便在沒有專屬的Nutanix硬體伺服器情況下,也能透過巢狀式虛擬化技術,輕鬆建構出Nutanix多節點叢集基礎架構。

在前一篇技術專欄中,已經實際部署和建構Nutanix單節點叢集,讓企業和組織的管理人員能夠透過極小型的運作環境進行研究和測試作業。然而,在實務上,企業和組織不可能將重要的營運服務運作在只有單節點的叢集架構中。因此,在本文中將部署和建構Nutanix多節點叢集環境,以便管理人員後續能夠實作HCI超融合基礎架構,如圖1所示,以及其他進階特色功能和災難演練的部分。

圖1  Nutanix HCI超融合基礎架構運作示意圖。 (圖片來源:What is hyperconverged infrastructure (HCI)? | Nutanix UK)

接下來,就開始實際動手部署Nutanix多節點叢集。

建立巢狀式虛擬化環境

在本次實戰演練中,將會安裝和部署「3台」Nutanix節點主機,建構Nutanix多節點叢集環境,並且透過Prism Element圖形化管理介面或指令,進行叢集基礎架構的基本組態設定,確保叢集運作環境的穩定性和高可用性。

由於在企業或組織的地端資料中心內,可能並未具備足夠的硬體資源可供實戰演練和功能測試,所以IT管理人員同樣可以透過「巢狀式虛擬化」(Nested Virtualization)機制的幫助,來輕鬆建構Nutanix多節點叢集運作環境。

然而,在本刊第218期「測試Nutanix社群版,實作超融合單節點叢集」技術專欄中,已經詳細說明如何建立巢狀式虛擬化環境、部署擔任Nutanix的Guest Hypervisor虛擬主機、安裝Nutanix AHV虛擬化平台的部分,因此本文便不再贅述。

部署3節點Nutanix叢集

順利部署3台Nutanix節點主機後,可以從Console登入,或是透過SSH Client登入AHV虛擬化平台以及CVM主機運作環境。在本文實作環境中,3台Nutanix主機的AHV IP位址為10.10.75.21、10.10.75.22、10.10.75.23,CVM IP位址是10.10.75.31、10.10.75.32以及10.10.75.33。

只要登入其中一台CVM主機,並使用ping指令確認3台Nutanix主機之間,AHV和CVM主機皆通訊無誤後,便可以鍵入「cluster -s 10.10.75.31,10.10.75.32,10.10.75.33 create」指令,執行部署多節點主機的Nutanix叢集工作任務。

部署Nutanix多節點叢集需要等待一段時間才會完成,在部署過程中,可以看到其中一台CVM主機將會自動擔任ZeusLeader角色,並負責整個Nutanix叢集的總指揮中心,一旦3台Nutanix節點主機將叢集系統服務順利啟動完成之後,系統將出現「INFO MainThread cluster:3104 Success!」訊息,表示Nutanix多節點叢集已經部署和啟動完成,如圖2所示。當然,管理人員想要再次確認叢集狀態時,只要執行「cluster status」指令即可進行確認。

圖2  部署並啟動Nutanix多節點叢集。

多節點Nutanix叢集部署完畢,執行「ncli cluster info」指令來查詢Nutanix叢集組態設定資訊。舉例來說,目前Cluster Name欄位為「Unnamed」,也就是尚未組態設定Nutanix叢集名稱,Node Count欄位為「3」,則代表此Nutanix叢集目前擁有3台節點主機,NCC Version欄位為「ncc-4.6.2.1」表示目前的NCC版本,以及Cluster Version欄位為「6.5.2」表示叢集目前使用的AOS版本,如圖3所示。

圖3  查詢Nutanix叢集組態設定資訊。

一次管理所有AHV和CVM主機

預設情況下,在多節點叢集運作架構中,會有多台AHV虛擬化平台和多台CVM主機,倘若仍需要一台一台主機逐一SSH登入進行管理的話,那麼除了會造成管理上的麻煩之外,也可能因為人為操作錯誤的關係(例如打錯字或貼錯指令等等)而造成叢集管理上的困擾。

因此,如何快速簡單且一致性的管理便相形重要,在Nutanix叢集環境中提供便利的「allssh」指令,能夠一次管理所有CVM主機,以及「hostssh」指令一次管理所有AHV虛擬化平台,達到快速管理的目的,如圖4所示。

圖4  透過allssh和hostssh一次管理CVM或AHV虛擬化平台。

舉例來說,若想要查詢目前Nutanix叢集中,所有CVM主機的DNS名稱解析伺服器的組態設定,只要執行「allssh cat /etc/resolv.conf」指令即可。想要查看所有AHV虛擬化平台的DNS組態設定,則只要執行「hostssh cat /etc/resolv.conf」指令,如圖5所示。

圖5  快速查詢叢集中CVM和AHV的DNS組態設定內容。

登入Prism Element管理介面

預設情況下,在多節點Nutanix叢集架構中,只要透過「任一台CVM IP位址」即可連線Prism Element(PE)管理介面(後續簡稱為PE)。在登入PE管理介面之前,先執行「allssh "netstat -tunpl | grep 9440"」指令,確認所有CVM主機的PE管理介面服務(Port 9440)已經正常運作。

接著開啟瀏覽器,鍵入任一CVM主機的IP位址,例如「https://10.10.75.31:9440」。倘若嘗試登入PE管理介面時,遭遇「NET::ERR_CERT_INVALID」網頁警告訊息,只要在錯誤網頁中空白處直接鍵入「thisisunsafe」,即可順利看到PE管理介面的登入畫面,並使用預設管理帳號「admin」及預設密碼「nutanix/4u」。登入之後,系統便會提示變更管理密碼,變更後會再度回到登入介面,以新的管理密碼登入。

如果無法順利通過NEXT Credentials驗證視窗時,記得檢查在My Nutanix帳號中,是否針對Community Edition區塊,點選〔Activate〕按鈕進行啟用,或者在多節點Nutanix叢集運作環境中,防火牆是否允許TCP通訊協定Port 80或8443網路封包通過。一旦Pulse遙測服務順利啟動,就能夠看到PE儀表板管理介面,如圖6所示。

圖6  順利登入Prism Element儀表板管理介面。

設定DNS名稱解析伺服器

預設情況下,叢集採用的DNS名稱解析伺服器為網際網路上的「8.8.8.8」和「8.8.4.4」。本文實作環境中,內部使用的DNS名稱解析伺服器是「10.10.75.10」,在進行組態設定之前,先執行「allssh "nc -vz 10.10.75.10 53"」指令,確認所有CVM主機都能夠與內部DNS名稱解析伺服器進行溝通。確認與DNS名稱解析伺服器溝通無誤後,在PE管理介面中,依序點選「Settings > Network > Name Servers」,按下〔Add〕按鈕來新增「10.10.75.10」DNS名稱解析伺服器,並將預設的「8.8.8.8」和「8.8.4.4」刪除,如圖7所示。之後,切換到CVM主機,執行「ncli cluster get-name-servers」指令,再次確認叢集的DNS名稱解析伺服器組態設定是否套用生效。

圖7  組態設定Nutanix叢集DNS名稱解析伺服器。

事實上,在PE管理介面中為Nutanix叢集組態設定DNS名稱解析伺服器後,系統會自動同步套用至所有AHV和CVM主機中。在CVM主機上執行「allssh "cat /etc/resolv.conf"」指令,就可以發現Nutanix叢集中所有的CVM主機已經自動套用生效。使用指定的內部DNS名稱解析伺服器,執行「hostssh "cat /etc/resolv.conf"」指令,同樣可以發現所有AHV主機也自動套用內部DNS名稱解析伺服器,如圖8所示。

圖8  叢集中所有CVM和AHV主機,自動套用生效使用內部DNS名稱解析伺服器。

設定叢集名稱和VIP位址

在預設情況下,雖然順利部署好Nutanix叢集,然而透過執行「ncli cluster info」指令或登入PE管理介面後,會發現預設的叢集名稱為「Unnamed」,並且也未組態設定叢集的VIP(Virtual IP)位址,所以只能透過任一台CVM主機的IP位址連線及登入至PE管理介面。

在登入PE管理介面後,依序點選「Settings > General > Cluster Details」,將Cluster Name欄位中的預設值Unnamed刪除,鍵入本文實作環境的叢集名稱「ntnx-cluster」,在Virtual IP欄位內則填入「10.10.75.20」叢集VIP位址,然後按下〔Save〕按鈕存檔,如圖9所示。

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

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

圖10  採用叢集名稱搭配VIP位址名稱解析登入PE管理介面。

值得注意的是,在剛才組態設定叢集資訊頁面中,FQDN欄位和VIP欄位只能擇一填寫,無法同時使用。簡單來說,當管理人員日後部署Prism Central(PC)管理平台時,可以部署多台PC主機,搭配組態設定「DNS名稱解析輪循」(DNS Round-Robin)功能,即可填入FQDN欄位達到多台PC主機負載平衡的功能。同樣的情境下,採用VIP機制時雖然能提供容錯的彈性機制,但卻無法提供負載平衡功能。

設定時區和NTP時間校對

預設情況下,叢集的時區組態設定值為「UTC格林威治標準時間」,並且在目前的PE管理介面中,並沒有提供組態設定叢集時區的部分。

登入任一台CVM主機,然後執行「ncli cluster info | grep Timezone」指令,查詢目前單點叢集的時區組態設定,接著使用「timedatectl list-timezones | grep Asia/Taipei」指令,確認系統是否支援「UTC+8」的「Asia/Taipei」台北時區。

確認系統支援台北時區之後,便執行「ncli cluster set-timezone timezone="Asia/Taipei"」指令來組態設定叢集為台北時區時,系統會詢問是否要套用新的時區設定,鍵入「y」確認進行變更。系統會提示必須重新啟動CVM主機,或是重新啟動叢集所有服務後,新的日誌事件時間才能套用新的時區。

值得注意的是,從AOS 5.18和pc.2020.8版本開始,CVM主機和PC管理平台中的服務日誌時間戳記,即便管理人員變更時區,仍會強制使用UTC時區。此外,與設定DNS名稱解析伺服器不同的是,時區的組態設定僅會套用在CVM主機,而不會套用至AHV虛擬化平台中,詳細資訊請參考Nutanix KB1050知識庫文章。

由於多節點叢集已經正常運作,採用重新啟動CVM主機方式的話,一次只能重新啟動一台CVM主機,然後等待資料區塊重新同步完成後,才能再重新啟動另一台CVM主機。這樣的處理方式需要等待時間太久,所以改為選擇重新啟動叢集服務方式,執行「cluster stop」指令,在系統詢問是否確認停止叢集服務時鍵入「I agree」,確認停止所有叢集服務。

待所有CVM主機的叢集服務都停止後,執行「cluster status |grep -v DOWN」指令,確認每台CVM主機僅剩下必要的Zeus、Scavenger、Xmount、VipMonitor服務為啟動之外,其餘服務皆為停止狀態。

確認無誤後,即可執行「cluster start」指令啟動叢集服務。此時,系統就像在建構叢集服務時一樣的動作,許多的叢集服務依序啟動,直到所有叢集服務啟動完成為止。接著,執行「cluster status |grep -v UP」指令,確認所有CVM主機的叢集服務皆已順利啟動,並執行「ncc health_checks system_checks cluster_services_down_check」指令,檢查是否有叢集服務未啟動成功的情況發生,如圖11所示。

圖11  透過ncc指令檢查叢集服務的健康情況。

預設情況下,叢集採用的NTP時間校對伺服器,為網際網路上的1.pool.ntp.org和0.pool.ntp.org,本文實作環境中,使用內部的NTP時間校對伺服器為「10.10.75.10」,在組態設定之前,先執行「allssh "nc -vz 10.10.75.10 -u 123"」指令,確認所有CVM主機都能和內部NTP時間校對伺服器進行溝通。值得注意的是,nc指令預設情況下採用TCP通訊協定,但NTP時間校對伺服器使用UDP通訊協定,所以指令必須加上「-u」參數,才能讓nc指令使用UDP協定進行測試作業,如圖12所示。

圖12  確認所有CVM主機能夠和內部NTP時間校對伺服器進行溝通。

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

圖13  組態設定叢集使用內部NTP時間校對伺服器。

原則上,組態設定完成後,系統便會自動尋找內部NTP時間校對伺服器進行對時作業,若希望立即執行對時的動作,則執行「allssh "/usr/sbin/ntpdate -t 10 -q 10.10.75.10"」指令,立即與內部NTP時間校對伺服器進行時間校對作業。然後,執行「allssh "date"」指令,確認CVM主機的時間校對情況,詳細資訊請參考Nutanix KB4519知識庫文章。

此時,AHV虛擬化平台仍為UTC時區,可以執行「hostssh "timedatectl set-timezone Asia/Taipei"」指令,將叢集中所有AHV虛擬化平台的時區,組態設定為「Asia/Taipei」,然後執行「hostssh "timedatectl"」指令,確認時區組態設定是否套用生效。

變更AHV和CVM主機名稱

預設情況下,系統自動命名AHV主機名稱的格式為「NTNX--」,而CVM主機名稱則是建構於AHV主機名稱之上,會在AHV主機名稱結尾加上「-CVM」,以本文實作環境而言,第一台AHV主機名稱為「NTNX-da1a87c0-A」,而CVM主機名稱是「NTNX-da1a87c0-A-CVM」。

在變更AHV主機名稱的部分,在CVM主機上執行「change_ahv_hostname --host_ip="10.10.75.21" --host_name="NTNX-Node01-AHV"」指令,就能夠指定將本文實作環境中第一台AHV主機名稱變更為「NTNX-Node01-AHV」,即可依據同樣的方式,變更叢集中其他台AHV主機名稱。變更完成後,可以執行「hostssh "hostname"」指令,查看所有AHV主機名稱是否套用生效,或在PE管理介面中點選「Hardware」項目,就能看到叢集中所有AHV主機名稱,如圖14所示。

圖14  查看叢集中所有AHV主機名稱。

至於變更CVM主機名稱的部分,必須遵照系統命名規則,開頭是「NTNX-」,結尾為「-CVM」。執行「sudo /usr/local/nutanix/cluster/bin/change_cvm_hostname NTNX-Node01-CVM」指令,系統會提醒必須重新啟動才能套用生效。按下〔Y〕鍵,便會重新啟動,重新啟動後可發現CVM主機名稱順利變更為「NTNX-Node01-CVM」,詳細資訊請參考Nutanix KB3517知識庫文章。

然而,管理人員將會發現,雖然SSH登入後CVM主機名稱已經變更,但是在AHV虛擬化平台中使用「virsh list」指令查看CVM主機資訊時,或是在PE管理介面中,看到的CVM主機名稱仍然是未變更前的舊名稱,如圖15所示。

圖15  在PE管理介面中,發現CVM主機仍使用未變更前的舊有主機名稱。

此時,只要登入別台CVM主機,執行「change_cvm_display_name --cvm_ip="10.10.75.31" --cvm_name="NTNX-Node01-CVM"」指令,系統詢問必須重新啟動CVM主機才能套用生效,按下〔Y〕鍵即可。當CVM主機重新啟動完成後,在AHV虛擬化平台中查看CVM主機資訊,或是在PE管理介面中看到的CVM主機名稱,便會是變更後的主機名稱,如圖16所示。

圖16  在PE管理介面中,順利看到變更後的CVM主機名稱。

變更預設管理密碼

在預設環境下,雖然使用系統預設密碼仍然能正常運作,但是此舉容易導致企業和組織發生資安風險,所以在PE管理介面中,倘若未變更相關預設管理密碼時,那麼在Critical Alerts事件中將會不斷提醒管理人員應該變更預設管理密碼,如圖17所示。

圖17  系統提醒管理人員應該變更預設管理密碼。

那麼有哪些系統管理帳號和密碼是官方建議變更以便降低資安風險的呢?下列將條列系統相關的管理帳號和建議變更預設密碼,詳細資訊請參考Nutanix KB6153知識庫文章:

‧Nutanix Controller VM(CVM):建議變更本機「nutanix」管理帳號的預設密碼。

‧Hypervisor:採用AHV虛擬化平台時,建議變更本機「root, admin, nutanix」管理帳號的預設密碼;採用ESXi虛擬化平台時,建議變更「root」預設密碼;採用Hyper-V虛擬化平台時,建議變更「administrator」預設密碼。

‧Prism Central:建議變更Prism GUI的「admin」帳號預設管理密碼,以及本機「nutanix」管理帳號的預設密碼。

‧Out-of-Band Management(IPMI):建議變更遠端管理「ADMIN」帳號預設管理密碼。

‧File Server VMs(FSVMs):建議變更本機「nutanix」管理帳號的預設密碼。

那麼多的系統預設管理帳號和密碼,應該如何一次性且快速地進行檢查?透過ncc指令,搭配default_password_check、pc_default_password_check、file_server_default_password_check參數,即可進行快速檢查作業。

舉例來說,可以在任一CVM主機上執行「ncc health_checks system_checks default_password_check」指令,便可檢查系統中包含CVM的管理帳號是否採用預設密碼,系統將會檢查「/etc/shadown」檔案內容,比對並確認是否採用預設密碼。而習慣圖形介面操作的管理人員,在PE管理介面中,依序點選「Health > Actions > Run NCC Checks > All Checks > Run」即可。

那麼該如何快速變更這些系統管理帳號的預設密碼呢?首先,在變更CVM本機nutanix管理帳號密碼的部分,只要登入其中一台CVM管理主機,並且執行「sudo passwd nutanix」指令,在系統提示後鍵入二次新的密碼,那麼叢集中所有的CVM主機就會自動同步並採用新的密碼。

在變更AHV虛擬化平台中,本機root、admin、nutanix管理帳號的預設密碼,官方也提供相關Script進行處理。舉例來說,變更「root」密碼時,在任一台CVM管理主機中,執行「echo -e "CHANGING ALL AHV HOST ROOT PASSWORDS.\nPlease input new password: "; read -rs password1; echo "Confirm new password: "; read -rs password2; if [ "$password1" == "$password2" ]; then for host in $(hostips); do echo Host $host; echo $password1 | ssh root@$host "passwd --stdin root"; done; else echo "The passwords do not match"; fi」指令,如圖18所示,即可一次變更叢集內所有AHV虛擬化平台中本機root帳號的預設密碼。

圖18  一次變更叢集內所有AHV虛擬化平台中本機root帳號的預設密碼。

至於PE管理介面admin帳號管理密碼的部分,只要登入後依序點選右上角的「admin > Change Password」,然後填入目前的密碼以及二次新的密碼,再按下〔Save〕按鈕即可。如果忘記admin帳號的管理密碼,或是密碼錯誤次數太多導致帳號被鎖定時,只要在任一台CVM主機中執行「ncli user reset-password user-name="admin" password="YOUR-NEW-PASSWORD"」指令,即可重設admin帳號的管理密碼並解除鎖定狀態。

確認變更所有管理帳號的預設密碼後,再次執行ncc檢查指令,或是在PE管理介面再次執行檢查作業,一旦通過檢查作業後,便可以在PE管理介面的Health健康狀態區塊中看到顯示為綠色GOOD圖示,且原先在Critical Alerts區塊中出現的警告事件也會消失,如圖19所示。

圖19  PE管理介面顯示Nutanix叢集恢復至健康狀態。

PE外觀設定

在PE管理介面外觀組態設定的部分,只要登入後依序點選「Settings > Appearance」即可。首先,在PE管理介面操作語系的部分,預設使用English,並額外支援簡體中文、日語、韓語等語系。在UI Settings頁面中,可以選擇佈景主題格式,以及組態設定閒置時預設登出時間。值得注意的是,admin管理帳號的閒置登出時間最大僅能設定「1 hour」,如圖20所示,即便設定更久時間仍是無效的。最後,在Welcome Banner頁面中,企業和組織可以根據需求將歡迎訊息以HTML格式貼上,並勾選「Enable Banner」選項後存檔離開即可。

圖20  組態設定PE管理介面預設閒置操作登出時間。

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


追蹤我們Featrue us

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

我知道了!