23.7. "No Valid Host Found" 오류 문제 해결

/var/log/nova/nova-conductor.log에 다음 오류가 포함되는 경우가 있습니다.

NoValidHost: No valid host was found. There are not enough hosts available.

이 오류는 Compute 스케줄러가 새 인스턴스 부팅에 적합한 베어 메탈 노드를 찾을 수 없는 경우에 발생합니다. 일반적으로 Compute 서비스가 찾아야 하는 리소스와 Bare Metal 서비스가 Compute에 알린 리소스가 일치하지 않음을 의미합니다. 다음 절차에서는 이를 확인하는 방법에 대해 설명합니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 노드에서 인트로스펙션이 성공했는지 확인합니다. 인트로스펙션이 실패한 경우 각 노드에 필수 ironic 노드 속성이 포함되어 있는지 확인합니다.

    (undercloud) $ openstack baremetal node show [NODE UUID]

    properties JSON 필드에 cpus, cpu_arch, memory_mblocal_gb 키에 대한 올바른 값이 있는지 확인합니다.

  3. 노드에 매핑된 Compute 플레이버를 확인합니다.

    (undercloud) $ openstack flavor show [FLAVOR NAME]

    필요한 노드 수에 대한 노드 속성을 초과하지 않아야 합니다.

  4. openstack baremetal node list 명령을 실행하여 사용 가능 상태의 노드가 충분한지 확인합니다. manageable 상태의 노드는 일반적으로 인트로스펙션 실패를 나타냅니다.
  5. openstack baremetal node list 명령을 실행하여 노드가 유지보수 모드에 있지 않은지 확인합니다. 노드가 유지보수 모드로 자동 변경되는 경우 잘못된 전원 관리 인증 정보 문제 때문일 가능성이 큽니다. 전원 관리 인증 정보를 확인하고 유지보수 모드를 삭제합니다.

    (undercloud) $ openstack baremetal node maintenance unset [NODE UUID]
  6. 자동 프로필 태깅을 사용하는 경우 각 플레이버 및 프로필에 해당하는 노드가 충분한지 확인합니다. 노드에서 openstack baremetal node show 명령을 실행하고 properties 필드의 capabilities 키를 확인합니다. 예를 들어 Compute 역할에 태그된 노드에는 profile:compute가 포함되어 있어야 합니다.
  7. 인트로스펙션 후 노드 정보가 Bare Metal에서 Compute로 반영되려면 시간이 걸립니다. 하지만 일부 단계를 수동으로 수행한 경우 nova에서 단시간 동안 노드를 사용하지 못할 수 있습니다. 다음 명령을 사용하여 시스템의 총 리소스를 확인합니다.

    (undercloud) $ openstack hypervisor stats show