路由网络调度支持¶
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 |
引入 |