Nova 집합체로 격리하여 호스트 필터링

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를 설정하고 HOST1HOST2를 추가했으며, 이러한 호스트들을 Windows 라이센스가 필요한 인스턴스만 실행하도록 격리하고자 합니다.

  • 1. nova.conf 파일에서 scheduler.enable_isolated_aggregate_filtering 설정 옵션을 true로 세팅하고 nova-scheduler 서비스를 재시작하십시오.
  • 2. Placement 서비스에서 HOST1HOST2의 리소스 제공자에 CUSTOM_LICENSED_WINDOWS 특성을 추가합니다.
먼저 CUSTOM_LICENSED_WINDOWS 특성을 생성합니다:
Console
Copy
# openstack --os-placement-api-version 1.6 trait create CUSTOM_LICENSED_WINDOWS
<HOS1_UUID>HOST1의 UUID이며, 이는 리소스 제공자의 UUID와 동일합니다.
먼저 HOST1의 기존 특성을 수집하여 명령줄을 작성하십시오:
Console
Copy
traits=$(openstack --os-placement-api-version 1.6 resource provider trait list -f value <HOST1_UUID> | sed 's/^/--trait /')
HOST1의 특성을 교체하고 CUSTOM_LICENSED_WINDOWS를 추가하십시오:
Console
Copy
# openstack --os-placement-api-version 1.6 resource provider trait set $traits --trait CUSTOM_LICENSED_WINDOWS <HOST1_UUID>
위 단계를 HOST2에도 반복하십시오.
  • 3. 집합체 ABCtrait:CUSTOM_LICENSED_WINDOWS=required 메타데이터 속성을 추가하십시오:
Console
Copy
# 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 특성을 사용했지만, 유사한 방식으로 다른 커스텀 또는 표준 특성을 사용할 수 있습니다.

필터는 여러 집합체에 걸쳐 여러 특성의 사용을 지원합니다. 집합체에 설정된 모든 특성을 요구하는 플레이버와 이미지 메타데이터의 조합만 통과할 수 있습니다.

4 같이 보기[ | ]