VM 元数据中的审计标签¶
https://blueprints.launchpad.net/watcher/+spec/audit-tag-vm-metadata
问题描述¶
Watcher 通过实时迁移 VM 来优化工作负载。这可能会造成中断。应该提供一个功能,允许租户选择加入/退出对其部分或全部 VM 的优化。我们提出的解决方案是在 VM 元数据中设置一个“optimize”字段,并且 watcher 策略应该只考虑已启用“optimize”元数据的 VM。策略检查 VM 元数据的功能应该是可选且可配置的。
用例¶
作为租户,我应该能够选择加入/退出我的 VM 的优化
作为策略开发者,我应该能够过滤出已被批准进行优化的 VM
提议的变更¶
VM 将拥有一个“optimize”元数据键。计算集群数据模型也应该存储 VM 元数据信息。我们需要一个配置选项“check_optimize_metadata”来启用此功能。
如果启用了“check_optimize_metadata”配置选项,策略基类将只包含具有 optimize 元数据的 VM。这将使用审计范围来根据元数据排除 VM。
示例 -
"scope": [
{"host_aggregates": [
{"id": 1},
{"id": 2},
{"id": 3}
]},
{"availability_zones": [
{"name": "AZ1"},
{"name": "AZ2"}
]},
{"exclude": [
{"instances": [
{"uuid": "9766dff1-3c81-4de2-92ae-19e0d9adcec6"},
{"uuid": "777541bb-ce4f-4bf3-8320-d5792d5cdf6e"}
]},
{"instance_metadata": [
{"optimize": "False"}
]},
{"compute_nodes": [
{"name": "compute1"}
]}
]}
]
默认情况下,“check_optimize_metadata”将被禁用,“optimize”元数据将不会对策略产生任何影响 - 意味着策略将考虑所有 VM。
备选方案¶
数据模型影响¶
将对集群数据模型进行更改,以包含 VM 元数据。
REST API 影响¶
安全影响¶
没有安全影响。
通知影响¶
其他最终用户影响¶
性能影响¶
其他部署者影响¶
开发人员影响¶
实现¶
负责人¶
- 主要负责人
hvprash
- 其他贡献者
v-francoise pradeep-singh-u
工作项¶
平台所有者或 Watcher 外部的自动化将设置 VM 元数据
# nova meta vm_name set optimize=True
增强当前的计算集群数据模型,使其现在包含 VM 元数据表示形式。
在
Audit Scope中排除 instance_metadata 的能力 (https://github.com/openstack/watcher/blob/54f0758fc3ac47edb4bc3f6eb5e56bf53d4e02f8/watcher/decision_engine/scope/default.py)。根据配置选项修改基策略以按元数据过滤 VM
def filter_instances_by_audit_tag(self, instances):
if not self.config.check_optimize_metadata:
return instances
instances_to_migrate = []
for instance in instances:
optimize = True
if instance.metadata:
try:
optimize = strutils.bool_from_string(
instance.metadata.get('optimize'))
except ValueError:
optimize = False
if optimize:
instances_to_migrate.append(instance)
return instances_to_migrate
依赖项¶
N/A
测试¶
文档影响¶
更新文档和配置选项的引用。
参考资料¶
N/A
历史¶
N/A