7장. 인스턴스 스케줄링 및 배치 구성

계산 스케줄러 서비스는 인스턴스를 배치할 컴퓨팅 노드 또는 호스트 집계를 결정합니다. Compute(nova) 서비스에서 인스턴스를 시작하거나 이동하라는 요청을 수신하면 요청, 플레이버 및 이미지를 사용하여 적절한 호스트를 찾습니다. 예를 들어 플레이버는 인스턴스에 스토리지 디스크 유형 또는 Intel CPU 명령 집합 확장 등 호스트가 보유해야 하는 특성을 지정할 수 있습니다.

계산 스케줄러 서비스는 다음 구성 요소의 구성을 사용하여 인스턴스를 시작하거나 이동할 계산 노드를 결정합니다.

  1. 배치 서비스 사전 필터 : 계산 스케줄러 서비스는 배치 서비스를 사용하여 특정 속성을 기반으로 후보 컴퓨팅 노드 집합을 필터링합니다. 예를 들어 배치 서비스는 비활성화된 Compute 노드를 자동으로 제외합니다.
  2. 필터: 계산 스케줄러 서비스에서 사용하여 인스턴스를 시작할 계산 노드의 초기 집합을 결정합니다.
  3. 가중치: 계산 스케줄러 서비스는 가중치 시스템을 사용하여 필터링된 컴퓨팅 노드의 우선 순위를 지정합니다. 가장 높은 가중치는 우선 순위가 가장 높습니다.

다음 다이어그램에서 호스트 1 및 3은 필터링 후 사용할 수 있습니다. 호스트 1은 가중치가 가장 높으므로 스케줄링에 가장 높은 우선 순위가 있습니다.

Scheduling Hosts

7.1. 배치 서비스를 사용한 사전 필터링

Compute 서비스(nova)는 인스턴스를 생성하고 관리할 때 배치 서비스와 상호 작용합니다. 배치 서비스는 계산 노드, 공유 스토리지 풀 또는 IP 할당 풀, 사용 가능한 vCPU와 같은 리소스 프로바이더의 인벤토리 및 사용을 추적합니다. 리소스의 선택 및 사용을 관리해야 하는 서비스는 배치 서비스를 사용할 수 있습니다.

배치 서비스는 리소스 프로바이더가 보유한 스토리지 디스크 특성 유형과 같은 리소스 프로바이더에 대한 사용 가능한 정성적 리소스 매핑도 추적합니다.

배치 서비스는 배치 서비스 리소스 프로바이더 인벤토리 및 특성을 기반으로 후보 컴퓨팅 노드 세트에 사전 필터를 적용합니다. 다음 기준에 따라 사전 필터를 생성할 수 있습니다.

  • 지원되는 이미지 유형
  • traits
  • 프로젝트 또는 테넌트
  • 가용성 영역

7.1.1. 요청된 이미지 유형 지원으로 필터링

인스턴스를 시작하는 데 사용되는 이미지의 디스크 형식을 지원하지 않는 컴퓨팅 노드를 제외할 수 있습니다. 이 기능은 환경에서 Red Hat Ceph Storage를 임시 백엔드로 사용하여 QCOW2 이미지를 지원하지 않는 경우에 유용합니다. 이 기능을 사용하면 스케줄러에서 QCOW2 이미지를 사용하여 Red Hat Ceph Storage에서 지원하는 계산 노드로 인스턴스를 시작하도록 요청을 보내지 않습니다.

절차

  1. 컴퓨팅 환경 파일을 엽니다.
  2. 인스턴스를 시작하는 데 사용되는 이미지의 디스크 형식을 지원하지 않는 컴퓨팅 노드를 제외하려면 Compute 환경 파일에서 NovaSchedulerQueryImageType 매개변수를 True 로 설정합니다.
  3. 업데이트를 Compute 환경 파일에 저장합니다.
  4. 다른 환경 파일을 사용하여 스택에 Compute 환경 파일을 추가하고 오버클라우드를 배포합니다.

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml

7.1.2. 리소스 공급자 특성별 필터링

각 리소스 프로바이더에는 일련의 특성이 있습니다. 특성은 리소스 프로바이더의 질적 측면입니다(예: 스토리지 디스크 유형 또는 Intel CPU 명령 집합 확장).

