25.7. 「No Valid Host Found」エラーに関するトラブルシューティング

/var/log/nova/nova-conductor.log に、以下のエラーが含まれる場合があります。

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

このエラーは、Compute Scheduler が新規インスタンスをブートするのに適したベアメタルノードを検出できない場合に発生します。通常これは、Compute サービスが検出を想定しているリソースと、Bare Metal サービスが Compute に通知するリソースが、一致していないことを意味します。不一致によるエラーがあることを確認するには、以下の手順を実施します。

手順

  1. stackrc ファイルを取得します。

    $ source ~/stackrc
  2. ノードのイントロスペクションが成功したことを確認します。イントロスペクションが失敗する場合には、各ノードに必要な ironic ノードの属性が含まれていることを確認してください。

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

    properties JSON フィールドの cpuscpu_archmemory_mb、および local_gb キーに有効な値が指定されていることを確認してください。

  3. ノードにマッピングされた Compute フレーバーが、必要なノード数のノード属性を超えないようにしてください。

    (undercloud) $ openstack flavor show [FLAVOR NAME]
  4. openstack baremetal node list コマンドを実行して、available の状態にあるノードが十分にあることを確認します。ノードの状態が 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 に反映されるのを待つ必要があります。ただし、一部のステップを手動で実行した場合、短時間 Compute サービス (nova) がノードを利用できない状態になる可能性があります。以下のコマンドを使用して、システム内の合計リソースをチェックします。

    (undercloud) $ openstack hypervisor stats show