如何在 VMware ESXi 主機上重新啟動管理代理程式

VMware ESXi 是 VMware vSphere 虛擬化平台的一部分。所有虛擬化軟體在某個時刻都可能會出現問題。例如,在 vSphere 中,您可能無法連接到 ESXi,或將 ESXi 主機連接到 vCenter,或者在 vCenter 中顯示錯誤訊息並且無法創建 VM。重新啟動 ESXi 主機在某些情況下可能會幫助您。但是,您將不得不關閉虛擬機器(VM)或將它們遷移到另一個主機,這在生產環境中是一個問題。最好先重新啟動 ESXi 管理代理。重新啟動 ESXi 主機的管理代理很有可能可以解決問題。

症狀

讓我首先列出需要重新啟動 ESXi 管理代理的常見症狀:

  • 無法直接連接到 ESXi 主機或在 vCenter 下管理此主機。
  • ESXi 主機與 vCenter 斷開連接,但 VM 仍在 ESXi 主機上運行。
  • 當您嘗試創建虛擬機器(VM)時,vCenter 顯示以下錯誤:

由於代理無法從主機檢索 VM 創建選項,虛擬機器的創建可能會失敗

  • 在 ESXi 主機之間遷移 VM 未執行,並返回以下錯誤:

重新定位虛擬機

在主機的當前連接狀態下不允許此操作

  • 在選擇 VM 時未在摘要標籤中顯示運行中 VM 的信息:

CPU 使用量 – 0 MHz

記憶體使用量 – 0.00 MB

ESXi 管理代理的角色

ESXi 管理代理用於同步 VMware 組件,使從 vCenter Server 可以訪問 ESXi 主機。VMware 代理已包含在默認配置中,並在安裝 ESXi 時安裝。ESXi 上有兩個主要的代理,可能需要重新啟動,如果 ESXi 主機出現連接問題 – hostdvpxa

hostd 是一個主機代理,負責管理 ESXi 主機上的大部分操作,並註冊 VM、可見的 LUNs 和 VMFS 卷。hostd 負責啟動和停止 VM 和類似的重要任務。VMware 的 hostd 用於 ESXi 和 vmkernel 之間的通信。

vpxa 是當 ESXi 主機加入 vCenter Server 時在 ESXi 主機上啟動的 VMware 代理。還有一種情況是,vpxd 在 vCenter Server 上與 ESXi 主機上的 vpxa 通信(vpxa 是運行在 ESXi 方的 VMware 代理,vpxd 是在 vCenter 方運行的守護程序)。vpxa 與 ESXi 主機上的 hostd 通信。VMware 的 vpxa 用作 vCenter 和 hostd 之間通信的中介服務。

如果您使用 vSphere Client 和 vCenter 管理 ESXi 主機,vCenter 會通過運行在 ESXi 主機上的 vpxa 過程向 ESXi 主機傳遞命令。如果您直接連接到 ESXi 主機來管理主機,那麼直接與主機上的 hostd 過程建立通信以進行管理。

VMs 受到怎樣的影響?

當您重新啟動 ESXi 管理代理時(您無需重新啟動虛擬機器),虛擬機器不會重新啟動或關機。如果您希望確保虛擬機器不受影響,請嘗試對運行在 ESXi 主機上的其中一個虛擬機器進行 ping 測試,然後重新啟動該 ESXi 主機上的 VMware 代理。正在運行於 ESXi 主機上的任務可能會受到影響或中斷。請確保在重新啟動 ESXi 管理代理時,該 ESXi 主機上沒有正在運行的 VMware 虛擬機器備份作業。

重新啟動 ESXi 主機上的 ESXi 管理代理時,該主機和其上的虛擬機器將會斷開連接片刻時間。請在幾秒鐘後刷新 VMware vSphere 客戶端中的頁面,ESXi 主機和虛擬機器的狀態應該是正常的。

為了避免問題,在使用 ESXi 重新啟動 VMware 代理之前,請在博客文章的末尾閱讀注意事項,特別是如果您在 VMware 虛擬環境中使用了 vSAN、NSX 或共享圖形功能。

在直接控制台 UI 中重新啟動代理

