Blazar 架构¶
Blazar 的架构由下图描述
blazar-client - 提供与 Blazar API (blazar-api 服务) 通信的 Python 实现。它作为一个库、一个独立的 blazar CLI 客户端,以及 openstack 客户端的插件工作。
blazar-api - 等待来自外部世界的 REST API 调用,并将它们重定向到管理器。 blazar-api 通过 RPC 与 blazar-manager 通信。
blazar-manager - 实现所有逻辑和租赁、预留和事件的操作。与 Blazar 数据库通信,并在其中存储租赁、预留和事件的数据。 blazar-manager 服务负责处理为租赁创建的事件并运行所有相关操作。 blazar-manager 使用资源插件来处理其他服务的资源。
resource-plugin - 负责应用于其他服务资源的具体操作。所有资源插件都位于与 blazar-manager 相同的进程中。
Nova 资源预留¶
Blazar 与 Nova 的集成基于以下组件协同工作
Nova
Nova 主机聚合用于控制哪些主机由 Blazar 管理其访问权限。Blazar 拥有的主机聚合的规范名称是
freepool。Nova flavor 用于实例预留。
Blazar-Nova
blazar-nova包为 nova-scheduler 提供BlazarFilter过滤器。BlazarFilter确保 Nova 不会将常规(不属于预留)实例调度到 Blazar 拥有的主机上(除非启用了抢占),并且尊重主机租赁边界。
放置
嵌套资源提供程序用于控制哪些主机由 Blazar 管理。
为实例预留创建预留类并更新嵌套资源提供程序的库存。
值得注意的是,Blazar 集成是单向的,即其他服务永远不会调用 Blazar。即使 BlazarFilter 的操作方式也是,所有必需的数据都存在于 Nova 和 Placement 中。
注意
目前,只有计算主机预留与抢占式实例兼容。
计算主机预留¶
计算主机预留类似于专用的虚拟化主机产品。用户请求具有指定特征的特定数量的主机,例如
区域,
可用区,
主机功能额外规格,
CPU 核心数,
可用 RAM 量,
可用磁盘空间量。
匹配的主机保留供用户项目独占使用。在租赁期间,其他项目将不会共享相同的主机。
虚拟实例预留¶
虚拟实例预留提供更精细的计算资源预留,它不会预留整个 hypervisor,而是允许通过 Blazar 设置的特殊限时 flavor 使用 Blazar 拥有的主机。用户请求具有特定 flavor 特征的特定数量的实例,例如
提供的 CPU 核心数,
提供的 RAM 量,
提供的磁盘空间量,
亲和性规则。
当租赁处于活动状态时,会向租赁者呈现一个专用的 flavor。没有其他项目可以使用此 flavor。Blazar 确保,尽管是以尽力为原则的方式,支持的计算资源是保留的,例如,它不会允许使用多种预留类型进行过度订阅(支持虚拟实例预留的主机也不能同时被用于计算主机预留)。
基于 flavor 的实例预留¶
基于 flavor 的实例预留的设计与虚拟实例预留类似。但是,与接受特定数量的资源作为参数不同,预留基于用户可访问的现有 Nova flavor。
注意
基于 flavor 的实例预留的实现仍然不完整。仅支持有限数量的 flavor 额外规格。虚拟实例预留和基于 flavor 的实例预留目前无法在相同的资源上创建。亲和性规则和资源特征尚未支持。
Neutron 资源预留¶
除了 Nova 的计算资源外,Blazar 还允许预留某些 Neutron 资源。目前,这些资源仅为浮动 IP。
到目前为止,Neutron 集成不需要更改 Neutron 环境。Blazar 交互看起来像 Neutron 的任何其他服务客户端交互。
浮动 IP 预留¶
Blazar 管理员可以向 Blazar 注册浮动 IP,然后可以将其租赁给最终用户。最终用户从选定的网络请求浮动 IP,一旦租赁开始,它们将在用户项目中创建。允许的浮动 IP 一定不能存在于子网的分配池中。Blazar 将仅在管理员向 Blazar 注册浮动 IP 时一次性验证此点。如果管理员随后将相同的浮动 IP 添加到分配池,则集成将会中断,因为 Blazar 将尝试拥有它并失败。