7.3. 컴퓨팅 스케줄러 필터

Compute 환경 파일에 NovaSchedulerDefaultFilters 매개변수를 구성하여 Compute 스케줄러에서 인스턴스를 호스팅할 적절한 컴퓨팅 노드를 선택할 때 적용해야 하는 필터를 지정합니다. 기본 구성은 다음 필터에 적용됩니다.

  • AvailabilityZoneFilter: 컴퓨팅 노드는 요청된 가용성 영역에 있어야 합니다.
  • ComputeFilter: 컴퓨팅 노드는 요청을 서비스할 수 있습니다.
  • ComputeCapabilitiesFilter: 컴퓨팅 노드는 플레이버 추가 사양을 충족합니다.
  • ImagePropertiesFilter: 컴퓨팅 노드는 요청된 이미지 속성을 충족합니다.
  • ServerGroupAntiAffinityFilter: 컴퓨팅 노드는 지정된 그룹의 인스턴스를 이미 호스팅하지 않습니다.
  • ServerGroupAffinityFilter: 컴퓨팅 노드는 이미 지정된 그룹의 인스턴스를 호스팅하고 있습니다.

필터를 추가하고 제거할 수 있습니다. 다음 테이블에서는 사용 가능한 모든 필터를 설명합니다.

표 7.1. 컴퓨팅 스케줄러 필터

필터설명

AggregateImagePropertiesIsolation

이 필터를 사용하여 인스턴스의 이미지 메타데이터와 호스트 집계 메타데이터를 일치시킵니다. 호스트 집계 메타데이터 중 하나라도 이미지의 메타데이터와 일치하는 경우 해당 호스트 집계에 속하는 컴퓨팅 노드가 해당 이미지에서 인스턴스를 시작하기 위한 후보입니다. 스케줄러는 유효한 이미지 메타데이터 속성만 고려합니다. 유효한 이미지 메타데이터 속성에 대한 자세한 내용은 이미지 메타데이터 속성 을 참조하십시오.

AggregateInstanceExtraSpecsFilter

이 필터를 사용하여 호스트 집계 메타데이터와 인스턴스의 플레이버 추가 사양에 정의된 네임스페이스의 속성을 일치시킵니다.

aggregate_instance_extra _specs: 네임스페이스를 접두사로 지정하여 extra_specs 키의 범위를 지정해야 합니다.

호스트 집계 메타데이터 중 하나라도 플레이버 추가 사양의 메타데이터와 일치하는 경우 해당 호스트 집계에 속하는 컴퓨팅 노드가 해당 이미지에서 인스턴스를 시작하기 위한 후보입니다.

AggregateIoOpsFilter

이 필터를 사용하여 I/O 작업별로 filter_scheduler/max_io_ops_per_host 값을 사용하여 호스트를 필터링합니다. 집계별 값을 찾을 수 없는 경우 이 값은 전역 설정으로 대체됩니다. 호스트가 두 개 이상의 집계에 있고 둘 이상의 값이 발견되면 스케줄러는 최솟값을 사용합니다.

AggregateMultiTenancyIsolation

이 필터를 사용하여 project-isolated 호스트 집계의 컴퓨팅 노드 가용성을 지정된 프로젝트 집합으로 제한합니다. filter_tenant_id 메타데이터 키를 사용하여 지정된 프로젝트만 호스트 집계의 컴퓨팅 노드에서 인스턴스를 시작할 수 있습니다. 자세한 내용은 Creating a project-isolated host aggregate 를 참조하십시오.

참고

프로젝트는 계속 다른 호스트에 인스턴스를 배치할 수 있습니다. 이를 제한하려면 NovaSchedulerPlacementAggregateRequiredForTenants 매개변수를 사용합니다.

AggregateNumInstancesFilter

이 필터를 사용하여 집계된 각 컴퓨팅 노드의 인스턴스 수를 제한할 수 있습니다. filter_scheduler/max_instances_per_host 매개변수를 사용하여 집계당 최대 인스턴스 수를 구성할 수 있습니다. 집계별 값을 찾을 수 없는 경우 이 값은 전역 설정으로 대체됩니다. 컴퓨팅 노드가 두 개 이상의 집계에 있는 경우 스케줄러는 가장 낮은 max_instances_per_host 값을 사용합니다.

AggregateTypeAffinityFilter

플레이버 메타데이터 키가 설정되지 않았거나 플레이버 집계 메타데이터 값에 요청된 플레이버의 이름이 포함된 경우 이 필터를 사용하여 호스트를 전달합니다. 플레이버 메타데이터 항목의 값은 m1.nano 또는 m1.nano,m1. small 과 같이 단일 플레이버 이름 또는 쉼표로 구분된 플레이버 이름 목록을 포함할 수 있는 문자열입니다.

AllHostsFilter

이 필터를 사용하여 인스턴스 예약에 사용 가능한 모든 컴퓨팅 노드를 고려하십시오.

참고

이 필터를 사용하면 다른 필터가 비활성화되지 않습니다.

AvailabilityZoneFilter

이 필터를 사용하여 인스턴스에서 지정한 가용성 영역의 컴퓨팅 노드에서 인스턴스를 시작합니다.