계산 노드는 해당 기능을 특성으로 배치 서비스에 보고합니다. 인스턴스는 이러한 특성 중 필요한 특성 또는 리소스 프로바이더에 없어야 하는 특성을 지정할 수 있습니다. 계산 스케줄러는 이러한 특성을 사용하여 인스턴스를 호스팅하는 데 적합한 컴퓨팅 노드 또는 호스트 집계를 식별할 수 있습니다.

클라우드 사용자가 특정 특성이 있는 호스트에 인스턴스를 만들 수 있도록 하려면 특정 특성을 요구하거나 금지하는 플레이버를 정의하고 특정 특성을 사용하거나 금지하는 이미지를 생성할 수 있습니다.

사용 가능한 특성 목록은 os-traits 라이브러리 를 참조하십시오. 필요에 따라 사용자 지정 특성을 만들 수도 있습니다.

7.1.2.1. 리소스 공급자 특성을 필요하거나 금지하는 이미지 생성

클라우드 사용자가 특정 특성을 가진 호스트에서 인스턴스를 시작하는 데 사용할 수 있는 인스턴스 이미지를 생성할 수 있습니다.

절차

  1. 새 이미지를 생성합니다.

    (overcloud)$ openstack image create ... trait-image
  2. 호스트 또는 호스트 집계가 있어야 하는 특성을 식별합니다. 기존 특성을 선택하거나 새 특성을 생성할 수 있습니다.

    • 기존 특성을 사용하려면 기존 특성을 나열하여 특성 이름을 검색합니다.

      (overcloud)$ openstack --os-placement-api-version 1.6 trait list
    • 새 특성을 생성하려면 다음 명령을 입력합니다.

      (overcloud)$ openstack --os-placement-api-version 1.6 trait \
       create CUSTOM_TRAIT_NAME

      사용자 지정 특성은 접두사 CUSTOM_ 로 시작해야 하며 A~Z 문자, 숫자 0~9자, 밑줄 "_" 문자만 포함해야 합니다.

  3. 각 호스트의 기존 리소스 공급자 특성을 수집합니다.

    (overcloud)$ existing_traits=$(openstack --os-placement-api-version 1.6 resource provider trait list -f value <host_uuid> | sed 's/^/--trait /')
  4. 다음과 같이 호스트 또는 호스트 집계가 필요한 특성의 기존 리소스 공급자 특성을 확인합니다.

    (overcloud)$ echo $existing_traits
  5. 필요한 특성이 리소스 공급자에 아직 추가되지 않은 경우 각 호스트의 리소스 공급자에 기존 특성 및 필요한 특성을 추가합니다.

    (overcloud)$ openstack --os-placement-api-version 1.6 \
     resource provider trait set $existing_traits \
     --trait <TRAIT_NAME> \
     <host_uuid>

    <TRAIT_NAME> 을 리소스 공급자에 추가할 특성의 이름으로 바꿉니다. 필요에 따라 --trait 옵션을 두 번 이상 사용하여 추가 특성을 추가할 수 있습니다.

    참고

    이 명령은 리소스 공급자에 대한 특성을 완전히 대체합니다. 따라서 호스트의 기존 리소스 공급자 특성 목록을 검색하고 다시 설정하여 제거되지 않도록 해야 합니다.

  6. 필수 특성을 가진 호스트 또는 호스트 집계에서 인스턴스를 예약하려면 이미지 추가 사양에 특성을 추가합니다. 예를 들어 플레이버-512를 지원하는 호스트 또는 호스트 집계에 인스턴스를 예약하려면 이미지 추가 사양에 다음 특성을 추가합니다.

    (overcloud)$ openstack image set \
     --property trait:HW_CPU_X86_AVX512BW=required \
     trait-image
  7. 금지된 특성이 있는 호스트 또는 호스트 집계를 필터링하려면 해당 특성을 이미지에 추가 사양에 추가합니다. 예를 들어 다중 연결 볼륨을 지원하는 호스트 또는 호스트 집계에 인스턴스가 예약되지 않도록 하려면 이미지 추가 사양에 다음 특성을 추가합니다.

    (overcloud)$ openstack image set \
     --property trait:COMPUTE_VOLUME_MULTI_ATTACH=forbidden \
     trait-image

