Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

6.6. 主机弹性

6.6.1. 主机高可用性

Red Hat Virtualization Manager 使用隔离(fencing)功能来确保集群中的主机可以对请求做出响应。Non Responsive(无响应)的主机和 Non Operational(无法正常工作) 的主机有所不同。Non Operational 的主机可能可以和 Manager 进行交流,但它可能有不正确的配置(例如,缺少一个逻辑网络)。Non Responsive 主机无法和 Manager 进行交流。
当一个带有电源管理设备的主机无法和 Manager 进行交流时,它可以通过管理门户被隔离(重新启动)。在它上面运行的所有虚拟机会停止运行,而其中的高可用性虚拟机会被迁移到其它主机上运行。
所有电源管理操作都是通过使用一个代理主机进行的,而不是使用 Red Hat Virtualization Manager 进行直接操作。因此,电源管理需要最少两台主机。
隔离(fencing)功能可以使集群处理意外的主机故障,并保证电源节省、负载平衡和虚拟机可用性的策略。您应该为您的主机的电源管理设备配置隔离参数,并经常对它们进行测试。
主机可以通过使用电源管理参数进行自动隔离,也可以在主机上点鼠标右键性选择相应的操作来手动隔离它。在一个隔离操作过程中,一个无响应的主机会被重启,如果它在设定的时间内没有恢复到正常状态,它会保持在无响应状态。如果出现这个情况,您需要对它进行手工故障排除。
如果一个主机需要运行高可用性的虚拟机,电源管理功能必须被启用并被正确配置。

6.6.2. 在 Red Hat Virtualization 环境中使用代理进行电源管理

Red Hat Virtualization Manager 不直接和隔离设备进行通讯,它使用一个代理来向主机的电源管理设备发送电源管理命令。Manager 需要使用 VDSM 来进行电源管理设备的操作,因此环境中还需要另外一个主机作为隔离代理。
您可以选择:
  • 需要隔离功能的主机所在的同一个集群中的任何主机。
  • 需要隔离功能的主机所在的同一个数据中心中的任何主机。
隔离代理主机的状态有两种:UPMaintenance

6.6.3. 在主机上设置隔离(fencing)参数

主机隔离的参数可以通过新建主机编辑主机窗口中的电源管理中的项进行设置。电源管理功能将允许系统通过使用额外的接口,如 Remote Access Card (RAC),对有问题的主机进行隔离。
所有电源管理操作都是通过使用一个代理主机进行的,而不是使用 Red Hat Virtualization Manager 进行直接操作。因此,电源管理需要最少两台主机。

过程 6.17. 在一个主机上设置隔离参数

  1. 使用主机资源标签页、树形模式或搜索功能来找到并选择主机。
  2. 编辑打开编辑主机窗口。
  3. 电源管理标签页。
    电源管理设置

    图 6.2. 电源管理设置

  4. 选中启用电源管理选项来使其它选项可用。
  5. 选择 Kdump 集成选项可以防止在发生内核 crash dump 时,主机进行隔离(fencing)操作。

    重要

    如果您在已经存在的主机上启用 Kdump 集成选项,您需要在重新安装这些主机来配置 kdump。详情请参阅 第 6.5.11 节 “重新安装主机”
  6. 或者,如果不希望主机所在集群的调度策勒控制主机的电源管理,则选择禁用电源管理的策略控制
  7. 点加号(+)按钮来添加新的电源管理设备。编辑隔离代理窗口会被打开。
    编辑隔离代理

    图 6.3. 编辑隔离代理

  8. 在相关的项中输入电源管理设备的地址用户名密码
  9. 从下拉列表中选择电源管理设备的类型

    注意

    如需了解如何设置一个自定义电源管理设备的信息,请参阅 https://access.redhat.com/articles/1238743
  10. 输入电源管理设备用来和主机进行交流所使用的 SSH 端口号。
  11. 输入用来识别电源管理设备刀片的 Slot 号。
  12. 为电源管理设备输入选项。使用逗号分隔多个选项,选项的格式是 'key=value'
  13. 选择安全性选择框来使电源管理设备通过安全的方法和主机进行交流。
  14. 测试来测试电源管理设备。如果测试成功,Test Succeeded, Host Status is: on 将会被显示。

    警告

    电源管理的参数(userid、password、options 等) 只在设置 Red Hat Virtualization Manager 时被测试,或在设置后通过手动进行测试。如果您忽略了关于不正确参数的提示信息,或电源管理硬件设备的参数有变化而您没有在 Red Hat Virtualization Manager 中进行相应的修改,当系统需要隔离操作时,隔离操作很可能会失败。
  15. 确定关闭编辑隔离代理窗口。
  16. 电源管理标签页中,还可以展开高级参数项,使用向上或向下按钮来指定 Manager 搜索主机的集群dc(datacenter)作为隔离代理的顺序。
  17. 确定
