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主机出现连接问题——hostd和vpxa。
hostd是负责管理ESXi主机上大部分操作的主机代理,包括注册VM、可见LUN和VMFS卷。 hostd负责启动和停止VM等重要任务。VMware的hostd用于ESXi与vmkernel之间的通信。
vpxa是当ESXi主机加入vCenter Server时激活的VMware代理。还有一种情况是,vpxd在vCenter Server上与vpxa通信(vpxa是在ESXi端运行的VMware代理,vpxd是在vCenter端运行的守护程序)。vpxa与ESXi主机上的hostd通信。VMware的vpxa用作vCenter和hostd之间通信的中间服务。
如果您使用vSphere Client和vCenter来管理ESXi主机,vCenter会通过在ESXi主机上运行的vpxa进程向ESXi主机发送命令。如果您直接连接到ESXi主机管理主机,则会直接与主机上的hostd进程建立管理通信。
虚拟机受到影响?
虚拟机在重新启动 ESXi 管理代理时不会重新启动或关闭电源(您无需重新启动虚拟机)。如果要确保虚拟机不受影响,请尝试对运行在 ESXi 主机上的其中一台虚拟机进行 ping 测试,并重新启动此 ESXi 主机上的 VMware 代理。正在运行的任务可能会受到 ESXi 主机的影响或中断。确保在重新启动 ESXi 管理代理时,当前没有在 ESXi 主机上运行 VMware VM 备份 作业。
重新启动 ESXi 主机上的 ESXi 管理代理时,该主机和该主机上的虚拟机会显示为断开连接状态一小段时间。在几秒钟后刷新 VMware vSphere Client 页面,ESXi 主机和虚拟机的状态应该会恢复正常。
为避免问题,在使用 ESXi 重新启动 VMware 代理之前,请阅读博客文章末尾的注意事项,如果您在 VMware 虚拟环境中使用了 vSAN、NSX 或共享的 图形。
在直接控制台用户界面中重新启动代理 重新启动 ESXi 管理代理的最可靠方法是使用 ESXi 直接控制台用户界面(DCUI)。您必须物理访问连接有键盘和显示器的 ESXi 服务器。用于 ESXi 网络管理的服务可能不起作用,例如,您可能无法通过 SSH 远程管理主机。
重新启动ESXi管理代理的最可靠方法是使用ESXi直接控制台用户界面(DCUI)。您必须物理访问连接到服务器的键盘和显示器的ESXi服务器。用于ESXi网络管理的服务可能不可用,您可能无法通过SSH等远程方式管理主机。
- 在DCUI中按下F2以自定义系统设置。
- 为管理员帐户输入用户名和密码(root是ESXi上默认带有管理员权限的帐户)。
注意: 请耐心等待。有时您可能会遇到明显的延迟。在输入凭据和服务器对此操作的反应之间可能会有几分钟的延迟。超时可能是因为等待必须重新启动的挂起管理服务的响应。
- 接受凭据后,您应该会看到系统定制菜单。
- 选择故障排除选项并按Enter。在DCUI的右窗格中,您可以在菜单中选择选项后看到有用的提示。
- 在故障排除模式选项中选择重新启动管理代理并按Enter。
- 出现关于重新启动管理代理的配置消息。您可以按Space收集额外的故障排除信息(可选)。按F11确认并立即重新启动管理代理。
- 等待ESXi管理代理重新启动,然后检查问题是否已解决。
- 如果在DCUI中重新启动管理代理没有帮助,您可能需要查看系统日志,并通过直接访问ESXi shell或通过SSH运行ESXi命令行中的命令。您可以在DCUI中启用ESXi shell和SSH。SSH访问和ESXi shell默认情况下被禁用。
- 要启用ESXi shell,请转到故障排除选项,选择启用ESXi Shell,然后按Enter。
- 要启用远程SSH访问,请转到故障排除选项,选择启用SSH,然后按Enter。
使用VMware主机客户端
使用VMware主机客户端方便重新启动用于ESXi主机和vCenter之间连接的VMware vCenter代理vpxa。
- 在 Web 浏览器的地址栏中输入你的 ESXi 主机的 IP 地址。然后输入 ESXi 上的管理员帐户凭据以登录 VMware 主机客户端。
- 在 导航 窗格中,转到 主机 > 管理,并选择 服务 选项卡。
- 右键单击 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主机上所有可用服务(可选)的命令如下:
chkconfig –list - 在控制台输出中查找hostd和vpxa服务,并检查它们的状态。
- 使用以下命令重新启动hostd和vpxa服务(管理代理):
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
- 您也可以尝试使用此命令来重新启动ESXi主机上的所有管理代理。
services.sh restart &tail -f /var/log/jumpstart-stdout.log
VMware代理重新启动的进度将显示在控制台输出中。
- 您还可以尝试在VMkernel接口上重置管理网络:
esxcli network ip interface set -e false -i vmk0; esxcli network ip interface set -e true -i vmk0
默认情况下,在ESXi上使用vmk0接口。如果您对管理网络接口有不同的名称,请在命令中使用相应的接口名称。
这个复杂的命令由两个基本命令组成,用分号(;)分隔。第一部分命令禁用vmk0管理网络接口。当第一部分成功执行且vmk0关闭时,然后执行第二部分命令以启用vmk0接口。因此,ESXi管理网络接口将被重新启动。
通过SSH使用DCUI
如果您有对 ESXi 主机的 SSH 访问权限,您可以在 SSH 会话中打开 DCUI。这种方法允许您在控制台中使用 DCUI 的伪图形用户界面,以提供更多的便利性。
- 运行以下命令在控制台/终端中打开 DCUI:
dcui - 按 F2 进行系统自定义。
- 根据上述 DCUI 部分的说明,选择所需选项以重新启动 VMware 管理代理。
使用 PowerCLI 重新启动 VMware 管理代理
VMware PowerCLI 是另一个基于 Windows PowerShell 的工具,用于在命令行界面中管理 vCenter 和 ESXi 主机。
- 获取 ESXi 主机上可用服务的列表:
Get-VMHostService -VMHost 192.168.101.208 -Refresh- 使用 -Refresh 参数刷新数据,然后再在控制台中打印这些数据。
- 192.168.101.208 是本示例中使用的 ESXi 主机的 IP 地址。
- 根据您的配置定义 ESXi 主机的名称或 IP 地址。输出中显示的服务列表类似于 VMware Host Client 中显示的服务列表,而不是 ESXi 命令行中显示的服务列表。
- 指定将值添加到$VMHostService变量的主机和服务
$VMHostService = Get-VMHostService -VMHost 192.168.101.208 -Refresh | Where {$_.Key -eq ‘vpxa’}
其中vpxa是所需的ESXi管理服务的名称。您还可以定义另一个您想要启动、停止或重新启动的服务,例如TSM-SSH(ESXi主机上的SSH服务器服务)。 - 使用命令中的$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主机上的所有服务,网络连接会暂时中断。在这种情况下,您应该分别重新启动vpxa、hostd和fdm以重新启动主机上的ESXi管理代理。如果单独重新启动代理无法解决问题,并且您需要运行/sbin/services.sh重新启动,则应将VM从当前ESXi主机迁移,并将主机置于维护模式。
- 如果您不知道NSX是否安装在ESXi主机上,您可以使用此命令查找:
/sbin/services.sh restartesxcli software vib list –rebooting-image | grep esx-* - 如果输出中显示了vsip-esx和esx-vxlan VIB,则NSX for vSphere已安装在ESXi主机上。
- 如果在VMware View环境中使用共享图形(VGPU、vSGA、vDGA),请勿使用services.sh重新启动ESXi代理。如果使用services.sh命令重新启动管理代理,则负责客户操作系统图形的xorg服务将停止。在使用共享图形的情况下禁用客户操作系统中的图形会导致使用共享图形的虚拟桌面基础设施(VDI)崩溃。如果使用共享图形且ESXi主机未进入维护模式,则可以手动重新启动hostd和vpxa。
结论
重新启动ESXi管理代理程序可以帮助您解决与vCenter中ESXi主机断开连接状态相关的问题,以及直接连接ESXi主机时发生的错误,VM操作问题等。本博文已介绍了使用DCUI、ESXi命令行、VMware主机客户端和VMware PowerCLI重启ESXi管理代理的常见方法。通常情况下,重新启动代理不会影响虚拟机,但如果在vSphere虚拟环境中使用vSAN、NSX或共享图形用于VDI,则需要更多注意。
定期在vSphere中备份您的VMware VM以保护数据,并具有快速恢复数据和恢复工作负载的能力。NAKIVO备份与复制是一体化数据保护解决方案,支持VMware vSphere中VM的备份。该产品可安装在Windows、Linux、NAS设备上,也可作为VMware虚拟设备安装。
Source:
https://www.nakivo.com/blog/how-to-restart-management-agents-on-a-vmware-esxi-host/