重新啟動ESXi管理代理的最可靠方法是使用ESXi直接控制台用戶界面(DCUI)。您必須物理訪問連接到伺服器的鍵盤和顯示器的ESXi伺服器。用於ESXi網絡管理的服務可能無法正常工作,您可能無法遠程管理主機,例如通過SSH。

  1. F2在DCUI中自定義系統設置。
  2. 輸入管理帳戶的用戶名和密碼(root是ESXi上具有管理權限的默認帳戶)。
    注意:請耐心等待。有時您可能會遇到顯著的延遲。輸入憑據和伺服器對此操作的反應之間的延遲可能需要幾分鐘。超時可能是由於等待必須重新啟動的掛起管理服務的響應而引起的。

  1. 接受憑據後,您應該看到系統自定義菜單。
  2. 選擇故障排除選項並按Enter。在DCUI的右窗格中,您可以在菜單中選擇選項後看到有用的提示。

  1. 故障排除模式選項中選擇重新啟動管理代理並按Enter

  1. 關於重新啟動管理代理的配置消息將出現。您可以按Space收集額外的故障排除信息(可選)。按F11確認並立即重新啟動管理代理。

  1. 等待 ESXi 管理代理程式重新啟動,然後檢查問題是否已解決。
    • 如果在 DCUI 中重新啟動管理代理程式無法解決問題,您可能需要查看系統日誌並通過直接訪問 ESXi shell 或通過 SSH 執行 ESXi 命令列中的命令。您可以在 DCUI 中啟用 ESXi shell 和 SSH。SSH 存取和 ESXi shell 默認情況下已禁用。
    • 要啟用 ESXi shell,請轉到故障排除選項,選擇啟用 ESXi shell,然後按Enter
    • 要啟用遠程 SSH 存取,請轉到故障排除選項,選擇啟用 SSH,然後按Enter

使用 VMware 主機用戶端

使用 VMware 主機用戶端方便地重新啟動 VMware vCenter 代理程式vpxa,該代理程式用於 ESXi 主機和 vCenter 之間的連接。

  1. 在網頁瀏覽器的地址欄中輸入您的 ESXi 主機的 IP 地址。然後輸入 ESXi 上的管理帳戶的憑據以登錄到 VMware 主機客戶端。
  2. 導覽 面板中,前往 主機 > 管理,並選擇 服務 標籤。
  3. 右鍵點擊 vpxa 服務,然後在上下文菜單中按 重新啟動

如果無法打開 VMware 主機客戶端,請使用其他方法重新啟動 ESXi 管理代理。您可以啟動 TSM-SSH 服務以啟用對 ESXi 主機的遠程 SSH 訪問。

在 ESXi Shell(SSH)中重新啟動 VMware 代理

ESXi 命令行界面(CLI)是管理 ESXi 主機和進行故障排除的強大工具。必須啟用對 ESXi 主機的遠程管理以使用 SSH 訪問。使用 SSH 客戶端連接到 ESXi 主機以遠程使用命令行界面。您可以在 Windows 機器上使用 PuTTY 作為 SSH 客戶端。定義 ESXi 服務器的 IP 地址或主機名,選擇端口(默認為 22),然後在 SSH 客戶端中輸入管理憑據。然後,您應該通過 SSH 看到控制台(終端)會話。

如果要直接使用 ESXi shell(無需遠程訪問),則必須啟用 ESXi shell,並使用鍵盤和顯示器物理連接到 ESXi 服務器。閱讀有關 ESXCLI 的部落格文章以了解有關 ESXi 命令行選項的更多信息。注意:本部落格文章中使用的命令與 ESXi 6.x 和 ESXi 7.x 兼容。

注意:本博文中使用的命令兼容于 ESXi 6.x 和 ESXi 7.x。

  1. 列出 ESXi 主机上所有可用服务(可选)的命令如下:
    chkconfig –list
  2. 在控制台输出中查找 hostdvpxa 服务,并检查它们的状态。

  1. 使用以下命令重新启动 hostdvpxa 服务(管理代理):
    /etc/init.d/hostd restart
    /etc/init.d/vpxa restart

  1. 作为替代,可以使用此命令来重新启动 ESXi 主机上的所有管理代理。
    services.sh restart &tail -f /var/log/jumpstart-stdout.log
    VMware 代理重新启动的进度将显示在控制台输出中。

  1. 您还可以尝试重置 VMkernel 接口上的管理网络:
    esxcli network ip interface set -e false -i vmk0; esxcli network ip interface set -e true -i vmk0

vmk0 接口在 ESXi 上默认使用。如果您的管理网络接口有不同的名称,请在命令中使用相应的接口名称。

这个复杂的命令由两个基本命令组成,用 ;(分号)分隔。第一部分命令会禁用 vmk0 管理网络接口。当第一部分成功执行且 vmk0 处于关闭状态时,第二部分命令将被执行以启用 vmk0 接口。因此,ESXi 管理网络接口将被重新启动。

通过 SSH 使用 DCUI

