7.6. 主机弹性
7.6.1. 主机高可用性
7.6.2. 在 Red Hat Virtualization 环境中使用代理进行电源管理
- 需要隔离功能的主机所在的同一个集群中的任何主机。
- 需要隔离功能的主机所在的同一个数据中心中的任何主机。
7.6.3. 在主机上设置隔离(fencing)参数
过程 7.16. 在一个主机上设置隔离参数
- 使用主机资源标签页、树形模式或搜索功能来找到并选择主机。
- 点编辑主机窗口。打开
- 点电源管理标签页。
图 7.2. 电源管理设置
- 选中启用电源管理选项来使其它选项可用。
- 选择 Kdump 集成选项可以防止在发生内核 crash dump 时,主机进行隔离(fencing)操作。
重要
如果您在已经存在的主机上启用 Kdump 集成选项,您需要在重新安装这些主机来配置 kdump。详情请参阅 第 7.5.11 节 “重新安装主机”。 - 或者,如果不希望主机所在集群的调度策勒控制主机的电源管理,则选择禁用电源管理的策略控制。
- 点加号(编辑隔离代理窗口会被打开。)按钮来添加新的电源管理设备。
图 7.3. 编辑隔离代理
- 在相关的项中输入电源管理设备的地址、用户名和密码。
- 从下拉列表中选择电源管理设备的类型。
注意
如需了解如何设置一个自定义电源管理设备的信息,请参阅 https://access.redhat.com/articles/1238743。 - 输入电源管理设备用来和主机进行交流所使用的 SSH 端口号。
- 输入用来识别电源管理设备刀片的 Slot 号。
- 为电源管理设备输入选项。使用逗号分隔多个选项,选项的格式是 'key=value'。
- 选择安全性选择框来使电源管理设备通过安全的方法和主机进行交流。
- 点Test Succeeded, Host Status is: on 将会被显示。来测试电源管理设备。如果测试成功,
警告
电源管理的参数(userid、password、options 等) 只在设置 Red Hat Virtualization Manager 时被测试,或在设置后通过手动进行测试。如果您忽略了关于不正确参数的提示信息,或电源管理硬件设备的参数有变化而您没有在 Red Hat Virtualization Manager 中进行相应的修改,当系统需要隔离操作时,隔离操作很可能会失败。 - 点编辑隔离代理窗口。关闭
- 在电源管理标签页中,还可以展开高级参数项,使用向上或向下按钮来指定 Manager 搜索主机的集群和dc(datacenter)作为隔离代理的顺序。
- 点。
7.6.4. fence_kdump 高级配置
选择一个主机,通过详情框中的常规标签页可以查看它上面的 kdump 服务的状态:
- 启用:kdump 被正确配置,并正在运行。
- 禁用:kdump 服务没有运行(kdump 集成功能不能正常工作)。
- 未知:只会在老的、不会报告 kdump 状态的主机上发生。
在新建主机或编辑主机窗口中,选择电源管理标签页,启用 Kdump 集成选项来配置标准的 fence_kdump 设置。如果环境的网络设置比较简单,Manager 的 FQDN 可以被所有主机解析到,默认的 fence_kdump 设置应该就可以正常工作。
engine-config
命令):
engine-config -s FenceKdumpDestinationAddress=A.B.C.D
- Manager 有两个网卡,其中的一个是可以被公共网络连接,而另外一个是 fence_kdump 信息发送的首选目的地。
- 您需要在一个不同的 IP 地址或端口上执行 fence_kdump listener。
- 为了防止数据包的丢失,您需要设置一个自定义的 fence_kdump 通知信息间隔时间。
7.6.4.1. fence_kdump listener 配置
过程 7.17. 手工配置 fence_kdump Listener
- 在
/etc/ovirt-engine/ovirt-fence-kdump-listener.conf.d/
中创建一个文件(例如,my-fence-kdump.conf
)。 - 使用 OPTION=value 的格式输入您的自定义配置,并保存文件。
重要
被编辑的值同时也需要在engine-config
中进行修改(请参阅 fence_kdump listener 配置选项表,第 7.6.4.2 节 “在 Manager 上配置 fence_kdump”)。 - 重新启动 fence_kdump listener:
# systemctl restart ovirt-fence-kdump-listener.service
变量 | 描述 | 默认值 | 注意 |
---|---|---|---|
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 的值的两倍。 |
7.6.4.2. 在 Manager 上配置 fence_kdump
# engine-config -g OPTION
过程 7.18. 使用 engine-config 手工配置 Kdump
- 使用
engine-config
命令编辑 kdump 的配置:# engine-config -s OPTION=value
重要
被编辑的值同时需要在 fence_kdump listener 的配置文件中修改(请参阅Kdump 配置选项
第 7.6.4.1 节 “fence_kdump listener 配置”)。 - 重新启动
ovirt-engine
服务:# systemctl restart ovirt-engine.service
- 如果需要,重新安装所有启用了Kdump 集成选项的主机(请参阅以下的表格) 。
engine-config
进行配置:
变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
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 值的两倍。 |
7.6.5. Soft-Fencing 主机
- 在网络出现第一次失败时,主机的状态变为 "connecting"。
- Manager 然后会尝试 3 次向 VDSM 询问它的状态,或根据主机的负载等待一段时间。这个等待的时间是通过以下公式计算的:TimeoutToResetVdsInSeconds(默认值是 60 秒)+ [DelayResetPerVmInSeconds(默认值是 0.5 秒)]*(在主机上运行的虚拟机的数量)+ [DelayResetForSpmInSeconds(默认值是 20 秒)] * 1(如果主机是 SPM)或 0(如果主机不是 SPM)。为了留给 VDSM 最大的响应时间,Manager 会选择以上两个操作所需的最长时间。
- 如果在所需要的间隔时间后主机还没有响应,
vdsm restart
命令会通过 SSH 执行。 - 如果
vdsm restart
命令无法在主机和 Manager 间重新创建连接,主机的状态将变为Non Responsive
,如果电源管理被配置,外部的隔离代理(external fencing agent)将会进行相应的隔离操作。
注意
7.6.6. 使用电源管理功能
当电源管理功能在一个主机上被配置后,您可以通过管理门户界面进行相关的操作。虽然不同的电源管理设备可以进行不同的操作,但是它们都支持基本的操作,如启动、关闭和重新启动一个主机。
过程 7.19. 使用电源管理功能
- 使用主机资源标签页、树形模式或搜索功能来找到并选择主机。
- 点电源管理下拉菜单。
- 选择以下的选项之一:
- 重启:这个选项会关闭所有的主机并等待主机的状态变为
Down
。当代理已经确认主机的状态已经变为 down,高可以性虚拟机已经在集群中的其它主机上被重新启动后,它会重新启动这个主机。当主机启动后,它的状态变为Up
。 - 启动:这个选项会启动主机并把它加入到一个集群中。当主机启动后,它的状态变为
Up
。 - 停止:这个选项会关闭主机。在使用这个选项前,您需要确保在这个主机上运行的虚拟机已经被迁移到集群中的其它主机上。否则,所有的虚拟机都会出现问题,只有那些设置为高可用性的虚拟机会在其它主机上被重新启动。当主机被关闭后,它的状态变为
Non-Operational
。
重要
如果在一个主机上定义了两个隔离代理(fencing agent),它们可以被“同时”使用,也可以被“相继”使用。如果是"同时"使用的代理,在两个代理都收到停止命令时才可以停止主机,而当一个代理收到启动命令时,主机就会被启动。如果是"相继"使用的代理,对于启动和停止一个主机的操作,“主要的”代理会被首先使用,如果“主要的”代理操作失败,“次要的”代理会被使用。 - 选择以上的选项之一后会出现一个确认窗口,点确定进行确认。
所选择的操作被执行。
7.6.7. 手动隔离或分离一个没有响应的主机
当一个主机在没有预见的情况下变为了没有响应的状态(例如,出现了硬件故障),整个系统的性能可以会受到极大的影响。如果您没有电源管理设备,或电源管理设备没有被正确配置,您可能需要手动重新启动主机。
警告
过程 7.20. 手动隔离或分离一个没有响应的主机
- 在主机标签页中选择主机。这个主机的状态需要是
non-responsive
。 - 手动重启这个主机。这可能意味着您需要进入机房,手工重新启动这个主机。
- 在管理门户中的主机上点鼠标右键,选择键。
- 一个提示您确认主机已经被停止或重启的信息会被显示。选择批准操作选项并点确定。
您手动重启了您的主机,高可用性的虚拟机被迁移到其它主机上。您在管理门户中确认了手动隔离的操作,主机可以被重新使用。