7.1.2.2. 리소스 공급자 특성을 필요하거나 금지하는 플레이버 생성

클라우드 사용자가 특정 특성을 가진 호스트에서 인스턴스를 시작하는 데 사용할 플레이버를 만들 수 있습니다.

절차

  1. 플레이버를 생성합니다.

    (overcloud)$ openstack flavor create --vcpus 1 --ram 512 \
     --disk 2 trait-flavor
  2. 호스트 또는 호스트 집계가 있어야 하는 특성을 식별합니다. 기존 특성을 선택하거나 새 특성을 생성할 수 있습니다.

    • 기존 특성을 사용하려면 기존 특성을 나열하여 특성 이름을 검색합니다.

      (overcloud)$ openstack --os-placement-api-version 1.6 trait list
    • 새 특성을 생성하려면 다음 명령을 입력합니다.

      (overcloud)$ openstack --os-placement-api-version 1.6 trait \
       create CUSTOM_TRAIT_NAME

      사용자 지정 특성은 접두사 CUSTOM_ 로 시작해야 하며 A~Z 문자, 숫자 0~9자, 밑줄 "_" 문자만 포함해야 합니다.

  3. 각 호스트의 기존 리소스 공급자 특성을 수집합니다.

    (overcloud)$ existing_traits=$(openstack --os-placement-api-version 1.6 resource provider trait list -f value <host_uuid> | sed 's/^/--trait /')
  4. 다음과 같이 호스트 또는 호스트 집계가 필요한 특성의 기존 리소스 공급자 특성을 확인합니다.

    (overcloud)$ echo $existing_traits
  5. 필요한 특성이 리소스 공급자에 아직 추가되지 않은 경우 각 호스트의 리소스 공급자에 기존 특성 및 필요한 특성을 추가합니다.

    (overcloud)$ openstack --os-placement-api-version 1.6 \
     resource provider trait set $existing_traits \
     --trait <TRAIT_NAME> \
     <host_uuid>

    <TRAIT_NAME> 을 리소스 공급자에 추가할 특성의 이름으로 바꿉니다. 필요에 따라 --trait 옵션을 두 번 이상 사용하여 추가 특성을 추가할 수 있습니다.

    참고

    이 명령은 리소스 공급자에 대한 특성을 완전히 대체합니다. 따라서 호스트의 기존 리소스 공급자 특성 목록을 검색하고 다시 설정하여 제거되지 않도록 해야 합니다.

  6. 필수 특성을 가진 호스트 또는 호스트 집계에 인스턴스를 예약하려면 플레이버 추가 사양에 특성을 추가합니다. 예를 들어 플레이버 추가 사양에 다음 특성을 추가하는 호스트 또는 호스트 집계에서 인스턴스를 예약하려면 다음 특성을 추가합니다.

    (overcloud)$ openstack flavor set \
     --property trait:HW_CPU_X86_AVX512BW=required \
     trait-flavor
  7. 금지된 특성이 있는 호스트 또는 호스트 집계를 필터링하려면 플레이버 추가 사양에 특성을 추가합니다. 예를 들어 다중 연결 볼륨을 지원하는 호스트 또는 호스트 집계에 인스턴스를 예약하지 않으려면 다음 특성을 플레이버 추가 사양에 추가합니다.

    (overcloud)$ openstack flavor set \
     --property trait:COMPUTE_VOLUME_MULTI_ATTACH=forbidden \
     trait-flavor

7.1.3. 호스트 집계를 격리하여 필터링

호스트 집계의 예약을 플레이버 및 이미지 특성이 호스트 집계의 메타데이터와 일치하는 인스턴스로만 제한할 수 있습니다. 플레이버 및 이미지 메타데이터의 조합에는 해당 호스트 집계의 계산 노드에 예약할 수 있는 모든 호스트 집계 특성이 있어야 합니다.

