第4章 トラブルシューティング
本章では、Red Hat OpenStack Platform のトラブルシューティングに役立つログ記録およびサポート情報について記載します。
4.1. サポート リンクのコピーリンクがクリップボードにコピーされました!
クライアントコマンドが失敗した場合には、Red Hat テクニカルサポートまでご連絡ください。その際には、発生した問題についての状況説明、コンソールの全出力、およびコンソールの出力で参照されているすべてのログファイル、問題のある (可能性のある) ノードからの sosreport を提供してください。たとえば、コンピュートレベルで問題が発生した場合には Nova ノードで sosreport を実行します。ネットワークの問題の場合は、Neutron ノードでユーティリティーを実行します。一般的なデプロイメントの問題の場合は、クラウドコントローラー上で sosreport を実行するのがベストです。
sosreport コマンド (sos パッケージ) についての情報は、「What is a sosreport and how to create one in Red Hat Enterprise Linux 4.6 and later」の記事を参照してください。
ヒントについては /var/log/messages ファイルも確認します。
4.2. Identity クライアント (keystone) の接続性における問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Identity クライアント (keystone) が Identity サービスにコンタクトできない場合には、次のようなエラーが返されます。
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
この問題をデバッグするには、以下にあげる一般的な原因を確認してください。
- Identity サービスが稼働していない場合
Identity サービスをホストするシステムで、サービスのステータスを確認します。
openstack-status | grep keystone
# openstack-status | grep keystone openstack-keystone: activeCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスが実行されていない場合には、root ユーザーとしてログインして起動します。
service openstack-keystone start
# service openstack-keystone startCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイアウォールが適切に設定されていない場合
-
ファイアウォールがポート
5000と35357で TCP トラフィックを許可するように設定されていない可能性があります。そのような場合の修正方法については『インストールリファレンス』の「Identity サービスのトラフィックを許可するためのファイアウォール設定」を参照してください。 - サービスエンドポイントが正しく定義されていない場合
Identity サービスをホストするシステムで、エンドポイントが正しく定義されているかどうかを確認します。
管理トークンを取得します。
grep admin_token /etc/keystone/keystone.conf
# grep admin_token /etc/keystone/keystone.conf admin_token = 0292d404a88c4f269383ff28a3839ab4Copy to Clipboard Copied! Toggle word wrap Toggle overflow Identity サービスの正しい管理エンドポイントを決定します。
http://IP:35357/VERSION
http://IP:35357/VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow IP は Identity サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。VERSION は、使用中の API バージョンに置き換えます (
v2.0またはv3)。事前に定義されている Identity サービス関連の環境変数の設定を解除します。
unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL
# unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 管理トークンとエンドポイントを使用して、Identity サービスとの認証を行います。Identity サービスのエンドポイントが正しいことを確認してください。
keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-list# keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 一覧表示された Identity サービスの
publicurl、internalurl、およびadminurlが正しいことを確認してください。特に、各エンドポイント内にリストされている IP アドレスとポート番号が正しく、ネットワーク上で到達可能であるようにしてください。これらの値が正しくない場合には、正しいエンドポイントの追加方法について記載した『インストールリファレンス』のIdentity サービスのエンドポイントの作成の説明を参照してください。正しいエンドポイントが追加されたら、誤ったエンドポイントは
keystoneコマンドのendpoint-deleteアクションを使用して削除します。keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-delete ID# keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-delete IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow TOKEN および ENDPOINT は、上記のステップで特定した値に置き換えます。ID は
endpoint-listアクションにより一覧表示される、削除対象のエンドポイントに置き換えます。
4.3. OpenStack Networking に関する問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
本項では、OpenStack Networking サービスに関する問題のトラブルシューティングに使用することができるさまざまなコマンドと手順について説明します。
- ネットワークデバイスのデバッグ
-
ip aコマンドで、全物理/仮想デバイスを表示します。 -
ovs-vsctl showコマンドで、仮想スイッチ内のインターフェースとブリッジを表示します。 -
ovs-dpctl showコマンドで、スイッチ上のデータパスを表示します。
-
- ネットワークパケットの追跡
tcpdumpコマンドで、パケットが通過しない場所を確認します。tcpdump -n -i INTERFACE -e -w FILENAME
# tcpdump -n -i INTERFACE -e -w FILENAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow INTERFACE は、パケットが通過できない箇所を確認するためのネットワークインターフェース名に置き換えます。このインターフェース名には、ブリッジまたはイーサネットデバイスの名前を使用することができます。
-eフラグで、リンクレベルヘッダーがダンプされるようにします (その場合には、vlanタグが表示されます)。-wフラグはオプションです。出力をファイルに書き込む場合にのみ使用することができます。使用しない場合には、その出力は標準出力 (stdout) に書き込まれます。tcpdumpについての詳細は、man tcpdumpのコマンドで man ページを開いて参照してください。
- ネットワーク名前空間のデバッグ
-
ip netns listコマンドで、既知のネットワーク名前空間をすべて一覧表示します。 ip netns execコマンドで、特定の名前空間内のルーティングテーブルを表示します。ip netns exec NAMESPACE_ID bash route -n
# ip netns exec NAMESPACE_ID bash # route -nCopy to Clipboard Copied! Toggle word wrap Toggle overflow bash シェルで
ip netns execコマンドを起動し、それ以降に実行するコマンドがip netns execコマンドを実行しなくても呼び出されるようにします。
-
4.4. ダッシュボードでのネットワークまたはルータータブの表示に関するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Networks および Routers のタブは、OpenStack Networking を使用するように環境が設定されている場合にのみ表示されます。現在、デフォルトでは、Packstack ユーティリティーによって Nova ネットワークがデプロイされるため、この方法でデプロイされた環境には、これらのタブは表示されない点に特に注意してください。
OpenStack Networking が環境にデプロイされているにもかかわらずタブが表示されない場合には、Identity サービスでサービスエンドポイントが正しく定義されて、ファイアウォールがそのエンドポイントへのアクセスを許可し、サービスが稼働していることを確認してください。
4.5. Dashboard でのインスタンス起動エラーに関するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ダッシュボードを使用したインスタンス起動時に操作が失敗した場合には、汎用の ERROR メッセージが表示されます。実際の原因を究明するには、コマンドラインツールを使用する必要があります。
nova list でインスタンスの一意識別子を確認します。次にその識別子を nova show コマンドの引数として使用します。返される項目の 1 つがエラー条件となります。最も一般的な値は NoValidHost です。
このエラーは、インスタンスをホストするのに十分なリソースが利用できる有効なホストがないことを示しています。この問題を回避するには、より小さなインスタンスサイズを選択するか、その環境のオーバーコミットの上限を高くする方法を検討してください。
インスタンスをホストするには、コンピュートノードで CPU および RAM リソースが使用可能なだけでなく、インスタンスに関連付けられる一時ストレージ用に十分なディスク領域がある必要もあります。
4.6. Dashboard の Keystone v3 認証のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
django_openstack_auth は、Django の contrib.auth フレームワークと連携する、プラグ可能な Django 認証バックエンドで、OpenStack Identity サービス API に対してユーザー認証を行います。Django_openstack_auth は、トークンオブジェクトを使用して、ユーザーおよび Keystone 関連の情報をカプセル化し、Dashboard は、トークンオブジェクトを使用して Django ユーザーオブジェクトを再構築します。
現在、トークンオブジェクトは以下を格納します。
- keystone トークン
- ユーザー情報
- 範囲
- ロール
- サービスカタログ
Dashboard は、ユーザーセッションデータの処理に Django のセッションフレームワークを使用します。以下は、利用可能な各種セッションバックエンド一覧です。これらは、local_settings.py ファイルの SESSION_ENGINE 設定で制御されます。
- ローカルメモリーキャッシュ
- Memcached
- データベース
- キャッシュされたデータベース
- クッキー
特に署名付きクッキーのセッションバックエンドが使用されている場合、多数またはすべてのサービスが一度に有効化された場合など、クッキーのサイズが制限に到達して、Dashboard へのログインに失敗する可能性があります。クッキーサイズが増加する理由の 1 つとして、サービスカタログが挙げられます。多くのサービスが登録されるにつれ、サービスカタログのサイズも増加します。
このようなシナリオでは (特に keystone v3 認証を使用している場合)、セッショントークン管理を向上するため、Dashboard へログインするための以下の設定を含めてください。
/usr/share/openstack-dashboard/openstack_dashboard/settings.py では、以下の設定を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同じファイルで、SESSION_ENGINE を以下に変更します。
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql コマンドを使用してデータベースサービスに接続します。USER は、接続に使用するユーザー名に置き換えます。また、USER は root ユーザー (または正しいパーミッション「create db」を持つユーザー) でなければなりません。
mysql -u USER -p
# mysql -u USER -pCopy to Clipboard Copied! Toggle word wrap Toggle overflow Horizon データベースを作成します。
mysql > create database horizondb;
mysql > create database horizondb;Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql クライアントを終了します。
mysql > exit
mysql > exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドで、openstack_dashboard ディレクトリーに移動して、データベースを同期します。
cd /usr/share/openstack-dashboard/openstack_dashboard ./manage.py syncdb
# cd /usr/share/openstack-dashboard/openstack_dashboard $ ./manage.py syncdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow スーパーユーザーを作成する必要はないため、質問には「n」と回答します。
Apache http サーバーを再起動します。Red Hat Enterprise Linux の場合は以下を実行します。
#service httpd restart
#service httpd restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. OpenStack Dashboard: Red Hat Access タブ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Access タブ (OpenStack Dashboard の一部) では、Red Hat カスタマーポータルから記事やソリューションの検索、確認、インスタンスからのログ表示や診断、カスタマーサポートケースの対応ができます。
図4.1 Red Hat Access タブ
Red Hat Acesss タブの機能を使用するには、ブラウザーで Red Hat カスタマーポータルにログインする必要があります。
ログインされていない場合には、以下の手順でログインしてください。
- ログイン をクリックします。
- Red Hat のログイン情報を入力します。
- Red Hat パスワードを入力します。
- サインイン をクリックします。
フォームは以下のとおりです。
図4.2 Red Hat カスタマーポータルへのログイン
この時点でログインしないと、認証が必要な機能の 1 つを使用する際に Red Hat ログインとパスワードが要求されます。
4.7.1. 検索 リンクのコピーリンクがクリップボードにコピーされました!
1 つまたは複数の検索キーワードを入力して、Red Hat カスタマーポータルからの記事やソリューションを検索できます。関連の記事やソリューションのタイトルが表示されます。タイトルをクリックして、指定の記事またはソリューションを表示します。
図4.3 Red Hat Access タブの検索結果の例
4.7.2. ログ リンクのコピーリンクがクリップボードにコピーされました!
ここから、OpenStack インスタンスからのログを確認することができます。
図4.4 Red Hat Access タブでのインスタンスのログ
表から希望のインスタンスを検索します。多数のインスタンスがある場合には、名前、状態、イメージ ID、フレーバー ID 別にフィルタリングすることができます。チェックするインスタンスの アクション の欄で ログの表示 をクリックします。
インスタンスのログが表示されたら、Red Hat 診断 をクリックして、コンテンツに関連した提案ソリューションを取得することができます。
図4.5 Red Hat Access タブでのインスタンスのログ
提案されたソリューションで役に立つものがない場合や、問題が正しくロギングされていない場合には、サポートケースを新規作成 をクリックして、問題を Red Hat サポートに報告してください。
4.7.3. サポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Access タブの最後のオプションでは、Red Hat カスタマーポータルのサポートケースを検索することができます。
図4.6 サポートケースの検索
また、適切なボタンをクリックして、以下のページでフォームに入力して新規サポートケースを開くことも可能です。
図4.7 サポートケースの新規作成