11.3. オーバークラウドの作成のトラブルシューティング

デプロイメントが失敗する可能性のあるレイヤーは 3 つあります。
  • Orchestration (Heat および Nova サービス)
  • Bare Metal Provisioning (Ironic サービス)
  • デプロイメント後の設定 (Puppet)
オーバークラウドのデプロイメントがこれらのレベルで失敗した場合には、OpenStack クライアントおよびサービスログファイルを使用して、失敗したデプロイメントの診断を行います。

11.3.1. オーケストレーション

多くの場合は、オーバークラウドの作成に失敗した後に、Heat により失敗したオーバークラウドスタックが表示されます。
$ heat stack-list

+-----------------------+------------+--------------------+----------------------+
| id                    | stack_name | stack_status       | creation_time        |
+-----------------------+------------+--------------------+----------------------+
| 7e88af95-535c-4a55... | overcloud  | CREATE_FAILED      | 2015-04-06T17:57:16Z |
+-----------------------+------------+--------------------+----------------------+
スタック一覧が空の場合には、初期の Heat 設定に問題があることが分かります。Heat テンプレートと設定オプションをチェックし、さらに openstack overcloud deploy を実行後のエラーメッセージを確認してください。

11.3.2. Bare Metal Provisioning

ironic をチェックして、全登録ノードと現在の状態を表示します。
$ ironic node-list

+----------+------+---------------+-------------+-----------------+-------------+
| UUID     | Name | Instance UUID | Power State | Provision State | Maintenance |
+----------+------+---------------+-------------+-----------------+-------------+
| f1e261...| None | None          | power off   | available       | False       |
| f0b8c1...| None | None          | power off   | available       | False       |
+----------+------+---------------+-------------+-----------------+-------------+
プロビジョニングプロセスでよく発生する問題を以下に示します。
  • 結果の表の Provision State および Maintenance の列を確認します。以下をチェックしてください。
    • 空の表または、必要なノード数よりも少ない
    • Maintenance が True に設定されている
    • Provision Statemanageable に設定されている
    これにより、登録または検出プロセスに問題があることが分かります。たとえば、Maintenance が True に自動的に設定された場合は通常、ノードの電源管理の認証情報が間違っています。
  • Provision Stateavailable の場合には、ベアメタルのデプロイメントが開始される前に問題が発生します。
  • Provision Stateactive で、Power Statepower on の場合には、ベアメタルのデプロイメントは正常に完了しますが、問題は、デプロイメント後の設定ステップで発生することになります。
  • ノードの Provision Statewait call-back の場合には、このノードではまだ Bare Metal Provisioning プロセスが完了していません。このステータスが変更されるまで待機してください。または、問題のあるノードの仮想コンソールに接続して、出力を確認します。
  • Provision Stateerror または deploy failed の場合には、このノードの Bare Metal Provisioning は失敗しています。ベアメタルノードの詳細を確認してください。
    $ ironic node-show [NODE UUID]
    
    エラーの説明が含まれる last_error フィールドがないか確認します。エラーメッセージは曖昧なため、ログを使用して解明します。
    $ sudo journalctl -u openstack-ironic-conductor -u openstack-ironic-api
    
  • wait timeout error が表示されており、Power Statepower on の場合には、問題のあるノードの仮想コンソールに接続して、出力を確認します。

11.3.3. デプロイメント後の設定

設定ステージでは多くのことが発生する可能性があります。たとえば、設定に問題があるために、特定の Puppet モジュールの完了に失敗する可能性があります。本項では、これらの問題を診断するプロセスを説明します。

手順11.4 デプロイメント後の設定の問題の診断

  1. オーバークラウドスタックからのリソースをすべて表示して、どのスタックに問題があるのかを確認します。
    $ heat resource-list overcloud
    
    このコマンドでは、全リソースとその状態の表が表示されるため、CREATE_FAILED の状態のリソースを探します。
  2. 問題のあるリソースを表示します。
    $ heat resource-show overcloud [FAILED RESOURCE]
    
    resource_status_reason のフィールドの情報で診断に役立つ可能性のあるものを確認します。
  3. nova コマンドを使用して、オーバークラウドノードの IP アドレスを表示します。
    $ nova list
    
    デプロイされたノードの 1 つに heat-admin ユーザーとしてログインします。たとえば、スタックのリソース一覧から、コントローラーノード上にエラーが発生していることが判明した場合には、コントローラーノードにログインします。heat-admin ユーザーには、sudo アクセスが設定されています。
    $ ssh heat-admin@192.0.2.14
    
  4. os-collect-config ログを確認して、考えられる失敗の原因をチェックします。
    $ sudo journalctl -u os-collect-config
    
  5. 場合によっては、Nova によるノードへのデプロイメントが完全に失敗する可能性があります。このような場合にはオーバークラウドのロール種別の 1 つの OS::Heat::ResourceGroup が失敗していることが示されるため、nova を使用して問題を確認します。
    $ nova list
    $ nova show [SERVER ID]
    
    最もよく表示されるエラーは、No valid host was found のエラーメッセージです。このエラーのトラブルシューティングについては、「"No Valid Host Found" エラーのトラブルシューティング」を参照してください。その他の場合は、以下のログファイルを参照してトラブルシューティングを実施してください。
    • /var/log/nova/*
    • /var/log/heat/*
    • /var/log/ironic/*
  6. システムのハードウェアおよび設定に関する情報を収集する SOS ツールセットを使用します。この情報は、診断目的とデバッグに使用します。SOS は通常、技術者や開発者のサポートに使用され、アンダークラウドでもオーバークラウドでも便利です。以下のコマンドで sos パッケージをインストールします。
    $ sudo yum install sos
    
    レポートを生成します。
    $ sudo sosreport --all-logs