路由网络调度支持

https://blueprints.launchpad.net/nova/+spec/routed-networks-scheduling

Neutron 通过路由网络提供了网络段支持,您可以创建一个分配给特定段的端口。不幸的是,Nova 在每次实例操作(包括移动实例的操作)时都不会验证该段,这会导致不一致。

问题描述

虽然可以使用路由网络设置创建 Neutron 端口并使用此端口启动实例,但调度程序不会验证与实例关联的计算节点的网络位置,这可能导致错误的调度决策。当移动操作将实例发送到未位于与启动时分配的 IP 地址相关的网络段中的计算节点时,这会成为一个问题。

目前,在 Nova 中使用路由网络的唯一方法是创建一个具有 ip_allocation 值为 deferred 的端口,并确保所有计算服务都分配给至少一个网络段。

用例

作为操作员,我希望确保实例的 IP 地址可以正确地在提供的网络段之间分离。

作为操作员,我不希望实例进入未位于网络段中的计算服务,如果用户请求端口或路由网络,则会出现这种情况。

作为用户,我希望 Nova 根据我为实例请求的端口或网络将我的实例放置在正确的宿主机上,而无需专门创建一个具有 ip_allocation=deferred 值的端口。

提议的变更

一旦您 在 Neutron 中配置路由网络,网络段将表示为 Placement 资源提供者。然后,Neutron 将要求 Nova 为每个段创建一个 Nova 宿主机聚合,并将映射到各自段的计算服务添加到相关的聚合中。最终,Nova 会将这些聚合镜像到 Placement 聚合中。

然后,Nova 需要的是一种向 Placement API 请求仅获取与用户传递的网络(或请求的端口)中的段相关的聚合(或与端口相关的段)中的资源提供者(即计算节点)的方法。

由于 Nova 需要找到相关的段,然后找到聚合,我们可以提供一个新的预过滤器,如果某个配置选项(例如 query_placement_for_routed_network_aggregates)为 True,则对其进行检查。

它的伪代码如下

def support_routed_networks(ctxt, request_spec):
  if not CONF.query_placement_for_routed_network_aggregates:
    return False
  segment_ids = <get_all_segments_ids_from_network_or_port>
  for segment in segment_ids:
     agg_info = <get_provider_aggregates_from_segment_id>
     <append_agg_info_to_required_aggregates>

注意

替代方案 部分所述,我们可以让 Neutron 直接传递聚合,因此一旦我们这样做,就可以废弃此预过滤器。

备选方案

与其提供一个新的预过滤器,不如提供一个特定的调度器过滤器。但是,考虑到我们限制了 Placement 返回的分配候选者数量,我们可能会错过一些好的资源提供者,因此过滤器可能无法工作。

另一种替代方案是让 Neutron 将所需的聚合直接传递给 Nova,而不是让 Nova 请求 Neutron 提供它,但这意味着我们需要修改 Neutron 以在 port.resource_request 属性中返回 Placement 所需的查询。

数据模型影响

我们可能需要扩充 RequestSpec 对象,以便能够在嵌套的 RequestLevelParams 对象属性中提供特定的聚合。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

如果我们要为每个云中的每个实例验证段,可能会产生性能影响,但考虑到我们要求操作员修改选项以使用路由网络,我们认为这不会成为一个问题。

其他部署者影响

一个新的配置选项将是

cfg.BoolOpt("query_placement_for_routed_network_aggregates",
            default=False),

开发人员影响

无。

升级影响

无。

实现

负责人

主要负责人

bauzas

其他贡献者

功能联络人

bauzas

工作项

  • 创建一个新的预过滤器来查找相关的聚合

  • 将聚合传递给 RequestSpec,要求 Placement 验证它

  • 就这样了。

依赖项

无。

测试

当然,功能测试,但 Tempest 测试会更好。

文档影响

也许修改 https://docs.openstack.org/neutron/latest/admin/config-routed-networks.html

参考资料

无。

历史

修订版

发布名称

描述

Victoria

引入,批准

Wallaby

重新提出