22.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 に通知するリソースが、一致していないことを意味します。以下の手順で、その確認方法を説明します。
手順
stackrc
ファイルを取得します。$ source ~/stackrc
ノードのイントロスペクションが成功したことを確認します。イントロスペクションが失敗する場合には、各ノードに必要な ironic ノードの属性が含まれていることを確認してください。
(undercloud) $ openstack baremetal node show [NODE UUID]
properties
JSON フィールドのcpus
、cpu_arch
、memory_mb
、およびlocal_gb
キーに有効な値が指定されていることを確認してください。ノードにマッピングされた Compute フレーバーを確認します。
(undercloud) $ openstack flavor show [FLAVOR NAME]
必要なノード数のノードプロパティーを超えないようにしてください。
-
openstack baremetal node list
コマンドを実行して、available 状態のノードが十分にあることを確認します。ノードの状態がmanageable
の場合には、通常イントロスペクションに失敗します。 openstack baremetal node list
コマンドを実行し、ノードがメンテナンスモードに設定されていないことを確認します。ノードが自動的にメンテナンスモードに切り替わる場合には、電源管理の認証情報が間違っていることが一般的な原因として考えられます。電源管理の認証情報を確認し、メンテナンスモードを解除します。(undercloud) $ openstack baremetal node maintenance unset [NODE UUID]
-
プロファイルの自動タグ付けを使用している場合には、各フレーバー/プロファイルに対応するノードが十分に存在することを確認します。ノードで
openstack baremetal node show
コマンドを実行し、properties
フィールドのcapabilities
キーを確認します。たとえば、Compute ロールのタグを付けられたノードには、profile:compute
が含まれているはずです。 イントロスペクションの後に Bare Metal から Compute にノードの情報が反映されるには、若干時間がかかります。ただし、一部のステップを手動で実行した場合には、短時間ですが、Nova でノードが利用できなくなる場合があります。以下のコマンドを使用して、システム内の合計リソースをチェックします。
(undercloud) $ openstack hypervisor stats show