工作负载稳定策略

概要

显示名称: 工作负载 稳定

目标: workload_balancing

使用实时迁移进行工作负载稳定控制

此工作负载稳定策略基于标准差算法,作为衡量集群资源使用情况平衡的指标。目标是确定集群是否存在过载,并通过迁移虚拟机来稳定集群。

标准差是使用归一化的 CPU 和/或内存使用值确定的,这些值根据数据源中的使用指标缩放到 0 到 1 之间的范围。

标准差为 0 表示您的集群资源完全平衡,所有使用值都相同。但是,标准差为 0.5 表示资源使用完全不平衡,某些资源被大量利用,而另一些资源则根本没有被利用。

该策略在一个小型(32 个节点)集群中进行了测试。

它假定您的集群中可以进行实时迁移。

需求

指标

workload_stabilization 策略需要以下指标

指标

description

instance_ram_usage

实例的 RAM 内存使用量,以兆字节为单位的浮点数

instance_cpu_usage

实例的 CPU 使用量,范围在 0 到 100 之间,表示总 CPU 使用率的百分比

host_ram_usage

计算节点中的 RAM 内存使用量,以兆字节为单位的浮点数

host_cpu_usage

计算节点中的 CPU 使用量,范围在 0 到 100 之间,表示总 CPU 使用率的百分比

集群数据模型

默认 Watcher 的计算集群数据模型

Nova 集群数据模型收集器

Nova 集群数据模型收集器创建了计算服务暴露的资源的内存表示。

行动

默认 Watcher 的动作

动作

description

迁移

将服务器迁移到目标 nova-compute 宿主机

此动作允许您将服务器迁移到另一个计算目标宿主机。迁移类型“live”只能用于迁移活动虚拟机。迁移类型“cold”可用于迁移非活动虚拟机以及活动虚拟机,在迁移过程中将关闭它们。

动作模式是

schema = Schema({
 'resource_id': str,  # should be a UUID
 'migration_type': str,  # choices -> "live", "cold"
 'destination_node': str,
 'source_node': str,
})

resource_id 是要迁移的服务器的 UUID。 source_nodedestination_node 参数分别是源和目标计算主机名。

注意

如果提供了 destination_node 参数,则 Nova API 版本必须为 2.56 或更高版本。

规划器

默认 Watcher 的规划器

权重规划器实现

此实现根据权重构建具有父级的动作。权重较高的动作集将在其他动作之前被调度。有 2 个配置选项可以配置:action_weights 和 parallelization。

Limitations

  • 此规划器需要对 action_weights 和 parallelization 配置进行良好的调整。

配置

策略参数是

参数

type

默认值

description

metrics

数组

[“instance_cpu_usage”, “instance_ram_usage”]

用作集群负载率的指标。

阈值

对象

{“instance_cpu_usage”: 0.2, “instance_ram_usage”: 0.2}

字典,其中键是指标,值是触发值。当主机之间归一化的使用率(介于 0 和 1 之间)的标准差高于阈值时,该策略才会查找行动计划。对于标准差,完美平衡的集群的值将为 0,而完全不平衡的集群的值将为 0.5,这应该是最大值。

权重

对象

{“instance_cpu_usage_weight”: 1.0, “instance_ram_usage_weight”: 1.0}

这些权重用于在优化资源使用时计算公共标准差。权重名称包含仪表名称和 _weight 后缀。较高的值意味着在计算最佳结果集群分布时,该指标将被优先考虑。

instance_metrics

对象

{“instance_cpu_usage”: “host_cpu_usage”, “instance_ram_usage”: “host_ram_usage”}

此参数表示计算节点指标,代表实例资源指示的指标的计算资源使用情况。

host_choice

字符串

retry

分析实例目标时主机选择的方法。有 cycle、retry 和 fullsearch 方法。Cycle 将循环遍历主机。Retry 将随机获取一些主机(数量在 retry_count 选项中定义)。Fullsearch 将返回列表中的每个主机。

retry_count

数字

1

返回的随机主机数量。

periods

对象

{“instance”: 720, “node”: 600}

获取资源使用情况统计值的时间,以秒为单位,用于实例和主机指标。Watcher 将使用最后一个周期来计算资源使用情况。

granularity

数字

300

不建议修改:指标聚合时间序列中两次测量之间的时间间隔。

aggregation_method

对象

{“instance”: ‘mean’, “compute_node”: ‘mean’}

不建议修改:用于将多个测量值聚合到聚合值中的函数。

效能指标

全局有效性指标

[{'name': 'live_migrations_count', 'description': 'Ratio of migrated virtual machines to audited virtual machines', 'unit': '%', 'value': 0}]

目标的其它有效性指标是

  • instance_migrations_count:要执行的虚拟机迁移数量

  • instances_count:策略中审计的总实例数

  • standard_deviation_after_audit:审计后标准差的值

  • standard_deviation_before_audit:原始标准差的值

算法

您可以在这里找到过载算法的描述以及标准差的作用:https://specs.openstack.org/openstack/watcher-specs/specs/2025.2/implemented/sd-strategy.html

如何使用它?

$ openstack optimize audittemplate create \
  at1 workload_balancing --strategy workload_stabilization

$ openstack optimize audit create -a at1 \
  -p thresholds='{"instance_ram_usage": 0.05}' \
  -p metrics='["instance_ram_usage"]'