如果您可以通过SSH访问ESXi主机,则可以在SSH会话中打开DCUI。这种方法允许您在控制台中使用DCUI的伪图形用户界面,以获得更多便利。

  1. 运行以下命令以在控制台/终端中打开DCUI:
    dcui
  2. F2自定义系统设置。
  3. 根据上述DCUI的说明,选择需要的选项以重新启动VMware管理代理。

使用PowerCLI重新启动VMware管理代理

VMware PowerCLI是另一种基于Windows PowerShell的工具,用于在命令行界面中管理vCenter和ESXi主机。

  1. 获取ESXi主机上可用服务的列表:
    Get-VMHostService -VMHost 192.168.101.208 -Refresh

    • 在将数据打印到控制台之前,使用-Refresh参数刷新数据。
    • 192.168.101.208是本示例中使用的ESXi主机的IP地址。
  2. 根据您的配置定义ESXi主机的名称或IP地址。输出中显示的服务列表与VMware Host Client中显示的服务列表类似,而不是ESXi命令行中显示的服务列表。

  1. 指定主機和服務以將值添加到 $VMHostService
    $VMHostService = Get-VMHostService -VMHost 192.168.101.208 -Refresh | Where {$_.Key -eq ‘vpxa’}
    其中 vpxa 是所需的ESXi管理服務的名稱。您也可以定義您想要啟動、停止或重新啟動的其他服務,例如, TSM-SSH (ESXi主機上的SSH服務)。
  2. 使用 $VMHostService 變量在命令中重新啟動 vpxa 服務:
    Restart-VMHostService -HostService $VMHostService -Verbose

  • 您也可以手動停止和啟動服務:

Stop-VMHostService -HostService $VMHostService

Start-VMHostService -HostService $VMHostService

  • 您可以嘗試使用替代命令來重新啟動vpxa:

Get-VMHostService -VMHost 192.168.101.208 | where {$_.Key -eq “vpxa”} | Restart-VMHostService -Confirm:$false -ErrorAction SilentlyContinue

注意事項

  • 如果在屬於vSAN集群的ESXi主機上使用連接聚合控制協議(LACP),請勿使用 services.sh 命令重新啟動ESXi管理代理。
    使用 /etc/init.d/module restart 重新啟動獨立服務。
  • 如果在您的 VMware 虛擬環境中配置了 NSX,請勿使用 /sbin/services.sh 重新啟動命令。該命令會重新啟動 ESXi 主機上的所有服務,並且網絡連接會暫時中斷。在這種情況下,您應該分別重新啟動 vpxahostdfdm 以重新啟動主機上的 ESXi 管理代理。如果分別重新啟動代理無法解決問題,並且您需要運行 /sbin/services.sh 重新啟動命令,那麼請將虛擬機器(VMs)從當前的 ESXi 主機遷移並將主機放入維護模式。
  • 如果您不知道 NSX 是否安裝在 ESXi 主機上,您可以使用此命令查找:
    /sbin/services.sh restartesxcli software vib list –rebooting-image | grep esx-*
  • 如果輸出中顯示了 vsip-esxesx-vxlan VIB,則表示 NSX for vSphere 安裝在 ESXi 主機上。
  • 如果在 VMware View 環境中使用共享圖形(VGPU、vSGA、vDGA),請勿使用 services.sh 重新啟動 ESXi 代理。如果使用 services.sh 命令重新啟動管理代理,則負責處理客戶操作系統圖形的 xorg 服務將停止運行。在使用共享圖形並且 ESXi 主機未進入維護模式的情況下,您可以手動重新啟動 hostdvpxa

結論

重新啟動 ESXi 管理代理可以幫助您解決在 vCenter 中 ESXi 主機斷開連接狀態、直接連接到 ESXi 主機時發生的錯誤、VM 操作問題等問題。本博客文章已涵蓋使用 DCUI、ESXi 命令行、VMware Host Client 和 VMware PowerCLI 重新啟動 ESXi 管理代理的常見方法。一般來說,重新啟動代理不會影響虛擬機,但如果在 vSphere 虛擬環境中使用了 vSAN、NSX 或 VDI 的共享圖形,則需要更多注意。

定期在 vSphere 中備份您的 VMware 虛擬機,以保護數據並具有快速恢復數據和還原工作負載的能力。NAKIVO Backup & Replication 是一款全面的數據保護解決方案,支持在 VMware vSphere 中備份虛擬機。該產品可安裝在 Windows、Linux、NAS 設備上,也可作為 VMware 虛擬設備使用。

Source:
https://www.nakivo.com/blog/how-to-restart-management-agents-on-a-vmware-esxi-host/