第 1 章 概述
您可以将 OpenShift 上的 Red Hat OpenStack Services (RHOSO)高可用性用于计算实例(Instance HA)服务,通过从故障 Compute 节点清空实例并在不同的健康 Compute 节点上重新创建它们,从而帮助您管理 Compute 实例的高可用性:
- 撤离的实例维护相同的网络配置,如静态 IP 地址和浮动 IP 地址,因为 Instance HA 服务可用于共享存储或本地存储环境。
- 重新创建的实例在新的 Compute 节点内维护相同的特征。
默认情况下,每个 Compute 节点都有资格撤离。但是,只有包含关键实例的 Compute 节点需要撤离。Instance HA 服务提供以下两种方法来识别运行关键实例的 Compute 节点:
- 您可以标记特定的镜像或类别,以便包含实施这些标记类别或镜像的 Compute 节点有资格撤离。
- 您可以标记主机聚合,以便标记的主机聚合中包含的所有 Compute 节点都有资格撤离。
默认情况下,如果您标记了镜像、类别或主机聚合,Instance HA 服务会忽略每个未标记的 Compute 节点或实例。有关更多信息,请参阅 撤离的标记镜像、类别或主机聚合。
Instance HA 服务提供很多参数和选项,可用于自定义来自故障 Compute 节点的实例撤离过程。如需更多信息,请参阅 Instance HA 服务如何撤离失败的 Compute 节点。
Instance HA 服务可帮助您管理撤离失败的 Compute 节点的过程,以及您需要采取行动的时间。如需更多信息,请参阅 维护从出现故障的 Compute 节点清空实例的过程。
1.1. Instance HA 服务如何撤离失败的 Compute 节点 复制链接链接已复制到粘贴板!
Compute 实例(Instance HA)服务上的 Red Hat OpenStack Services on OpenShift (RHOSO)高可用性使用以下迭代过程来从失败的 Compute 节点撤离实例。
流程
Instance HA 服务轮询 Compute 服务(nova)数据库,以识别符合撤离条件的故障 Compute 节点。polling 间隔由
POLLInstance HA 服务参数指定,默认为 45 秒。Instance HA 服务使用以下过滤方法:
- Compute 节点必须包含实例才能撤离。
- 默认情况下,如果您标记了特定的类别或镜像,包含使用这些类别或镜像的实例的 Compute 节点有资格撤离。有关更多信息,请参阅 撤离的标记镜像、类别或主机聚合。
如果您标记了特定的主机聚合,则这些主机聚合中的 Compute 节点有资格撤离。
所有不符合撤离条件的 Compute 节点都会被忽略。
每个 Compute 节点的状态是
的。任何有资格撤离并处于启用或禁用禁用状态的 Compute 节点都会被忽略,因为它假定这个 Compute 节点已被有意禁用。如需更多信息 ,请参阅禁用 Compute 节点的撤离。注意您可以有意禁用健康的 Compute 节点,以提供足够的容量来撤离失败的 Compute 节点的实例。如需更多信息,请参阅 保留健康的 Compute 节点。
每个 Compute 节点的状态 为
up或down。任何有资格清空且状态为down的 Compute 节点都失败。DELTAInstance HA 服务参数可以减少 Instance HA 服务所花费的时间,以检测失败的 Compute 节点:任何有资格撤离的 Compute 节点,报告了启用状态,当此状态没有在指定的DELTA期间更新时,也会失败。默认情况下,DELTA周期为 30 秒。如需更多信息,请参阅 编辑 Instance HA 服务参数。Instance HA 服务计算失败 Compute 节点的百分比,并将这个百分比与
THRESHOLDInstance HA 服务参数的值进行比较:-
如果百分比小于或等于
THRESHOLD值,则 Instance HA 服务将继续撤离 Compute 节点。 如果百分比超过
THRESHOLD值,则 Instance HA 服务在日志消息中指示此值,并停止撤离 Compute 节点。注意您必须设置
THRESHOLD参数,以指定在撤离过程变得不现实前可以失败多少个 Compute 节点。例如,当网络被破坏时,或者健康的 Compute 节点不足以撤离来自故障 Compute 节点的实例。
-
如果百分比小于或等于
-
如果将
DISABLEDInstance HA 服务参数设置为true,则 Instance HA 服务不会撤离失败的 Compute 节点。在这种情况下,Instance HA 服务会记录计算节点停机,但不会进一步做任何操作。DISABLED参数默认为false。如需更多信息 ,请参阅禁用 Compute 节点的撤离。 - 如果您保留健康的 Compute 节点,则 Instance HA 服务会尝试为每个失败的 Compute 节点启用一个保留 Compute 节点。如需更多信息,请参阅 保留健康的 Compute 节点。
如果您将 Instance HA 服务配置为检测计算节点是否捕获内核转储,则 Instance HA 服务会在隔离前等待
kdump服务完成,或关闭并清空每个 Compute 节点。如需更多信息,请参阅 检测计算节点是否捕获内核转储。您必须配置有资格撤离的每个 Compute 节点的隔离代理。如需更多信息,请参阅配置 Compute 节点的隔离。
注意除非配置了隔离代理,否则您无法撤离 Compute 节点。
在隔离失败的 Compute 节点后,Instance HA 服务调用 Compute 服务(nova)来执行以下操作:
-
将此失败的 Compute 节点的状态设置为
disabled,并为--disable-reason参数提供描述性的时间戳消息。 将此 Compute 节点的强制关闭标记设置为
true。注意Instance HA 服务撤离处于 ACTIVE、ERROR 或 STOPPED 状态的实例。计算服务可防止处于任何其他状态的实例被撤离。
-
将此失败的 Compute 节点的状态设置为
-
如果将
LEAVE_DISABLEDInstance HA 服务参数设置为true,则隔离的 Compute 节点将在撤离后保持禁用。这样做的一个原因是,如果出现故障的硬件导致 Compute 节点失败,您不希望启用 Compute 节点直接失败。默认情况下,LEAVE_DISABLED参数被设为false,因此在成功撤离后,禁用的 Compute 节点会被启用。在本例中,Instance HA 服务指示关联的隔离代理打开 Compute 节点电源。 -
当 Compute 节点被重新启用时,当 Compute 节点成功撤离并成功重启时,Instance HA 服务将失败的 Compute 节点的 forced
Down标志设置为false。当 Compute 节点的撤离缓慢或失败时,您可以将 Compute 节点的 forcedDown标志设置为false。如需更多信息,请参阅 Rehabilitating evacuated Compute nodes。 默认情况下,Instance HA 服务不会监控来自故障 Compute 节点的实例撤离。如果接受对应的 Compute 服务(nova) API 请求,它会假定它们成功。如果将
SMART_EVACUATIONInstance HA 服务参数设置为true,则 Instance HA 服务会监控每个实例的撤离。在这种情况下,Instance HA 服务会在实例失败时重新尝试清空实例最多 5 次。如果任何实例的撤离失败 5 次,则 Instance HA 服务执行以下操作:- Instance HA 服务停止撤离此 Compute 节点中的所有实例。
-
Instance HA 服务将此故障 Compute 节点的状态设置为
disabled,并为--disable-reason参数提供描述性的时间戳消息。 Instance HA 服务将此 Compute 节点的
Forced Down标志设置为true。您必须执行以下操作才能重新审视此失败的 Compute 节点:
- 您必须确定此实例无法撤离的原因。
- 您必须撤离此 Compute 节点上的所有其他实例。
-
您必须将此 Compute 节点的
Forced Down标志设置为false。 - 您必须启用此 Compute 节点。
您必须确保此 Compute 节点成功重启。
当您将
SMART_EVACUATIONInstance HA 服务参数设置为true时,您可以使用WORKERSInstance HA 服务参数来指定实例 HA 服务可以同时撤离的实例数量,默认为 4。默认情况下,SMART_EVACUATION参数为false。
默认情况下,Instance HA 服务定期轮询启用的每个 Compute 节点,
但将 forced Down标志设为true,以确保它已成功重启。polling 间隔由POLLInstance HA 服务参数指定,默认为 45 秒。如果将
FORCE_ENABLEInstance HA 服务参数设置为true,则 Instance HA 服务会忽略从故障 Compute 节点清空实例的不成功。但是,当通过将SMART_EVACUATIONInstance HA 服务参数设置为true来监控此不当时,这不适用。如上一步中所述,这个失败的 Compute 节点会被明确禁用,您必须自行清理这个 Compute 节点。默认情况下,FORCE_ENABLE参数为false。