为 nova 数据源驱动程序添加可用区

https://blueprints.launchpad.net/congress/+spec/add-az-to-nova-driver

本文档描述了扩展当前 nova 数据源驱动程序以支持可用区及其从 nova 可用的字段。

问题描述

当前的 nova 为服务器和主机提供可用区。主机是可用区的一部分,服务器可以启动在可用区中。但是,当前 nova 数据源驱动程序不支持此功能。这些可用区对于创建与服务器位置相关的任何策略都很有用。例如,我们可以指定一个策略来检查位于特定可用区中的任何虚拟机的状态。此外,我们可以指定一个操作策略,将一些虚拟机从可用区 A 迁移到可用区 B。

最近,可用区已使用 OS-EXT-AZ:availability_zone [1] 添加到服务器。但是,在可用区、主机和服务器之间建立完整的层次结构比较困难,并且缺乏灵活性和可扩展性。如果我们将可用区添加到 nova 数据源驱动程序,那么使用来自可用区的更多字段(例如区域状态)将更加灵活和可扩展。

提议的变更

基本上,我们可以通过添加以下翻译器和两个字段来扩展当前的 Nova 数据源驱动程序 (datasources/nova_driver.py)。

  • availabilty_zones_translator

    • zone_name

    • zone_state

备选方案

N/A

策略

使用 Congress datalog 语法,根据 https://wiki.openstack.org/wiki/Congress#Policy_Language 编写一个使用示例策略

示例

host_availability_zone(vm,zone_name) :-

nova:hosts(host_name,zone=zone_name), nova:availability_zones(zone_name=zone_name)

策略动作

数据源

nova

数据模型影响

N/A

REST API 影响

N/A

安全影响

N/A

通知影响

N/A

其他最终用户影响

N/A

性能影响

N/A

其他部署者影响

N/A

开发者影响

N/A

实现

负责人

主要负责人

Joon Kang <joon-myung-kang>

工作项

  • 在 nova 数据源驱动程序中实现 availability_zone_translator

  • 执行单元测试

  • 对新字段执行功能测试

依赖项

N/A

测试

  • 使用策略测试主机和可用区

文档影响

待定

参考资料

[1] /congress/commit/9f9e26f850d12c73721b5e6b45ac00997c8c24c2 [2] https://docs.openstack.org/openstack-ops/content/scaling.html