搜索

7.3. 计算调度程序过滤器

download PDF

您可以在 Compute 环境文件中配置 NovaSchedulerEnabledFilters 参数,以指定在选择托管一个实例的适当 Compute 节点时必须满足计算调度程序的过滤器。默认配置应用以下过滤器:

  • AvailabilityZoneFilter: Compute 节点必须位于请求的可用区中。
  • ComputeFilter : Compute 节点可以服务请求。
  • ComputeCapabilitiesFilter :计算节点满足类别额外规格。
  • ImagePropertiesFilter : Compute 节点满足请求的镜像属性。
  • ServerGroupAntiAffinityFilter : Compute 节点尚未在指定组中托管实例。
  • ServerGroupAffinityFilter : Compute 节点已在指定组中托管实例。

您可以添加和删除过滤器。下表描述了所有可用的过滤器。

表 7.1. 计算调度程序过滤器
Filter描述

AggregateImagePropertiesIsolation

使用此过滤器与带有主机聚合元数据的实例的镜像元数据匹配。如果任何主机聚合元数据与镜像的元数据匹配,则属于该主机聚合的 Compute 节点是从该镜像启动实例的候选者。调度程序只识别有效的镜像元数据属性。有关有效镜像元数据属性的详情,请参阅 镜像 配置参数

AggregateInstanceExtraSpecsFilter

使用此过滤器匹配带有主机聚合元数据的实例类型额外规格中定义的命名空间属性。

您需要限制类型 extra_specs 键的范围,使用 aggregate_instance_extra_specs: 命名空间作为前缀。

如果有任何主机聚合元数据与类别额外规格的元数据匹配,则属于该主机聚合的 Compute 节点是从该镜像启动实例的候选者。

AggregateIoOpsFilter

使用此过滤器,根据 I/O 操作,使用 per-aggregate filter_scheduler/max_io_ops_per_host 值过滤主机。如果没有找到 per-aggregate 值,则该值会返回全局设置。如果主机位于多个聚合中,并且找到多个值,调度程序将使用最小值。

AggregateMultiTenancyIsolation

使用此过滤器将项目隔离主机聚合中的 Compute 节点可用性限制为一组指定的项目。只有使用 filter_tenant_id 元数据键指定的项目才能在主机聚合中的 Compute 节点上启动实例。如需更多信息,请参阅 创建项目隔离主机聚合

注意

该项目仍然可以将实例放在其他主机上。要限制这一点,请使用 NovaSchedulerPlacementAggregateRequiredForTenants 参数。

AggregateNumInstancesFilter

使用此过滤器来限制聚合中每个 Compute 节点可以托管的实例数量。您可以使用 filter_scheduler/max_instances_per_host 参数配置每个aggregate 的最大实例数量。如果没有找到 per-aggregate 值,则该值会返回全局设置。如果 Compute 节点位于多个聚合中,调度程序将使用最低的 max_instances_per_host 值。

AggregateTypeAffinityFilter

如果没有设置任何类别元数据密钥,则使用此过滤器传递主机,或者类别聚合元数据值包含所请求类别的名称。类别元数据条目的值是可能包含单个类别名称或以逗号分隔的类别名称列表的字符串,如 m1.nanom1.nano,m1.small

AllHostsFilter

使用此过滤器考虑所有可用的 Compute 节点以进行实例调度。

注意

使用此过滤器不会禁用其他过滤器。

AvailabilityZoneFilter

使用此过滤器在实例指定的可用区的 Compute 节点上启动实例。

ComputeCapabilitiesFilter

使用此过滤器,将实例的类别额外规格中定义的命名空间属性与 Compute 节点功能匹配。您必须使用 capabilities: namespace 为类别额外规格添加前缀。

使用 ComputeCapabilitiesFilter 过滤器的一个更为有效的方法是,在您的类别中使用 CPU 特征,这些特征将报告给放置服务。特征为 CPU 功能提供一致的命名。如需更多信息,请参阅使用资源供应商特征过滤

ComputeFilter

使用此过滤器传递操作并启用的所有 Compute 节点。此过滤器应始终存在。

DifferentHostFilter

使用此过滤器,允许从一组特定实例在不同的 Compute 节点上调度实例。要在启动实例时指定这些实例,请使用带有 different_host--hint 参数,并将实例 UUID 用作值:

$ openstack server create --image cedef40a-ed67-4d10-800e-17455edce175 \
  --flavor 1 --hint different_host=a0cf03a5-d921-4877-bb5c-86d26cf818e1 \
  --hint different_host=8c19174f-4220-44f0-824a-cd1eeef10287 server-1

ImagePropertiesFilter

