搜索

7.3. 计算调度程序过滤器

download PDF

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

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

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

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

AggregateImagePropertiesIsolation

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

AggregateInstanceExtraSpecsFilter

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

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

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

AggregateIoOpsFilter

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

AggregateMultiTenancyIsolation

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

注意

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

AggregateNumInstancesFilter

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

AggregateTypeAffinityFilter

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

AllHostsFilter

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

注意

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

AvailabilityZoneFilter

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

ComputeCapabilitiesFilter

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

使用 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 - 与 hypervisor 类型相关的 Corresponds,例如 KVM、QEMU、xen 和 LXC。
  • img_hv_requested_version - 与计算服务报告的 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

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

MetricsFilter

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

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

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

默认情况下,计算调度程序服务每 60 秒更新指标。为确保指标为最新版本,您可以增加使用 update_resources_interval 配置选项刷新指标数据的频率。例如,使用以下配置每 2 秒刷新指标数据:

parameter_defaults:
  ComputeExtraConfig:
    nova::config::nova_config:
      DEFAULT/update_resources_interval:
        value: '2'

NUMATopologyFilter

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

NumInstancesFilter

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

PciPassthroughFilter

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

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

SameHostFilter

使用此过滤器在与一组特定实例相同的 Compute 节点上启用实例调度。要在启动实例时指定这些实例,请使用 --hint 参数,其 与 key_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>

要在此组中启动实例,请使用带有 group--hint 参数作为键,组 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>

要在此组中启动实例,请使用带有 group--hint 参数作为键,组 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.