如何使用Direct Console User Interface解決棘手問題
對于管理員來說,很少會遇到不能使用vCenter Server管理主機的情況,但是即便真的出現這種問題,也能夠使用其他方式進行解決。
最近我遇到了一種vSphere管理員在設計良好的網絡環境當中通常不會遇到的問題:vCenter Server無法管理ESXi主機。
如果不想使用vCenter Server或者vSphere client管理ESXi主機,那么需要提前完成一些準備工作。在這種情況下,像Dell DRAC和HP ILO這些遠程控制工具能夠發揮重要作用。使用DCUI(Direct Console User Interface)——簡單來說就是ESXi console——來管理網絡可能會有些復雜,但確是一種最為直接的方式。下面介紹一些我所了解的主機管理方式,不需要使用vSphere client——甚至是SSH。
在一個設計良好的網絡環境當中,虛擬機(VM)網絡應該和主機管理網絡相互分離,并且需要正確配置多塊物理網卡連接到不同交換機。虛擬機和管理網絡之間的流量不能相互影響。在將要分析的案例當中,虛擬機仍然能夠正常運行。如果能夠通過遠程桌面或者SSH協議登陸到虛擬機,那么管理員應該嘗試將其安全關閉。
檢查網絡基礎架構之后,發現這個問題和硬件或者交換機沒有關系,進一步排查顯示軟件驅動也不是引發問題的根本原因。
將虛擬機遷移到另外一臺主機
為了盡量減少對于業務的影響,應該首先將受影響的虛擬機轉移到另外一臺正常工作的主機當中并且重新啟動,這樣能夠保證在修復故障主機的同時依然能夠管理業務虛擬機。但是需要注意的是這臺主機服務器可能位于幾千公里之外,因此我們必須使用帶外管理系統。
DCUI或者任何遠程管理功能都不適合作為日常管理方式,但是卻能夠用來處理緊急情況。管理員可以通過這種方式關閉不能執行命令的虛擬機。在vSphere 6.0之前的版本當中,同時按下Ctrl+F1,輸入root賬戶密碼 ,就可以使用其列出幾種console功能了。但是正如之前所說的那樣,應該使用其他方式來安全關閉虛擬機。這篇文章討論的僅僅是***的應急方案,比如,虛擬機網絡和管理網絡之間出現嚴重故障。
在vSphere 6當中,如果管理員使用DCUI關閉當前主機,那么系統會提示管理員強制關閉所有未遷移虛擬機的電源。這是一項非常有用的功能,但是管理員在使用這種功能的時候需要特別小心,因為錯誤使用可能會導致大量虛擬機無法訪問。
對于vSphere 5當中的虛擬機來說,可以使用下面的命令進行定位和關閉:
可以使用下面的命令列出所有虛擬機。(注意需要關閉的虛擬機的進程ID)
esxcli vm process list
使用如下命令關閉虛擬機:
esxcli vm process kill
在關閉所有虛擬機之后,可以使用下面的命令將虛擬機置于維護模式:
esxcli system maintenanceMode set --enable true
盡管這個過程不是必須的,但是確保所有虛擬機已經被正常關閉,能夠隨時切斷主機電源是一種很好的操作流程。
結束主機維護模式
到這個階段為止,虛擬機應該已經完全獨立于之前的主機,可以在另外一臺主機上接通電源之后手動重啟。在這個案例當中,由于某種原因我必須在之前的主機上重新啟動這些虛擬機。這的確不是一種***的解決方案,但是完全能夠實現。和之前的操作類似,從結束服務器的維護模式開始,使用下面的命令:
esxcli system maintenanceMode set --enable false
之后,手動開啟虛擬機電源。所有的虛擬機文件都將位于自己的文件夾、也就是主機的\mvfs\volumes當中。使用cd命令進入目標文件夾,還可以使用tab實現名稱自動補全,這種特性可以起到很大幫助作用。每個文件夾都代表了一個data store,所以可以在對應的文件夾當中尋找虛擬機。
唯一的問題在于某些虛擬機會因為一個某些罕見錯誤而無法啟動或者最終超時。對于這種情況來說,需要檢查問題虛擬機當中的vmware.log(位于虛擬機文件夾當中)文件以查明具體錯誤信息,
這邊文章不可能列舉出管理員可能遇到的所有錯誤和復雜問題,但是為管理員提供了一種良好的排錯思路。
這種問題通常不會經常發生。如果虛擬機被劃分到單獨的網絡端口組和鏈路當中,并且能夠響應遠程客戶端請求,那么就更像是管理問題,可以在非工作時間使用一種更為安全的方式進行修復,降低可能造成的影響。幸運的情況下,還有可能是網路連接問題,可以在不導致任何故障時間的情況下將問題解決。