절차

  1. 컴퓨팅 환경 파일을 엽니다.
  2. 플레이버 및 이미지 특성이 집계 메타데이터와 일치하는 인스턴스를 호스팅하도록 호스트 집계를 격리하려면 Compute 환경 파일에서 NovaSchedulerEnableIsolatedAggregateFiltering 매개변수를 True 로 설정합니다.
  3. 업데이트를 Compute 환경 파일에 저장합니다.
  4. 다른 환경 파일을 사용하여 스택에 Compute 환경 파일을 추가하고 오버클라우드를 배포합니다.

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml
  5. 호스트 집계를 격리할 특성을 식별합니다. 기존 특성을 선택하거나 새 특성을 생성할 수 있습니다.

    • 기존 특성을 사용하려면 기존 특성을 나열하여 특성 이름을 검색합니다.

      (overcloud)$ openstack --os-placement-api-version 1.6 trait list
    • 새 특성을 생성하려면 다음 명령을 입력합니다.

      (overcloud)$ openstack --os-placement-api-version 1.6 trait \
       create CUSTOM_TRAIT_NAME

      사용자 지정 특성은 접두사 CUSTOM_ 로 시작해야 하며 A~Z 문자, 숫자 0~9자, 밑줄 "_" 문자만 포함해야 합니다.

  6. 각 컴퓨팅 노드의 기존 리소스 공급자 특성을 수집합니다.

    (overcloud)$ existing_traits=$(openstack --os-placement-api-version 1.6 resource provider trait list -f value <host_uuid> | sed 's/^/--trait /')
  7. 에 대한 호스트 집계를 격리할 특성의 기존 리소스 공급자 특성을 확인합니다.

    (overcloud)$ echo $existing_traits
  8. 필요한 특성이 리소스 공급자에 아직 추가되지 않은 경우 호스트 집계의 각 컴퓨팅 노드의 리소스 공급자에 기존 특성 및 필요한 특성을 추가합니다.

    (overcloud)$ openstack --os-placement-api-version 1.6 \
     resource provider trait set $existing_traits \
     --trait <TRAIT_NAME> \
     <host_uuid>

    <TRAIT_NAME> 을 리소스 공급자에 추가할 특성의 이름으로 바꿉니다. 필요에 따라 --trait 옵션을 두 번 이상 사용하여 추가 특성을 추가할 수 있습니다.

    참고

    이 명령은 리소스 공급자에 대한 특성을 완전히 대체합니다. 따라서 호스트의 기존 리소스 공급자 특성 목록을 검색하고 다시 설정하여 제거되지 않도록 해야 합니다.

  9. 호스트 집계의 각 컴퓨팅 노드에 대해 6~8단계를 반복합니다.
  10. 특성의 metadata 속성을 호스트 집계에 추가합니다.

    (overcloud)$ openstack --os-compute-api-version 2.53 aggregate set \
     --property trait:<TRAIT_NAME>=required <aggregate_name>
  11. 플레이버 또는 이미지에 특성을 추가합니다.

    (overcloud)$ openstack flavor set \
     --property trait:<TRAIT_NAME>=required <flavor>
    (overcloud)$ openstack image set \
     --property trait:<TRAIT_NAME>=required <image>

7.1.4. 배치 서비스를 사용하여 가용성 영역으로 필터링

배치 서비스를 사용하여 가용성 영역 요청을 이행할 수 있습니다. 배치 서비스를 사용하여 가용성 영역별로 필터링하려면 가용성 영역 호스트 집계의 멤버십 및 UUID와 일치하는 배치 집계가 있어야 합니다.

절차

  1. 컴퓨팅 환경 파일을 엽니다.
  2. 배치 서비스를 사용하여 가용성 영역별로 필터링하려면 Compute 환경 파일에서 NovaSchedulerQueryPlacementForAvailabilityZone 매개 변수를 True 로 설정합니다.
  3. NovaSchedulerDefaultFilters 매개변수에서 AvailabilityZoneFilter 필터를 제거합니다.
  4. 업데이트를 Compute 환경 파일에 저장합니다.
  5. 다른 환경 파일을 사용하여 스택에 Compute 환경 파일을 추가하고 오버클라우드를 배포합니다.

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml

추가 리소스

  • 가용성 영역으로 사용할 호스트 집계를 만드는 방법에 대한 자세한 내용은 가용성 영역 생성을 참조하십시오.