ComputeCapabilitiesFilter

이 필터를 사용하여 계산 노드 기능과 비교하여 플레이버의 추가 사양에 정의된 네임스페이스의 속성을 일치시킵니다. 플레이버 추가 사양 앞에 capabilities: namespace를 추가해야 합니다.

ComputeCapabilitiesFilter 필터를 사용하는 보다 효율적인 대안은 배치 서비스에 보고되는 플레이버의 CPU 특성을 사용하는 것입니다. 특성은 CPU 기능에 대한 일관된 명명을 제공합니다. 자세한 내용은 리소스 공급자 특성을 사용하여 필터링을 참조하십시오.

ComputeFilter

이 필터를 사용하여 작동 및 활성화된 모든 컴퓨팅 노드를 전달합니다. 이 필터가 항상 존재해야 합니다.

DifferentHostFilter

이 필터를 사용하여 특정 인스턴스 집합의 다른 컴퓨팅 노드에서 인스턴스 예약을 활성화합니다. 인스턴스를 시작할 때 이러한 인스턴스를 지정하려면 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

이 필터를 사용하여 인스턴스 이미지에 정의된 다음 속성을 기반으로 컴퓨팅 노드를 필터링합니다.

  • hw_architecture - 호스트 아키텍처(예: x86, ARM, Power)에 대한 응답.
  • img_hv_type - 하이퍼바이저 유형(예: KVM, QEMU, Xen, LXC)에 대한 응답.
  • img_hv_requested_version - Compute 서비스가 보고하는 하이퍼바이저 버전에 대한 응답.
  • hw_vm_mode - 하이퍼바이저 유형(예: hvm, xen, satellitel 또는 exe)에 대한 응답.

인스턴스에 포함된 지정된 이미지 속성을 지원할 수 있는 컴퓨팅 노드는 스케줄러로 전달됩니다. 이미지 속성에 대한 자세한 내용은 이미지 메타데이터 속성 을 참조하십시오.

IsolatedHostsFilter

이 필터를 사용하여 격리된 컴퓨팅 노드에 격리된 이미지가 있는 인스턴스만 예약합니다. filter_scheduler/restrict_isolated_hosts_to_isolated_images 를 구성하여 격리된 컴퓨팅 노드에 인스턴스를 빌드하는 데 격리되지 않은 이미지를 사용하지 않도록 할 수도 있습니다.

분리된 이미지 및 호스트 세트를 지정하려면 filter_scheduler/isolated_hosts 및 filter_ 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 환경 파일에 다음 구성을 추가합니다.

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 사용 가능한 Compute 노드에서 NUMA 토폴로지가 있는 인스턴스를 예약합니다. extra_specs 플레이버 및 이미지 속성을 사용하여 인스턴스의 NUMA 토폴로지를 지정합니다. 필터는 각 호스트 NUMA 셀에 대한 초과 서브스크립션 제한을 고려하여 Compute 노드 토폴로지에 인스턴스 NUMA 토폴로지를 일치시키려고 합니다.

NumInstancesFilter

이 필터를 사용하여 max_instances_per_host 옵션에서 지정한 것보다 많은 인스턴스가 실행 중인 컴퓨팅 노드를 필터링합니다.

PciPassthroughFilter

이 필터를 사용하여 extra_specs 플레이버를 사용하여 인스턴스가 요청하는 장치가 있는 컴퓨팅 노드에 인스턴스를 예약합니다.

요청하는 인스턴스에 대해 일반적으로 비용이 많이 들고 제한된 PCI 장치가 있는 노드를 예약하려면 이 필터를 사용합니다.

SameHostFilter

이 필터를 사용하여 특정 인스턴스 집합과 동일한 컴퓨팅 노드에서 인스턴스 예약을 활성화합니다. 인스턴스를 시작할 때 이러한 인스턴스를 지정하려면 키로 same_host 를 사용하고 인스턴스 UUID를 값으로 --hint 인수를 사용합니다.

$ 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

이 필터를 사용하여 동일한 컴퓨팅 노드의 선호도 서버 그룹에 인스턴스를 예약합니다. 서버 그룹을 생성하려면 다음 명령을 입력합니다.

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

이 그룹에서 인스턴스를 시작하려면 그룹에 --hint 인수를 키로 사용하고 그룹 UUID를 값으로 사용합니다.

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

ServerGroupAntiAffinityFilter

이 필터를 사용하여 다른 컴퓨팅 노드에서 anti-affinity 서버 그룹에 속하는 인스턴스를 예약합니다. 서버 그룹을 생성하려면 다음 명령을 입력합니다.

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

이 그룹에서 인스턴스를 시작하려면 그룹에 --hint 인수를 키로 사용하고 그룹 UUID를 값으로 사용합니다.

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

SimpleCIDRAffinityFilter

이 필터를 사용하여 특정 IP 서브넷 범위가 있는 컴퓨팅 노드에 인스턴스를 예약합니다. 필요한 범위를 지정하려면 인스턴스를 시작할 때 --hint 인수를 사용하여 build_near_host_ip 키와 cidr 키를 전달합니다.

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