附录 A. 对自托管引擎部署进行故障排除

若要确认自托管引擎是否已部署,请运行 hosted-engine --check-deployed。只有尚未部署自托管引擎,才会显示错误。

A.1. Manager 虚拟机故障排除

运行 hosted-engine --vm-status,检查管理器虚拟机的状态。

注意

对 Manager 虚拟机所做的任何更改都将花费大约 20 秒时间才能反映到 status 命令输出中。

根据输出中的引擎状态,请查看以下建议来查找或修复问题。

引擎状态:"health": "good", "vm": "up" "detail": "up"

  1. 如果 Manager 虚拟机已启动并正常运行,您会看到以下输出:

    --== Host 1 status ==--
    
    Status up-to-date              : True
    Hostname                       : hypervisor.example.com
    Host ID                        : 1
    Engine status                  : {"health": "good", "vm": "up", "detail": "up"}
    Score                          : 3400
    stopped                        : False
    Local maintenance              : False
    crc32                          : 99e57eba
    Host timestamp                 : 248542
  2. 如果输出为正常但无法连接到 Manager,请检查网络连接。

引擎状态:"reason": "failed liveliness check", "health": "bad", "vm": "up", "detail": "up"

  1. 如果健康状况badvmup,HA 服务将尝试重新启动 Manager 虚拟机,以使管理器返回。如果几分钟内不成功,请从命令行启用全局维护模式,以便主机不再由 HA 服务管理。

    # hosted-engine --set-maintenance --mode=global
  2. 连接到控制台。出现提示时,输入操作系统的 root 密码。如需了解更多控制台选项,请参阅 https://access.redhat.com/solutions/2221461

    # hosted-engine --console
  3. 登录,确保管理器虚拟机的操作系统正在运行。
  4. 检查 ovirt-engine 服务的状态:

    # systemctl status -l ovirt-engine
    # journalctl -u ovirt-engine
  5. 检查以下日志:/var/log/messages/var/log/ovirt-engine/engine.log,/var/log/ovirt-engine/server.log
  6. 修复这个问题后,从其中一个自托管引擎节点手动重启 Manager 虚拟机:

    # hosted-engine --vm-shutdown
    # hosted-engine --vm-start
    注意

    当自托管引擎节点处于全局维护模式时,必须手动重启管理器虚拟机。如果您尝试通过从命令行发送 reboot 命令重新启动 Manager 虚拟机,则 Manager 虚拟机将保持关闭状态。这是设计中的。

  7. 在 Manager 虚拟机上,验证 ovirt-engine 服务是否已启动并在运行:

     # systemctl status ovirt-engine.service
  8. 确保 Manager 虚拟机启动并运行后,关闭控制台会话并禁用维护模式以再次启用 HA 服务:

    # hosted-engine --set-maintenance --mode=none

引擎状态:"vm": "down", "health": "bad", "detail": "unknown", "reason": "vm not running on this host"

  1. 如果您的环境中有多个主机,请确保另一个主机当前没有尝试重启 Manager 虚拟机。
  2. 确保您不在全局维护模式。
  3. 检查 /var/log/ovirt-hosted-engine-ha/agent.log 中的 ovirt-ha-agent 日志。
  4. 尝试从其中一个自托管引擎节点手动重启 Manager 虚拟机:

    # hosted-engine --vm-shutdown
    # hosted-engine --vm-start

引擎状态:"vm": "unknown", "health": "unknown", "detail": "unknown", "reason": "failed to getVmStats"

此状态表示 ovirt-ha-agent 无法从 VDSM 获取虚拟机的详细信息。

  1. 检查 /var/log/vdsm/vdsm.log 中的 VDSM 日志。
  2. 检查 /var/log/ovirt-hosted-engine-ha/agent.log 中的 ovirt-ha-agent 日志。

引擎状态:自托管引擎的配置尚未从共享存储中检索

如果您的状态为 The hosted engine configuration has not been retrieved from shared storage.Please ensure that ovirt-ha-agent is running and the storage server is reachable,这代表 ovirt-ha-agent 服务或存储有问题,或两者都有问题。

  1. 检查主机上的 ovirt-ha-agent 状态:

    # systemctl status -l ovirt-ha-agent
    # journalctl -u ovirt-ha-agent
  2. 如果 ovirt-ha-agent 停机,重启它:

    # systemctl start ovirt-ha-agent
  3. /var/log/ovirt-hosted-engine-ha/agent.log 中检查 ovirt-ha-agent 日志。
  4. 检查您可以 ping 共享存储。
  5. 检查是否挂载了共享存储。

其他故障排除命令

重要

如果您认为需要运行任何这些命令对自托管引擎环境进行故障排除,请联系红帽支持团队。

  • hosted-engine --reinitialize-lockspace:当 sanlock 锁定空间出现问题时,将使用此命令。确保已启用全局维护模式,并在重新初始化 sanlock 锁定空间前停止 Manager 虚拟机。
  • hosted-engine --clean-metadata:从全局状态数据库中删除主机的代理元数据。这可以使得所有其他主机忘记这个主机。确保目标主机已停机,并且启用了全局维护模式。
  • hosted-engine --check-liveliness:该命令检查 ovirt-engine 服务的存活度页面。您还可以在 Web 浏览器中连接到 https://engine-fqdn/ovirt-engine/services/health/ 来检查。
  • hosted-engine --connect-storage:该命令指示 VDSM 准备主机和管理器虚拟机所需的所有存储连接。这通常在自托管引擎部署期间在后端运行。如果您需要运行此命令来排除存储问题,请确保已启用全局维护模式。