1 개요[ | ]
- Filtering hosts by isolating aggregates
- 집합체로 격리하여 호스트 필터링
https://docs.openstack.org/nova/2024.1/reference/isolate-aggregates.html
2 배경[ | ]
특정 라이선스가 있는 이미지만 실행할 수 있도록 허용하는 호스트를 가진 집합체 ABC
를 셋업하려고 합니다. 예를 들어, 집합체에 <LICENSED=WINDOWS>
와 같은 메타데이터를 태그할 수 있습니다. 그러면 <LICENSED=WINDOWS>
속성을 포함하는 이미지를 사용하여 인스턴스를 부팅하면 ABC
집합체의 호스트 중 하나에서 실행됩니다. 그러나 사용자가 <LICENSED=WINDOWS>
메타데이터를 포함하지 않는 새 이미지를 만들면, 해당 이미지를 사용하여 부팅된 인스턴스가 여전히 집합체 ABC
의 호스트에서 실행될 수 있습니다. 이는 launchpad 버그 1677217에 보고된 것과 같이, AggregateImagePropertiesIsolation 스케줄러 필터가 이미지 속성에 집합체 메타데이터 <LICENSED=WINDOWS>
가 없더라도 통과하기 때문입니다.
3 해결책[ | ]
위 문제는 20.0.0 Train 릴리스에서 구현된 blueprint placement-req-filter-forbidden-aggregates를 통해 해결되었습니다.
다음 예제에서는 Nova에서 집합체 ABC
를 설정하고 HOST1
과 HOST2
를 추가했으며, 이러한 호스트들을 Windows 라이센스가 필요한 인스턴스만 실행하도록 격리하고자 합니다.
- 1. nova.conf 파일에서
scheduler.enable_isolated_aggregate_filtering
설정 옵션을 true로 세팅하고 nova-scheduler 서비스를 재시작하십시오.
- 2. Placement 서비스에서
HOST1
및HOST2
의 리소스 제공자에CUSTOM_LICENSED_WINDOWS
특성을 추가합니다.
- 먼저
CUSTOM_LICENSED_WINDOWS
특성을 생성합니다:
- ConsoleCopy
# openstack --os-placement-api-version 1.6 trait create CUSTOM_LICENSED_WINDOWS
<HOS1_UUID>
는HOST1
의 UUID이며, 이는 리소스 제공자의 UUID와 동일합니다.
- 먼저
HOST1
의 기존 특성을 수집하여 명령줄을 작성하십시오: - ConsoleCopy
traits=$(openstack --os-placement-api-version 1.6 resource provider trait list -f value <HOST1_UUID> | sed 's/^/--trait /')
HOST1
의 특성을 교체하고CUSTOM_LICENSED_WINDOWS
를 추가하십시오:
- ConsoleCopy
# openstack --os-placement-api-version 1.6 resource provider trait set $traits --trait CUSTOM_LICENSED_WINDOWS <HOST1_UUID>
- 위 단계를
HOST2
에도 반복하십시오.
- 3. 집합체
ABC
에trait:CUSTOM_LICENSED_WINDOWS=required
메타데이터 속성을 추가하십시오:
- ConsoleCopy
# openstack --os-compute-api-version 2.53 aggregate set --property trait:CUSTOM_LICENSED_WINDOWS=required ABC
위와 같이, trait:CUSTOM_LICENSED_WINDOWS=required
특성이 포함된 플레이버 또는 이미지를 사용하는 모든 인스턴스는 HOST1
또는 HOST2
에 배치됩니다. 이러한 호스트들은 해당 특성을 노출하기 때문입니다.
하지만, isolate_aggregates
요청 필터가 설정되었기 때문에, trait:CUSTOM_LICENSED_WINDOWS=required
특성이 포함되지 않은 플레이버 또는 이미지를 사용하는 인스턴스는 HOST1
또는 HOST2에 배치되지 않습니다. 이는 집합체 ABC
가 해당 특성을 필요로 하기 때문입니다.
위 예제에서는 CUSTOM_LICENSED_WINDOWS
특성을 사용했지만, 유사한 방식으로 다른 커스텀 또는 표준 특성을 사용할 수 있습니다.
필터는 여러 집합체에 걸쳐 여러 특성의 사용을 지원합니다. 집합체에 설정된 모든 특성을 요구하는 플레이버와 이미지 메타데이터의 조합만 통과할 수 있습니다.