편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
==개요== | ==개요== | ||
[[분류: 미완성]] | |||
[[분류: Nova]] | [[분류: Nova]] | ||
;Compute schedulers | ;Compute schedulers | ||
;컴퓨트 스케줄러 | ;컴퓨트 스케줄러 | ||
https://docs.openstack.org/nova/2024.1/admin/scheduling.html | * https://docs.openstack.org/nova/2024.1/admin/scheduling.html | ||
Compute는 <code>nova-scheduler</code> 서비스를 사용하여 컴퓨팅 요청을 처리할 호스트나 노드를 결정합니다. 예를 들어, <code>nova-scheduler</code> 서비스는 VM이 실행될 호스트나 노드를 결정합니다. 스케줄러는 다양한 옵션으로 설정할 수 있습니다. | Compute는 <code>nova-scheduler</code> 서비스를 사용하여 컴퓨팅 요청을 처리할 호스트나 노드를 결정합니다. 예를 들어, <code>nova-scheduler</code> 서비스는 VM이 실행될 호스트나 노드를 결정합니다. 스케줄러는 다양한 옵션으로 설정할 수 있습니다. | ||
11번째 줄: | 12번째 줄: | ||
* 요청된 [https://docs.openstack.org/nova/2024.1/reference/glossary.html#term-Availability-Zone 가용성 영역](map_az_to_placement_aggregate)에 배치(placement) 프리필터에 있음 | * 요청된 [https://docs.openstack.org/nova/2024.1/reference/glossary.html#term-Availability-Zone 가용성 영역](map_az_to_placement_aggregate)에 배치(placement) 프리필터에 있음 | ||
* 요청을 처리할 수 있으며, 타겟 노드를 처리하는 nova-compute 서비스가 사용 가능하고 비활성화되지 않음 (ComputeFilter) | * 요청을 처리할 수 있으며, 타겟 노드를 처리하는 nova-compute 서비스가 사용 가능하고 비활성화되지 않음 (ComputeFilter) | ||
* 인스턴스 유형과 관련된 | * 인스턴스 유형과 관련된 추가 사양 충족 (ComputeCapabilitiesFilter) | ||
* 인스턴스 이미지 속성에 지정된 아키텍처, 하이퍼바이저 유형 또는 가상머신 모드 속성 충족 (ImagePropertiesFilter) | * 인스턴스 이미지 속성에 지정된 아키텍처, 하이퍼바이저 유형 또는 가상머신 모드 속성 충족 (ImagePropertiesFilter) | ||
* (요청된 경우) 그룹의 다른 인스턴스와 다른 호스트에 있음 (ServerGroupAntiAffinityFilter) | * (요청된 경우) 그룹의 다른 인스턴스와 다른 호스트에 있음 (ServerGroupAntiAffinityFilter) | ||
130번째 줄: | 131번째 줄: | ||
===<code>AggregateInstanceExtraSpecsFilter</code>=== | ===<code>AggregateInstanceExtraSpecsFilter</code>=== | ||
인스턴스 유형의 | 인스턴스 유형의 추가 사양에 정의된 속성을 호스트 애그리게이트의 관리자 정의 속성과 비교합니다. <code>aggregate_instance_extra_specs</code>로 스코프가 지정된 사양과 함께 작동합니다. 여러 값은 쉼표로 구분된 목록으로 제공될 수 있습니다. 하위호환성을 위해, 스코프가 지정되지 않은 사양과도 작동하지만, 이 작업은 [https://docs.openstack.org/nova/2024.1/admin/scheduling.html#computecapabilitiesfilter ComputeCapabilitiesFilter] 필터를 둘 다 활성화할 경우 충돌하기 때문에 강력히 권장되지 않습니다. | ||
자세한 내용은 [https://docs.openstack.org/nova/2024.1/admin/aggregates.html 호스트 집합체]를 참조하십시오. | 자세한 내용은 [https://docs.openstack.org/nova/2024.1/admin/aggregates.html 호스트 집합체]를 참조하십시오. | ||
154번째 줄: | 155번째 줄: | ||
===<code>AggregateTypeAffinityFilter</code>=== | ===<code>AggregateTypeAffinityFilter</code>=== | ||
호스트 집합의 메타데이터에 설정된 <code>instance_type</code> 키의 이름이 인스턴스의 | 호스트 집합의 메타데이터에 설정된 <code>instance_type</code> 키의 이름이 인스턴스의 flavor 이름과 일치하거나 <code>instance_type</code> 키가 설정되지 않은 경우 해당 집합의 호스트를 필터링합니다. | ||
<code>instance_type</code> 메타데이터 항목의 값은 단일 <code>instance_type</code> 이름 또는 <code>m1.nano</code>나 <code>m1.nano,m1.small</code>과 같이 쉼표로 구분된 <code>instance_type</code> 이름 목록일 수 있는 문자열입니다. | <code>instance_type</code> 메타데이터 항목의 값은 단일 <code>instance_type</code> 이름 또는 <code>m1.nano</code>나 <code>m1.nano,m1.small</code>과 같이 쉼표로 구분된 <code>instance_type</code> 이름 목록일 수 있는 문자열입니다. | ||
168번째 줄: | 169번째 줄: | ||
===<code>ComputeCapabilitiesFilter</code>=== | ===<code>ComputeCapabilitiesFilter</code>=== | ||
호스트를 필터링하여 | 호스트를 필터링하여 flavor의 엑스트라 스펙에 정의된 속성을 컴퓨팅 기능과 매칭합니다. 엑스트라 스펙 키에 콜론(:)이 포함된 경우, 콜론 앞의 모든 내용은 네임스페이스로 간주되고 콜론 뒤의 모든 내용은 매칭할 키로 간주됩니다. 네임스페이스가 존재하고 <code>capabilities</code>가 아닌 경우, 필터는 네임스페이스를 무시합니다. 예를 들어, <code>capabilities:cpu_info:features</code>는 유효한 스코프 형식입니다. 하위호환성을 위해, 필터는 네임스페이스가 없는 경우에도 엑스트라 스펙 키를 매칭할 키로 간주합니다. 그러나 이 방법은 [https://docs.openstack.org/nova/2024.1/admin/scheduling.html#aggregateinstanceextraspecsfilter AggregateInstanceExtraSpecsFilter] 필터를 활성화한 경우 충돌을 일으킬 수 있으므로 권장되지 않습니다. | ||
엑스트라 스펙은 키/값 쌍의 값 문자열 앞에 연산자를 가질 수 있습니다. 연산자가 지정되지 않은 경우 기본 연산자는 <code>s==</code>입니다. 유효한 연산자는 다음과 같습니다: | |||
* <code>=</code> (숫자로서 같거나 큰 값; vcpus 경우와 동일) | * <code>=</code> (숫자로서 같거나 큰 값; vcpus 경우와 동일) | ||
201번째 줄: | 202번째 줄: | ||
* <code>vcpus_used</code> (숫자로 비교, 예: <code>= 0</code>, <code><= 10</code>) | * <code>vcpus_used</code> (숫자로 비교, 예: <code>= 0</code>, <code><= 10</code>) | ||
일부 virt 드라이버는 CPU 특성을 Placement 서비스에 보고하는 기능을 지원합니다. 이 기능이 사용가능한 경우, <code>ComputeCapabilitiesFilter</code> 대신 | 일부 virt 드라이버는 CPU 특성을 Placement 서비스에 보고하는 기능을 지원합니다. 이 기능이 사용가능한 경우, <code>ComputeCapabilitiesFilter</code> 대신 flavor에서 특성을 사용하는 것을 고려해야 합니다. 특성은 일부 virt 드라이버에서 CPU 기능에 대해 일관된 네이밍을 제공하며, 특성 쿼리는 효율적입니다. 자세한 내용은 [https://docs.openstack.org/nova/2024.1/user/support-matrix.html 기능 지원 매트릭스], [https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs-required-traits 필수 특성], [https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs-forbidden-traits 금지된 특성], [https://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/report-cpu-features-as-traits.html CPU 기능을 Placement 서비스에 보고하기]를 참조하십시오. | ||
또한 [https://docs.openstack.org/nova/2024.1/admin/scheduling.html#id19 특성으로서의 컴퓨트 능력(Compute capabilities as traits)]도 참조하십시오. | 또한 [https://docs.openstack.org/nova/2024.1/admin/scheduling.html#id19 특성으로서의 컴퓨트 능력(Compute capabilities as traits)]도 참조하십시오. | ||
487번째 줄: | 488번째 줄: | ||
===<code>RAMWeigher</code>=== | ===<code>RAMWeigher</code>=== | ||
호스트의 사용가능한 RAM을 기준으로 가중치를 | 호스트의 사용가능한 RAM을 기준으로 가중치를 계산합니다. 가장 큰 가중치가 우선하도록 정렬됩니다. <code>[https://docs.openstack.org/nova/2024.1/configuration/config.html#filter_scheduler.ram_weight_multiplier filter_scheduler.ram_weight_multiplier]</code>가 음수인 경우, 사용가능한 RAM이 가장 적은 호스트가 우선하게 됩니다(호스트를 분산시키는 대신 쌓고 싶은 경우에 유용함). | ||
Stein 릴리스부터는, 키가 <code>ram_weight_multiplier</code>인 집합체당(per-aggregate) 값이 있으면, 값이 RAM 가중치 배수로 선택됩니다. 그렇지 않으면 <code>[https://docs.openstack.org/nova/2024.1/configuration/config.html#filter_scheduler.ram_weight_multiplier filter_scheduler.ram_weight_multiplier]</code>로 대체됩니다. 호스트의 집합체 메타데이터에 둘 이상의 값이 있으면 최소값이 사용됩니다. | Stein 릴리스부터는, 키가 <code>ram_weight_multiplier</code>인 집합체당(per-aggregate) 값이 있으면, 값이 RAM 가중치 배수로 선택됩니다. 그렇지 않으면 <code>[https://docs.openstack.org/nova/2024.1/configuration/config.html#filter_scheduler.ram_weight_multiplier filter_scheduler.ram_weight_multiplier]</code>로 대체됩니다. 호스트의 집합체 메타데이터에 둘 이상의 값이 있으면 최소값이 사용됩니다. | ||
===<code>CPUWeigher</code>=== | ===<code>CPUWeigher</code>=== | ||
컴퓨트 노드에서 사용가능한 vCPU를 기반으로 가중치를 | 컴퓨트 노드에서 사용가능한 vCPU를 기반으로 가중치를 계산합니다. 가장 큰 가중치가 우선하도록 정렬됩니다. <code>filter_scheduler.cpu_weight_multiplier</code> 가중치 배수가 음수인 경우, 사용가능한 CPU가 가장 적은 호스트가 우선하게 됩니다(호스트를 분산시키는 대신 쌓고 싶은 경우에 유용함). | ||
Stein 릴리스부터는, <code>cpu_weight_multiplier</code> 키를 가진 집합체당(per-aggregate) 값이 있으면, 그 값이 CPU 가중치 배수로 선택됩니다. 그렇지 않으면 <code>[https://docs.openstack.org/nova/2024.1/configuration/config.html#filter_scheduler.cpu_weight_multiplier filter_scheduler.cpu_weight_multiplier]</code>로 대체됩니다. 호스트의 집합체 메타데이터에 둘 이상의 값이 있으면 최소값이 사용됩니다. | Stein 릴리스부터는, <code>cpu_weight_multiplier</code> 키를 가진 집합체당(per-aggregate) 값이 있으면, 그 값이 CPU 가중치 배수로 선택됩니다. 그렇지 않으면 <code>[https://docs.openstack.org/nova/2024.1/configuration/config.html#filter_scheduler.cpu_weight_multiplier filter_scheduler.cpu_weight_multiplier]</code>로 대체됩니다. 호스트의 집합체 메타데이터에 둘 이상의 값이 있으면 최소값이 사용됩니다. | ||
502번째 줄: | 503번째 줄: | ||
===<code>MetricsWeigher</code>=== | ===<code>MetricsWeigher</code>=== | ||
이 웨이어(weigher, 가중치 계산기)는 컴퓨트 노드 호스트의 다양한 메트릭을 기반으로 가중치를 | 이 웨이어(weigher, 가중치 계산기)는 컴퓨트 노드 호스트의 다양한 메트릭을 기반으로 가중치를 계산할 수 있습니다. 가중치를 부여할 메트릭과 그 가중치 비율은 <code>[https://docs.openstack.org/nova/2024.1/configuration/config.html#metrics.weight_setting metrics.weight_setting]</code> 설정 옵션을 사용하여 지정합니다. 예를 들면 다음과 같습니다: | ||
<syntaxhighlight lang='ini'> | <syntaxhighlight lang='ini'> | ||
514번째 줄: | 515번째 줄: | ||
===<code>IoOpsWeigher</code>=== | ===<code>IoOpsWeigher</code>=== | ||
===<code>PCIWeigher</code>=== | ===<code>PCIWeigher</code>=== | ||
===<code>ServerGroupSoftAffinityWeigher</code>=== | ===<code>ServerGroupSoftAffinityWeigher</code>=== | ||
===<code>ServerGroupSoftAntiAffinityWeigher</code>=== | ===<code>ServerGroupSoftAntiAffinityWeigher</code>=== | ||
===<code>BuildFailureWeigher</code>=== | ===<code>BuildFailureWeigher</code>=== | ||
===<code>CrossCellWeigher</code>=== | ===<code>CrossCellWeigher</code>=== | ||
''버전 21.0.0 (Ussuri)에서 새로 추가됨'' | ''버전 21.0.0 (Ussuri)에서 새로 추가됨'' | ||
643번째 줄: | 614번째 줄: | ||
''버전 19.0.0 (Stein)에 새로 추가됨'' | ''버전 19.0.0 (Stein)에 새로 추가됨'' | ||
<code>nova-compute</code> 서비스는 자체 컴퓨팅 드라이버 기능을 기반으로 특정 <code>COMPUTE_*</code> 특성을 placement 서비스에 보고합니다. 이러한 특성은 해당 컴퓨팅 서비스의 리소스 제공자와 연관됩니다. 이러한 특성은 [https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs-required-traits 필수 특성(Required traits)] 또는 [https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs-forbidden-traits 금지된 특성(Forbidden traits)]으로 | <code>nova-compute</code> 서비스는 자체 컴퓨팅 드라이버 기능을 기반으로 특정 <code>COMPUTE_*</code> 특성을 placement 서비스에 보고합니다. 이러한 특성은 해당 컴퓨팅 서비스의 리소스 제공자와 연관됩니다. 이러한 특성은 [https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs-required-traits 필수 특성(Required traits)] 또는 [https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs-forbidden-traits 금지된 특성(Forbidden traits)]으로 flavor를 구성하여 스케줄링 중에 사용할 수 있습니다. 예를 들어, multi-attach 볼륨을 지원하는 일련의 컴퓨트 노드가 있는 호스트 집합체가 있는 경우, flavor에 <code>trait:COMPUTE_VOLUME_MULTI_ATTACH=required</code>엑스트라 스펙을 추가하고, [https://docs.openstack.org/nova/2024.1/admin/aggregates.html#config-sch-for-aggs 일반적인 방식]으로 flavor를 집합체에 제한할 수 있습니다. | ||
다음은 특정 CPU 기능을 특성으로, 드라이버 기능을 특성으로, 그리고 <code>CUSTOM_</code> 접두어가 붙은 커스텀 특성을 노출하는 libvirt 컴퓨트 노드 리소스 제공자 예제입니다: | 다음은 특정 CPU 기능을 특성으로, 드라이버 기능을 특성으로, 그리고 <code>CUSTOM_</code> 접두어가 붙은 커스텀 특성을 노출하는 libvirt 컴퓨트 노드 리소스 제공자 예제입니다: | ||
683번째 줄: | 654번째 줄: | ||
* <code>HostState</code> 객체: 호스트의 속성을 얻을 수 있습니다. | * <code>HostState</code> 객체: 호스트의 속성을 얻을 수 있습니다. | ||
* <code>RequestSpec</code> 객체: 사용자 요청을 설명하며, | * <code>RequestSpec</code> 객체: 사용자 요청을 설명하며, flavor, 이미지 및 스케줄러 힌트를 포함합니다. | ||
이 객체와 해당 속성에 대한 자세한 내용은 코드베이스(다른 필터 코드를 살펴보는 정도로도 충분합니다)를 참조하거나 <code>#openstack-nova</code> IRC 채널에서 도움을 요청하세요. | 이 객체와 해당 속성에 대한 자세한 내용은 코드베이스(다른 필터 코드를 살펴보는 정도로도 충분합니다)를 참조하거나 <code>#openstack-nova</code> IRC 채널에서 도움을 요청하세요. | ||
778번째 줄: | 749번째 줄: | ||
==웨이어 직접 작성하기== | ==웨이어 직접 작성하기== | ||
웨이어를 직접 작성하려면 <code>BaseHostFilter</code>를 상속해야 합니다. 웨이어는 <code>weight_multiplier</code>와 <code>_weight_object</code> 메소드를 모두 구현하거나 <code>weight_objects</code> 메소드만 구현할 수 있습니다. <code>weight_objects</code> 메소드는 모든 객체에 접근해야 하는 경우에만 재정의하며, 단순히 가중치 목록을 반환할 뿐 객체의 가중치를 직접 수정하지 않습니다. 최종 가중치는 <code>weight.BaseWeightHandler</code>에 의해 정규화되어 계산됩니다. | 웨이어를 직접 작성하려면 <code>BaseHostFilter</code>를 상속해야 합니다. 웨이어는 <code>weight_multiplier</code>와 <code>_weight_object</code> 메소드를 모두 구현하거나 <code>weight_objects</code> 메소드만 구현할 수 있습니다. <code>weight_objects</code> 메소드는 모든 객체에 접근해야 하는 경우에만 재정의하며, 단순히 가중치 목록을 반환할 뿐 객체의 가중치를 직접 수정하지 않습니다. 최종 가중치는 <code>weight.BaseWeightHandler</code>에 의해 정규화되어 계산됩니다. | ||