第4章 Bare Metal Provisioning のトラブルシューティング

以下の項には、Bare Metal Provisioning の設定における問題を診断するのに役立つ可能性のある情報と手順を記載します。

Bare Metal Provisioning はイントロスペクションで openstack-ironic-apiopenstack-ironic-conductoropenstack-ironic-inspectoropenstack-ironic-inspector-dnsmasq の 4 つのサービスを使用します。大半の OpenStack コンポーネントのログは、/var/log ディレクトリーで確認することができます。

4.1. PXE ブートのエラー

Permission Denied エラー

Bare Metal Provisioning ノードのコンソールで「Permission Denied」エラーが表示された場合には、以下に示したように、適切な SELinux の内容を /httpboot/tftpboot のディレクトリーに必ず適用してください。

# semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?"
# semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?"

/pxelinux.cfg/XX-XX-XX-XX-XX-XX でのブートプロセスのフリーズ

以下の図に示したように、ノードのコンソールで、IP アドレスは取得されているように表示されており、プロセスが停止している場合:

PXE Process Freezes During Boot

これは、ironic.conf ファイルで誤った PXE ブートテンプレートを使用している可能性があることを示しています。

# grep ^pxe_config_template ironic.conf
pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template

デフォルトのテンプレートは pxe_config.template なので、これを ipxe_config.template に変更するための i を忘れがちです。

4.2. ベアメタルノードの起動後のログインエラーのトラブルシュート

設定ステップで設定した root パスワードを使用して、ノードのコンソールのログインプロンプトでログインを試みてもログインできない場合には、デプロイしたイメージでブートしていないことを意味します。deploy-kernel/deploy-ramdisk イメージにスタックしてしまって、システムが正しいイメージを取得していない可能性があります。

この問題を修正するには、Compute または Bare Metal Provisioning ノードの /httpboot/pxelinux.cfg/MAC_ADDRESS にある PXE ブートの設定ファイルをチェックして、このファイルにリストされている全 IP アドレスがベアメタルプロビジョニングネットワークの IP アドレスに対応していることを確認してください。

注記

Bare Metal Provisinoning ノードが認識している唯一のネットワークはベアメタルプロビジョニングネットワークです。エンドポイントの 1 つがこのネットワーク上にない場合には、そのエンドポイントはブートプロセスの一環として Bare Metal Provisioning ノードに到達することはできません。

たとえば、ファイルのカーネルの行は以下のようになります。

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_ssh boot_mode=bios initrd=deploy_ramdisk coreos.configdrive=0 || goto deploy
上記の例の kernel 行の値対応する情報

http://192.168.200.2:8088

/etc/ironic/ironic.conf ファイルのパラメーター http_url。この IP アドレスはベアメタルプロビジョニングネットワーク上にある必要があります。

5a6cdbe3-2c90-4a90-b3c6-85b449b30512

ironic node-list 内のベアメタルノードの UUID

deploy_kernel

これは、/httpboot/<NODE_UUID>/deploy_kernel としてコピーされた Image サービス内の deply kernel イメージです。

http://192.168.200.2:6385

/etc/ironic/ironic.conf ファイル内のパラメーター api_url。この IP アドレスはベアメタルプロビジョニングネットワーク上にある必要があります。

pxe_ssh

このノードの Bare Metal Provisioning サービスが使用している IPMI ドライバー

deploy_ramdisk

これは、/httpboot/<NODE_UUID>/deploy_ramdisk としてコピーされた Image サービス内の deploy ramdisk イメージです。

これらの値のいずれかが /httpboot/pxelinux.cfg/MAC_ADDRESSironic.conf ファイル間で一致していない場合には、ironic.conf ファイルを更新して Bare Metal Provisioning サービスを再起動してから Bare Metal Provisioning ノードを再デプロイする必要があります。

4.3. Bare Metal Provisioning サービスが正しいホスト名を取得しない場合のトラブルシューティング

Bare Metal Provisioning システムが正しいホスト名を取得しない場合は、cloud-init でエラーが発生していることを意味します。この問題を修正するには、Bare Metal Provisioning のサブネットを OpenStack Networking サービス内のルーターに接続します。meta-data エージェントへの要求はこれで正しくルーティングされるようになるはずです。

4.4. Bare Metal Provisioning コマンドの実行時に OpenStack Identity サービスの認証情報が無効な場合のトラブルシューティング

Identity サービスへの認証で問題がある場合には、ironic.conf ファイルの identity_uri パラメーターをチェックして、 keystone AdminURL から /v2.0 が削除されていることを確認してください。たとえば、identity_urihttp://IP:PORT に設定する必要があります。

4.5. ハードウェア登録のトラブルシューティング

ハードウェア登録での問題は、ノードの登録情報が誤っていることが原因となっている場合があります。プロパティー名と値が正しく入力されていることを確認してください。プロパティー名が誤っていたり、タイプエラーがある場合でも、ノードの情報には正常に追加されますが、無視されます。

ノードの情報を更新します。以下の例では、登録するノードのメモリー使用量を 2 GB に更新します。

# ironic node-update NODE_UUID replace properties/memory_mb=2048

4.6. No Valid Host エラーのトラブルシューティング

Compute のスケジューラーがインスタンスを起動するのに適切な Bare Metal Provisioning ノードを見つけられない場合には、NoValidHost エラーが /var/log/nova/nova-conductor.log に表示されるか、起動に失敗した直後に Dashboard に表示されます。これは、通常 Compute が想定するリソースと、Bare Metal Provisioning ノードが提供するリソースが一致しないことが原因です。

  1. 利用可能なハイパーバイザーのリソースを確認します。

    # nova hypervisor-stats

    このコマンドで返されるリソースは、Bare Metal Provisioning が提供するリソースと一致する必要があります。

  2. Compute がBare Metal Provisioning ノードをハイパーバイザーとして認識していることを確認します。

    # nova hypervisor-list

    ノードは UUID で識別され、一覧に表示されるはずです。

  3. Bare Metal Provisioning ノードの詳細を確認します。

    # ironic node-list
    # ironic node-show NODE_UUID

    ノードの詳細が、Compute によって返された情報と一致することを確認します。

  4. 選択したフレーバーが Bare Metal Provisioning ノードで利用可能なリソースを超えていないことを確認します。

    nova flavor-show FLAVOR_NAME
  5. ironic node-list の出力をチェックして、Bare Metal Provisioning ノードがメンテナンスモードに入っていないことを確認します。必要な場合はメンテナンスモードを解除します。

    # ironic node-set-maintenance NODE_UUID off
  6. ironic node-list の出力をチェックして、Bare Metal Provisioning ノードが available の状態であることを確認します。必要な場合には available に切り替えます。

    # ironic node-set-provision-state NODE_UUID provide

4.7. ハードウェアイントロスペクションのトラブルシューティング

ハードウェアイントロスペクションは、available のプロビジョニング状態の Bare Metal Provisioning ノードで失敗する場合があります。

  1. 全ノードのプロビジョニング状態を確認します。

    # ironic node-list
  2. イントロスペクションを開始する前に、ノードを available から manageable に切り替えます。

    # ironic node-set-provision-state NODE_UUID manage

このページには機械翻訳が使用されている場合があります (詳細はこちら)。