第8章 Bare Metal サービスのトラブルシューティング
以下の項には、Bare Metal サービスを有効にした環境における問題を診断するのに役立つ可能性のある情報と手順を記載します。
8.1. PXE ブートエラー
Permission Denied エラー
Bare Metal サービスノードのコンソールで「Permission Denied」エラーが表示された場合には、以下に示したように、適切な SELinux コンテキストを /httpboot
と /tftpboot
のディレクトリーに必ず適用してください。
# semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?" # restorecon -r -v /httpboot # semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?" # restorecon -r -v /tftpboot
/pxelinux.cfg/XX-XX-XX-XX-XX-XX
でのブートプロセスのフリーズ
以下の図に示したように、ノードのコンソールで、IP アドレスは取得されているがプロセスが停止しているように表示されている場合:
これは、ironic.conf
ファイルで誤った PXE ブートテンプレートを使用している可能性があることを示しています。
$ grep ^pxe_config_template ironic.conf pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template
デフォルトのテンプレートは ipxe_config.template
です。
8.2. ベアメタルノードの起動後のログインエラー
ノードのコンソールのログインプロンプトで、設定手順中に設定した root
パスワードを使用してログインを試みてもログインできない場合には、デプロイしたイメージでブートしていないことを意味します。deploy-kernel/deploy-ramdisk
イメージにスタックしてしまって、システムが正しいイメージをまだ取得していない可能性があります。
この問題を修正するには、Compute または Bare Metal サービスノードの /httpboot/pxelinux.cfg/MAC_ADDRESS
にある PXE ブートの設定ファイルをチェックして、このファイルにリストされている全 IP アドレスがベアメタルネットワークの IP アドレスに対応していることを確認してください。
Bare Metal サービスノードが認識している唯一のネットワークはベアメタルネットワークです。エンドポイントの 1 つがこのネットワーク上にない場合には、そのエンドポイントはブートプロセスの一環として Bare Metal サービスノードに到達することはできません。
たとえば、ファイルの kernel の行は以下のようになります。
kernel http://192.168.200.2:8088/5a6cdbe3-2c90-4a90-b3c6-85b449b30512/deploy_kernel selinux=0 disk=cciss/c0d0,sda,hda,vda iscsi_target_iqn=iqn.2008-10.org.openstack:5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_id=5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_key=VWDYDVVEFCQJNOSTO9R67HKUXUGP77CK ironic_api_url=http://192.168.200.2:6385 troubleshoot=0 text nofb nomodeset vga=normal boot_option=netboot ip=${ip}:${next-server}:${gateway}:${netmask} BOOTIF=${mac} ipa-api-url=http://192.168.200.2:6385 ipa-driver-name=pxe_ipmitool boot_mode=bios initrd=deploy_ramdisk coreos.configdrive=0 || goto deploy
上記の例の kernel 行の値 | 対応する情報 |
---|---|
http://192.168.200.2:8088 |
|
5a6cdbe3-2c90-4a90-b3c6-85b449b30512 |
|
deploy_kernel |
これは、 |
http://192.168.200.2:6385 |
|
pxe_impitool | このノードの Bare Metal サービスが使用している IPMI ドライバー |
deploy_ramdisk |
これは、 |
/httpboot/pxelinux.cfg/MAC_ADDRESS
と ironic.conf
ファイルの間で値が一致していない場合:
-
ironic.conf
ファイル内の値を更新します。 - Bare Metal サービスを再起動します。
- ベアメタルインスタンスを再デプロイします。
8.3. デプロイされたノードでの Boot-to-disk エラー
特定のハードウェアでは、デプロイされたノードで問題が発生し、デプロイメントの一環としての以降のブート操作中にノードがディスクからブートできない可能性があります。これは通常、director がノードで要求する永続的なブート設定を BMC が反映しないために発生します。代わりに、ノードは PXE ターゲットからブートします。
この場合、ノードの BIOS でブート順序を更新する必要があります。HDD を最初のブートデバイスに設定し、次に PXE を非デフォルトのオプションに設定します。これにより、デフォルトではノードはディスクからブートし、必要に応じてイントロスペクションまたはデプロイメント時にネットワークからブートすることができます。
このエラーは、LegacyBIOS ファームウェアを使用するほとんどのノードに該当します。
8.4. Bare Metal サービスが正しいホスト名を取得しない
Bare Metal サービスが正しいホスト名を取得しない場合は、cloud-init
でエラーが発生していることを意味します。この問題を修正するには、ベアメタルのサブネットを OpenStack Networking サービス内のルーターに接続します。meta-data エージェントへの要求はこれで正しくルーティングされるようになるはずです。
8.5. Bare Metal サービスのコマンド実行時に OpenStack Identity サービスの認証情報が無効
Identity サービスへの認証で問題がある場合には、ironic.conf
ファイルの identity_uri
パラメーターをチェックして、keystone
AdminURL から /v2.0
が削除されていることを確認してください。たとえば、identity_uri
は http://IP:PORT
に設定する必要があります。
8.6. ハードウェアの登録
ハードウェア登録での問題は、ノードの登録情報が誤っていることが原因となっている可能性があります。プロパティー名と値が正しく入力されていることを確認してください。プロパティー名に誤りやタイプミスがあってもノードの情報には正常に追加されますが、そのプロパティー名は無視されます。
ノードの情報を更新します。以下の例では、登録するノードのメモリー使用量を 2 GB に更新します。
$ openstack baremetal node set --property memory_mb=2048 NODE_UUID
8.7. No Valid Host エラー
Compute スケジューラーがインスタンスを起動するのに適切なベアメタルノードを見つけられない場合、NoValidHost
エラーが /var/log/nova/nova-conductor.log に表示されるか、起動に失敗した直後に Dashboard に表示されます。通常これは、Compute が想定するリソースとベアメタルノードが提供するリソースが一致しないことが原因です。
利用可能なハイパーバイザーのリソースを確認します。
$ openstack hypervisor stats show
このコマンドで返されるリソースは、Bare Metal が提供するリソースと一致する必要があります。
Compute がベアメタルノードをハイパーバイザーとして認識していることを確認します。
$ openstack hypervisor list
ノードは UUID で識別され、一覧に表示されるはずです。
ベアメタルノードの詳細を確認します。
$ openstack baremetal node list $ openstack baremetal node show NODE_UUID
ノードの詳細が、Compute によって返された情報と一致することを確認します。
選択したフレーバーがベアメタルノードで利用可能なリソースを超えていないことを確認します。
$ openstack flavor show FLAVOR_NAME
openstack baremetal node list の出力をチェックして、ベアメタルノードがメンテナンスモードに入っていないことを確認します。必要な場合には、メンテナンスモードを解除してください。
$ openstack baremetal node maintenance unset NODE_UUID
openstack baremetal node list の出力をチェックして、ベアメタルノードが
available
の状態であることを確認します。必要な場合には、ノードをavailable
に切り替えます。$ openstack baremetal node provide NODE_UUID