第4章 Bare Metal Provisioning のトラブルシューティング
以下の項には、Bare Metal Provisioning の設定における問題を診断するのに役立つ可能性のある情報と手順を記載します。
Bare Metal Provisioning は検査で openstack-ironic-api、openstack-ironic-conductor、openstack-ironic-inspector、openstack-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(/.*)?"
# 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 アドレスは取得されているように表示されており、プロセスが停止している場合:
これは、ironic.conf
ファイルで誤った PXE ブートテンプレートを使用している可能性があることを示しています。
grep ^pxe_config_template ironic.conf
# 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/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 |
|
5a6cdbe3-2c90-4a90-b3c6-85b449b30512 |
|
deploy_kernel |
これは、 |
http://192.168.200.2:6385 |
|
pxe_ssh |
このノードの Bare Metal Provisioning サービスが使用している IPMI ドライバー |
deploy_ramdisk |
これは、 |
これらの値のいずれかが /httpboot/pxelinux.cfg/MAC_ADDRESS
と ironic.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_uri
は http://IP:PORT
に設定する必要があります。
4.5. ハードウェア登録のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ハードウェア登録での問題は、ノードの登録情報が誤っていることが原因となっている場合があります。プロパティー名と値が正しく入力されていることを確認してください。プロパティー名が誤っていたり、タイプエラーがある場合でも、ノードの情報には正常に追加されますが、無視されます。
ノードの情報を更新します。以下の例では、登録するノードのメモリー使用量を 2 GB に更新します。
ironic node-update NODE_UUID replace properties/memory_mb=2048
# 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 ノードが提供するリソースが一致しないことが原因です。
利用可能なハイパーバイザーのリソースを確認します。
nova hypervisor-stats
# nova hypervisor-stats
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドで返されるリソースは、Bare Metal Provisioning が提供するリソースと一致する必要があります。
Compute がBare Metal Provisioning ノードをハイパーバイザーとして認識していることを確認します。
nova hypervisor-list
# nova hypervisor-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードは UUID で識別され、一覧に表示されるはずです。
Bare Metal Provisioning ノードの詳細を確認します。
ironic node-list ironic node-show NODE_UUID
# ironic node-list # ironic node-show NODE_UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの詳細が、Compute によって返された情報と一致することを確認します。
選択したフレーバーが Bare Metal Provisioning ノードで利用可能なリソースを超えていないことを確認します。
nova flavor-show FLAVOR_NAME
nova flavor-show FLAVOR_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ironic node-list の出力をチェックして、Bare Metal Provisioning ノードがメンテナンスモードに入っていないことを確認します。必要な場合はメンテナンスモードを解除します。
ironic node-set-maintenance NODE_UUID off
# ironic node-set-maintenance NODE_UUID off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ironic node-list の出力をチェックして、Bare Metal Provisioning ノードが
available
の状態であることを確認します。必要な場合にはavailable
に切り替えます。ironic node-set-provision-state NODE_UUID provide
# ironic node-set-provision-state NODE_UUID provide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. ハードウェア検査のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ハードウェア検査は、available
のプロビジョニング状態の Bare Metal Provisioning ノードで失敗する場合があります。
全ノードのプロビジョニング状態を確認します。
ironic node-list
# ironic node-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 検査を開始する前に、ノードを
available
からmanageable
に切り替えます。ironic node-set-provision-state NODE_UUID manage
# ironic node-set-provision-state NODE_UUID manage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow