工作负载稳定策略¶
概要¶
显示名称: 工作负载 稳定
目标: workload_balancing
使用实时迁移进行工作负载稳定控制
此工作负载稳定策略基于标准差算法,作为衡量集群资源使用情况平衡的指标。目标是确定集群是否存在过载,并通过迁移虚拟机来稳定集群。
标准差是使用归一化的 CPU 和/或内存使用值确定的,这些值根据数据源中的使用指标缩放到 0 到 1 之间的范围。
标准差为 0 表示您的集群资源完全平衡,所有使用值都相同。但是,标准差为 0.5 表示资源使用完全不平衡,某些资源被大量利用,而另一些资源则根本没有被利用。
该策略在一个小型(32 个节点)集群中进行了测试。
它假定您的集群中可以进行实时迁移。
需求¶
指标¶
workload_stabilization 策略需要以下指标
指标 |
description |
|---|---|
|
实例的 RAM 内存使用量,以兆字节为单位的浮点数 |
|
实例的 CPU 使用量,范围在 0 到 100 之间,表示总 CPU 使用率的百分比 |
|
计算节点中的 RAM 内存使用量,以兆字节为单位的浮点数 |
|
计算节点中的 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_node 和 destination_node 参数分别是源和目标计算主机名。
注意
如果提供了 destination_node 参数,则 Nova API 版本必须为 2.56 或更高版本。
规划器¶
默认 Watcher 的规划器
权重规划器实现
此实现根据权重构建具有父级的动作。权重较高的动作集将在其他动作之前被调度。有 2 个配置选项可以配置:action_weights 和 parallelization。
Limitations
此规划器需要对 action_weights 和 parallelization 配置进行良好的调整。
配置¶
策略参数是
参数 |
type |
默认值 |
description |
|---|---|---|---|
|
数组 |
[“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_cpu_usage”: “host_cpu_usage”, “instance_ram_usage”: “host_ram_usage”} |
此参数表示计算节点指标,代表实例资源指示的指标的计算资源使用情况。 |
|
字符串 |
retry |
分析实例目标时主机选择的方法。有 cycle、retry 和 fullsearch 方法。Cycle 将循环遍历主机。Retry 将随机获取一些主机(数量在 retry_count 选项中定义)。Fullsearch 将返回列表中的每个主机。 |
|
数字 |
1 |
返回的随机主机数量。 |
|
对象 |
{“instance”: 720, “node”: 600} |
获取资源使用情况统计值的时间,以秒为单位,用于实例和主机指标。Watcher 将使用最后一个周期来计算资源使用情况。 |
|
数字 |
300 |
不建议修改:指标聚合时间序列中两次测量之间的时间间隔。 |
|
对象 |
{“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"]'
外部链接¶
无