使用此过滤器根据实例镜像中定义的以下属性过滤 Compute 节点:

  • hw_architecture - Corresponds 到主机架构,如 x86、ARM 和 Power。
  • img_hv_type - Corresponds 到 hypervisor 类型,如 KVM、QEMU、Xen 和 LXC。
  • img_hv_requested_version - Corresponds 到计算服务报告的 hypervisor 版本。
  • hw_vm_mode - Corresponds 到 hyperviser 类型,如 hvm、xen、uml 或 exe。

支持实例中包含的指定镜像属性的计算节点传递到调度程序。有关镜像属性的更多信息,请参阅 镜像配置参数

IsolatedHostsFilter

使用此过滤器,仅在隔离的 Compute 节点上调度带有隔离镜像的实例。您还可以通过配置 filter_scheduler/restrict_isolated_hosts_to_isolated_images 来防止在隔离的 Compute 节点上构建实例。

要指定隔离的镜像和主机集合,请使用 filter_scheduler/isolated_hostsfilter_scheduler/isolated_images 配置选项,例如:

parameter_defaults:
  ComputeExtraConfig:
    nova::config::nova_config:
      filter_scheduler/isolated_hosts:
        value: server1, server2
      filter_scheduler/isolated_images:
        value: 342b492c-128f-4a42-8d3a-c5088cf27d13, ebd267a6-ca86-4d6c-9a0e-bd132d6b7d09

IoOpsFilter

使用此过滤器过滤具有超过配置的 filter_scheduler/max_io_ops_per_host 的并发 I/O 操作的主机,它指定了允许在主机上运行的最大 I/O 密集型实例数。

MetricsFilter

使用此过滤器,将调度限制为使用 metrics/weight_setting 报告配置的指标的 Compute 节点。

要使用此过滤器,请在 Compute 环境文件中添加以下配置:

parameter_defaults:
  ComputeExtraConfig:
    nova::config::nova_config:
      DEFAULT/compute_monitors:
        value: 'cpu.virt_driver'

默认情况下,计算调度程序服务每 60 秒更新指标。

NUMATopologyFilter

使用此过滤器,在支持 NUMA 的 Compute 节点上调度带有 NUMA 拓扑的实例。使用类别 extra_specs 和 image 属性来指定实例的 NUMA 拓扑。过滤器尝试将实例 NUMA 拓扑与 Compute 节点拓扑匹配,考虑每个主机 NUMA 单元的超额订阅限制。

NumInstancesFilter

使用此过滤器过滤运行超过 max_instances_per_host 选项指定的实例的 Compute 节点。

PciPassthroughFilter

使用此过滤器,使用类别 extra_specs 将具有实例请求的 Compute 节点上调度实例。

如果您要为节点保留 PCI 设备(通常为昂贵且有限)用于请求它们的实例,请使用此过滤器。

SameHostFilter

使用此过滤器,在与一组特定实例相同的 Compute 节点上调度实例。要在启动实例时指定这些实例,请使用 --hint 参数和键 相同的_host,实例 UUID 作为值:

$ openstack server create --image cedef40a-ed67-4d10-800e-17455edce175 \
  --flavor 1 --hint same_host=a0cf03a5-d921-4877-bb5c-86d26cf818e1 \
  --hint same_host=8c19174f-4220-44f0-824a-cd1eeef10287 server-1

ServerGroupAffinityFilter

使用此过滤器在同一 Compute 节点上调度关联性服务器组中的实例。运行以下命令来创建服务器组:

$ openstack server group create --policy affinity <group_name>

要在此组中启动实例,请使用 --hint 参数并将 group 用作键,组 UUID 作为值:

$ openstack server create --image <image> \
  --flavor <flavor> \
  --hint group=<group_uuid> <instance_name>

ServerGroupAntiAffinityFilter

使用此过滤器来调度属于不同 Compute 节点上的反关联性服务器组的实例。运行以下命令来创建服务器组:

$ openstack server group create --policy anti-affinity <group_name>

要在此组中启动实例,请使用 --hint 参数并将 group 用作键,组 UUID 作为值:

$ openstack server create --image <image> \
  --flavor <flavor> \
  --hint group=<group_uuid> <instance_name>

SimpleCIDRAffinityFilter

使用此过滤器,在具有特定 IP 子网范围的 Compute 节点上调度实例。要指定所需的范围,请使用 --hint 参数在启动实例时传递键 build_near_host_ipcidr

$ openstack server create --image <image> \
  --flavor <flavor> \
  --hint build_near_host_ip=<ip_address> \
  --hint cidr=<subnet_mask> <instance_name>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.