您将会返回到主机列表界面,而主机旁边的惊叹号会消失。这意味着电源管理已经被成功配置。

6.6.4. fence_kdump 高级配置

kdump

选择一个主机,通过详情框中的常规标签页可以查看它上面的 kdump 服务的状态:

  • 启用:kdump 被正确配置,并正在运行。
  • 禁用:kdump 服务没有运行(kdump 集成功能不能正常工作)。
  • 未知:只会在老的、不会报告 kdump 状态的主机上发生。
如需了解更多与安装和使用 kdump 相关的信息,请参阅 Red Hat Enterprise Linux 7 Kernel Crash Dump Guide
fence_kdump

新建主机编辑主机窗口中,选择电源管理标签页,启用 Kdump 集成选项来配置标准的 fence_kdump 设置。如果环境的网络设置比较简单,Manager 的 FQDN 可以被所有主机解析到,默认的 fence_kdump 设置应该就可以正常工作。

但是在一些情况下,可能需要更复杂的 fence_kdump 配置。当环境中的网络比较复杂时,可能需要手工修改 Manager、fence_kdump listener 的配置。例如,当启用了Kdump 集成,而 Manager 的 FQDN 无法被所有主机解析到时,您就需要设置一个正确的主机名或 IP 地址(使用 engine-config 命令):
engine-config -s FenceKdumpDestinationAddress=A.B.C.D
以下的情况可能也需要修改配置:
  • Manager 有两个网卡,其中的一个是可以被公共网络连接,而另外一个是 fence_kdump 信息发送的首选目的地。
  • 您需要在一个不同的 IP 地址或端口上执行 fence_kdump listener。
  • 为了防止数据包的丢失,您需要设置一个自定义的 fence_kdump 通知信息间隔时间。
我们只推荐高级用户使用自定义的 fence_kdump 设置,只有复杂的网络才需要修改默认的设置。如需了解与 fence_kdump listener 选项相关的信息,请参阅 第 6.6.4.1 节 “fence_kdump listener 配置”;如需了解在 Manager 上配置 kdump 的信息,请参阅 第 6.6.4.2 节 “在 Manager 上配置 fence_kdump”

6.6.4.1. fence_kdump listener 配置

编辑 fence_kdump listener 的配置。请只在默认设置无法满足您的需要时进行。

过程 6.18. 手工配置 fence_kdump Listener

  1. /etc/ovirt-engine/ovirt-fence-kdump-listener.conf.d/ 中创建一个文件(例如,my-fence-kdump.conf)。
  2. 使用 OPTION=value 的格式输入您的自定义配置,并保存文件。

    重要

    被编辑的值同时也需要在 engine-config 中进行修改(请参阅 fence_kdump listener 配置选项表,第 6.6.4.2 节 “在 Manager 上配置 fence_kdump”)。
  3. 重新启动 fence_kdump listener:
    # service ovirt-fence-kdump-listener restart
在需要的情况下,以下选项可以被自定义:

表 6.6. fence_kdump listener 配置选项

变量描述默认值注意
LISTENER_ADDRESS指定接收 fence_kdump 信息的 IP 地址。0.0.0.0如果这个参数的值被改变,它必须和 engine-config 中的 LISTENER_PORT 值相匹配。
LISTENER_PORT指定接收 fence_kdump 信息的端口。7410如果这个参数的值被改变,它必须和 engine-config 中的 FenceKdumpDestinationPort 值相匹配。
HEARTBEAT_INTERVAL指定 listener 的"心跳" 更新的间隔时间(以秒为单位)。30如果这个参数的值被改变,它必须不大于 engine-config 中的 FenceKdumpListenerTimeout 值的一半。
SESSION_SYNC_INTERVAL在内存和数据库间同步 listener 的主机 kdump 会话的间隔时间(以秒为单位)。5如果这个参数的值被改变,它必须不大于 engine-config 中的 KdumpStartedTimeout 值的一半。
REOPEN_DB_CONNECTION_INTERVAL重新尝试打开以前无效的数据库连接的间隔时间。30-
KDUMP_FINISHED_TIMEOUT当主机的 kdump 已被标记为 FINISHED 后,最后一次接收从 kdumping 主机发送的信息的最大超时时间(以秒为单位)。60如果这个参数的值被改变,它必须不小于 engine-config 中的 FenceKdumpMessageInterval 的值的两倍。

6.6.4.2. 在 Manager 上配置 fence_kdump

编辑 Manager 的 kdump 配置(请只在默认设置无法满足您的需要时进行)。使用以下命令可以查看 kdump 的当前配置:
# engine-config -g OPTION

过程 6.19. 使用 engine-config 手工配置 Kdump

  1. 使用 engine-config 命令编辑 kdump 的配置:
    # engine-config -s OPTION=value

    重要

    被编辑的值同时需要在 fence_kdump listener 的配置文件中修改(请参阅 Kdump 配置选项 第 6.6.4.1 节 “fence_kdump listener 配置”)。
  2. 重新启动 ovirt-engine 服务:
    # service ovirt-engine restart
  3. 如果需要,重新安装所有启用了Kdump 集成选项的主机(请参阅以下的表格) 。
以下选项可以使用 engine-config 进行配置:

表 6.7. Kdump 配置选项

变量描述默认值备注
FenceKdumpDestinationAddress指定 fence_kdump 信息要被发送到的系统的主机名或 IP 地址。如果为空,Manager 的 FQDN 会被使用。空(Manager 的 FQDN 被使用)如果这个参数的值被改变,它必须和 fence_kdump listener 配置文件中的 LISTENER_ADDRESS 值相匹配,所有启用了 Kdump 集成的主机都需要被重新安装。
FenceKdumpDestinationPort指定 fence_kdump 信息要被发送到的端口。7410如果这个参数的值被改变,它必须和 fence_kdump listener 配置文件中的 LISTENER_PORT 值相匹配,所有启用了 Kdump 集成的主机都需要被重新安装。
FenceKdumpMessageInterval指定 fence_kdump 发送信息的间隔时间(以秒为单位)。5如果这个参数的值被改变,它必须不大于 fence_kdump listener 配置文件中的 KDUMP_FINISHED_TIMEOUT 值的一半,所有启用了 Kdump 集成的主机都需要被重新安装。
FenceKdumpListenerTimeout指定认为 fence_kdump listener 处于运行状态的最大“心跳”超时时间(以秒为单位)。90如果这个参数的值被改变,它必须不小于 fence_kdump listener 配置文件中的 HEARTBEAT_INTERVAL 值的两倍。
KdumpStartedTimeout指定接收从 kdump 主机发出的第一个信息(认为主机 kdump 已开始)的最大等待超时时间(以秒为单位)。30如果这个参数的值被改变,它必须不小于 fence_kdump listener 配置文件中的 SESSION_SYNC_INTERVAL 值和 FenceKdumpMessageInterval 值的两倍。

6.6.5. Soft-Fencing 主机

有些时候,一个主机会因为无法预见的问题造成它处于无响应状态。此时尽管 VDSM 对所做出的请求无法响应,但依赖于 VDSM 的虚拟机仍然可以被访问。在这种情况下,重新启动 VDSM 就可能解决这个问题。
"SSH Soft Fencing" 是 Manager 试图通过 SSH 在一个没有响应的主机上重启 VDSM 的过程。如果 Manager 无法通过 SSH 重启 VDSM,而且配置了外部的隔离代理,则隔离操作将由外部的隔离代理进行处理。
要使用 soft-fencing over SSH 功能,主机必须配置并启用了隔离,一个有效的代理主机(数据中心中的另外一个主机,它的状态是 UP)必须存在。当 Manager 和主机的连接出现超时的情况时,以下事件会发生:
  1. 在网络出现第一次失败时,主机的状态变为 "connecting"。
  2. Manager 然后会尝试 3 次向 VDSM 询问它的状态,或根据主机的负载等待一段时间。这个等待的时间是通过以下公式计算的:TimeoutToResetVdsInSeconds(默认值是 60 秒)+ [DelayResetPerVmInSeconds(默认值是 0.5 秒)]*(在主机上运行的虚拟机的数量)+ [DelayResetForSpmInSeconds(默认值是 20 秒)] * 1(如果主机是 SPM)或 0(如果主机不是 SPM)。为了留给 VDSM 最大的响应时间,Manager 会选择以上两个操作所需的最长时间。
  3. 如果在所需要的间隔时间后主机还没有响应,vdsm restart 命令会通过 SSH 执行。
  4. 如果 vdsm restart 命令无法在主机和 Manager 间重新创建连接,主机的状态将变为 Non Responsive,如果电源管理被配置,外部的隔离代理(external fencing agent)将会进行相应的隔离操作。

注意

Soft-fencing over SSH 可以在没有配置电源管理的主机上运行。这和一般的隔离(fencing)有所不同:一般的隔离只能在配置了电源管理的主机上运行。

6.6.6. 使用电源管理功能

介绍

当电源管理功能在一个主机上被配置后,您可以通过管理门户界面进行相关的操作。虽然不同的电源管理设备可以进行不同的操作,但是它们都支持基本的操作,如启动、关闭和重新启动一个主机。

过程 6.20. 使用电源管理功能

  1. 使用主机资源标签页、树形模式或搜索功能来找到并选择主机。
  2. 电源管理下拉菜单。
  3. 选择以下的选项之一:
    • 重启:这个选项会关闭所有的主机并等待主机的状态变为 Down。当代理已经确认主机的状态已经变为 down,高可以性虚拟机已经在集群中的其它主机上被重新启动后,它会重新启动这个主机。当主机启动后,它的状态变为 Up
    • 启动:这个选项会启动主机并把它加入到一个集群中。当主机启动后,它的状态变为 Up
    • 停止:这个选项会关闭主机。在使用这个选项前,您需要确保在这个主机上运行的虚拟机已经被迁移到集群中的其它主机上。否则,所有的虚拟机都会出现问题,只有那些设置为高可用性的虚拟机会在其它主机上被重新启动。当主机被关闭后,它的状态变为 Non-Operational

    重要

    如果在一个主机上定义了两个隔离代理(fencing agent),它们可以被“同时”使用,也可以被“相继”使用。如果是"同时"使用的代理,在两个代理都收到停止命令时才可以停止主机,而当一个代理收到启动命令时,主机就会被启动。如果是"相继"使用的代理,对于启动和停止一个主机的操作,“主要的”代理会被首先使用,如果“主要的”代理操作失败,“次要的”代理会被使用。
  4. 选择以上的选项之一后会出现一个确认窗口,点确定进行确认。
结果

所选择的操作被执行。

6.6.7. 手动隔离或分离一个没有响应的主机

介绍

当一个主机在没有预见的情况下变为了没有响应的状态(例如,出现了硬件故障),整个系统的性能可以会受到极大的影响。如果您没有电源管理设备,或电源管理设备没有被正确配置,您可能需要手动重新启动主机。

警告

在您确认已经手工重启了主机前,请不要使用确认主机已经重启选项。如果在主机还在运行时使用这个选项,有可能会导致虚拟机的镜像被破坏。

过程 6.21. 手动隔离或分离一个没有响应的主机

  1. 主机标签页中选择主机。这个主机的状态需要是 non-responsive
  2. 手动重启这个主机。这可能意味着您需要进入机房,手工重新启动这个主机。
  3. 在管理门户中的主机上点鼠标右键,选择确认主机己经重启键。
  4. 一个提示您确认主机已经被停止或重启的信息会被显示。选择批准操作选项并点确定
结果

您手动重启了您的主机,高可用性的虚拟机被迁移到其它主机上。您在管理门户中确认了手动隔离的操作,主机可以被重新使用。