開始しない Azure Cloud Services (延長サポート) ロール インスタンスのトラブルシューティング
この記事では、Azure Cloud Services (拡張サポート) ロール インスタンスのスタートアップ エラーのトラブルシューティング方法について説明します。
トラブルシューティング チェックリスト
ロール インスタンスで発生する問題を診断するには、次のオプションから選択します。
オプション 1: カスタム エラーをオフにする
完全なエラー情報を表示するには、Web ロールの Web.config ファイルを開き、カスタム エラー モードを に Off
設定してから、サービスを再デプロイします。
Visual Studio で、ソリューションを開きます。
ソリューション エクスプローラーで、Web.config ファイルを開きます。
セクションで
system.web
、次の XML コードを追加します。<customErrors mode="Off" />
ファイルを保存します。
サービスを再パッケージ化して再デプロイします。
サービスが再デプロイされると、サービスに関して表示される可能性があるエラー メッセージには、欠落しているアセンブリまたは DLL の名前が含まれます。
オプション 2: PowerShell を使用してロール インスタンスの状態を表示する
ロール インスタンスのランタイム状態に関する情報を取得するには、 Get-AzCloudServiceRoleInstanceView コマンドレットを実行します。
$roleInstanceView = @{
CloudServiceName = "<cloud-service-name>"
ResourceGroupName = "<resource-group-name>"
RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView
次の出力例に示すように、ロール インスタンスの状態が最初の列に一覧表示されます。
Statuses PlatformFaultDomain PlatformUpdateDomain
-------- ------------------- --------------------
{RoleStateStarting} 0 0
オプション 3: Azure portalを使用してロール インスタンスの状態を表示する
Azure portalのロール インスタンスに関する状態情報を表示するには、次の手順に従います。
Azure portalで、クラウド サービス (延長サポート) を検索して選択します。
クラウド サービスの一覧で、クラウド サービスの名前を選択します。
メニュー ウィンドウで、[ 設定] を見て、[ ロールとインスタンス] を選択します。
ロール インスタンスの名前を選択します。
[ロール インスタンス] ウィンドウで、[ 状態] フィールドにロール インスタンスの状態を書き留めます。
オプション 4: リモート デスクトップを使用してエラー情報を表示する
ロールにアクセスし、完全なエラー情報を表示するには、次の手順に従ってリモート デスクトップ プロトコル (RDP) を使用します。
Azure portalで、クラウド サービス インスタンスに [準備完了] 状態が表示されたら、リモート デスクトップを使用してクラウド サービスにサインインします。 詳細については、「 リモート デスクトップを使用してロール インスタンスに接続する」を参照してください。
リモート デスクトップのセットアップに使用した資格情報を使用して、仮想マシン (VM) にサインインします。
コマンド プロンプト ウィンドウを開きます。
ipconfig コマンドを実行します。 IPv4 アドレスの戻り値をコピーします。
Web ブラウザーを開きます。
アドレス バーに IPv4 アドレスを貼り付け、スラッシュと Web アプリケーションの既定のファイルの名前を追加します。 たとえば、「
http://<ipv4-address>/default.aspx
」のように入力します。
今すぐ Web サイトに移動すると、詳細情報を含むエラー メッセージが表示されます。 次に例を示します:
'/' アプリケーションのサーバー エラー。
ファイルまたはアセンブリ 'Microsoft.WindowsAzure.StorageClient、Version=1.1.0.0、Culture=neutral、PublicKeyToken=<16 桁の 16 進文字列>' またはその依存関係のいずれかを読み込めませんでした。 指定されたファイルが見つかりません。
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。 エラーとコード内の発生場所の詳細については、スタック トレースを確認してください。
例外の詳細: System.IO.FileNotFoundException
オプション 5: コンピューティング エミュレーターを使用する
Azure Compute Emulator を使用して、不足している依存関係と Web.config エラーの問題を診断してトラブルシューティングできます。 この方法を使用して問題を診断するときに最適な結果を得るには、Windows のインストールがクリーンされているコンピューターまたは VM を使用します。
Azure Compute Emulator を使用して問題を診断するには:
Azure SDK をインストールします。
開発用コンピューターで、クラウド サービス プロジェクトをビルドします。
エクスプローラー、クラウド サービス プロジェクトで bin\debug フォルダーに移動します。
.csx フォルダーと .cscfg ファイルを、問題のデバッグに使用しているコンピューターにコピーします。
クリーン コンピューターで、Azure SDK コマンド プロンプト ウィンドウを開きます。
コマンド プロンプトで、次
csrun
のコマンドを実行します。csrun.exe /devstore:start
次のコマンドを実行します。
run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
ロールが開始されると、Web ブラウザーに詳細なエラー情報が表示されます。
さらに診断が必要な場合は、標準の Windows トラブルシューティング ツールを使用できます。
オプション 6: IntelliTrace を使用する
注:
Visual Studio 2022 では IntelliTrace を使用できません。 Visual Studio 2019、2017、または 2015 を使用している場合、IntelliTrace は引き続き使用できます。
.NET Framework 4 を使用する worker ロールと Web ロールの場合は、IntelliTrace を使用できます。 IntelliTrace は、Visual Studio Enterpriseで使用できます。
IntelliTrace がオンになっている間にクラウド サービスをデプロイするには:
Azure SDK 1.3 以降のバージョンがインストールされていることを確認します。
Visual Studio で、ソリューションをデプロイします。 デプロイを設定するときに、[ .NET 4 ロールの IntelliTrace を有効にする ] チェック ボックスをオンにします。
ロール インスタンスが起動したら、[サーバー エクスプローラー] を開きます。
[Azure\Cloud Services] ノードを展開します。
ロール インスタンスを一覧表示するには、デプロイを展開します。 次に、ロール インスタンスを右クリックします。
[ IntelliTrace ログの表示] を選択します。
IntelliTrace の概要で、[例外データ] に移動し、そのノードを展開します。
例外の一覧で、System.IO.FileNotFoundException の Type 列値を含む行を探します。 対応する Message 列の値は、次のテキストのようになります。
ファイルまたはアセンブリ 'Microsoft.WindowsAzure.StorageClient、Version=1.1.0.0、Culture=neutral、PublicKeyToken=<16 桁の 16 進文字列>' またはその依存関係のいずれかを読み込めませんでした。 指定されたファイルが見つかりません。
原因 1: RoleInstanceStartupTimeoutError が原因でクラウド サービス操作が失敗する
Azure Cloud Services (延長サポート) 内の 1 つ以上のロール インスタンスの起動に時間がかかる場合があります。 または、ロール インスタンスがリサイクルされているか、ビジー状態でスタックしていて、想定どおりに開始されていない可能性があります。 この状況では、ロール アプリケーションの RoleInstanceStartupTimeoutError
エラー メッセージが表示されます。
ロール アプリケーションには、ロールのリサイクルを引き起こす可能性がある 2 つの部分が含まれています。
- スタートアップ タスク
- ロール コード (RoleEntryPoint の実装)
ロールが停止すると、サービスとしてのプラットフォーム (PaaS) エージェントによってロールが再起動されます。
スタートアップ タスクによって問題が発生しているかどうかを判断するには、次の手順に従います。
リモート デスクトップを使用して、問題のあるロール インスタンスに接続してみてください。
ロール インスタンスに接続した後、[ スタート] を選択し、[ タスク マネージャー] を検索して選択します。
プロセスの一覧を表示するには、タスク マネージャーの [詳細] タブを選択します。
WaIISHost.exe(WebRole の場合) または WaWorkerHost.exe ( WorkerRole の場合) のプロセスがあるかどうかを確認します。 これらの両方のプロセスが見つからない場合は、スタートアップ タスクが失敗している可能性があります。
この問題がスタートアップ タスクによって発生していることを確認できましたか? その場合は、次のソリューションを適用できます。 ただし、このソリューションは、スタートアップ タスクが 単純タスクまたはフォアグラウンド タスクである場合にのみ使用できます。 このソリューションは、バックグラウンドスタートアップタスクには適用されません。 これらは、ロールの起動と並行して非同期的に実行されます。
解決策: スタートアップ タスク スクリプトをデバッグする
スタートアップ タスクの失敗のトラブルシューティングを行うには、VM の起動時に実行されるスクリプトをデバッグします。 このスタートアップ タスク スクリプトは 、Startup.cmd ファイルです。 スクリプトの問題を調査するために、次のオプションから選択できます。
C:\Resources\WaHostBootstrapper.log ログ ファイルを表示します。 このファイルは、 WaHostBootstrapper.exe プロセスのログです。 このプロセスは、スタートアップ タスクを担当します。 これは、Windows Azure クラシック VM アーキテクチャのワークフローで説明されています。 次に、 Startup.cmdの実行に関連するエラーまたは例外を検索します。 終了コードが 0 であるかどうかを特に確認します。 そうでない場合は、スタートアップ タスクは完了しましたが、エラーが発生します。 スクリプトの終了コードに関連するログがない場合、スタートアップ タスクは引き続き実行されます。
ビジネスへの影響が予想されるためにスタートアップ タスク スクリプトを運用環境で自由に実行できない場合は、コマンド ラインでログメカニズムをカスタマイズします。 たとえば、スクリプト コマンドのキー情報の出力をファイルにリダイレクトできます。 これを行う方法の 1 つは、 コマンドの末尾に追加
> "%TEMP%\StartupLog.txt"
することです。コマンド ラインで、スタートアップ タスク スクリプトを手動で実行します。 WebRole ロールまたは WorkerRole ロールのこのスクリプトの場所を次の表に示します。
役割 スクリプトの場所 WebRole E:\approot\bin\Startup.cmd WorkerRole E:\approot\Startup.cmd
原因 2: DLL またはアセンブリが見つかりません
状態間を循環する応答しないロール インスタンスとロール インスタンスは、DLL またはアセンブリが見つからないことが原因である可能性があります。
DLL またはアセンブリが見つからない場合の症状を次に示します。
ロール インスタンスは、 初期化中、 ビジー状態、 および停止状態を順番に切り 変えます。
ロール インスタンスが Ready 状態に移行しましたが、ページは Web アプリケーションに表示されません。
Web サイトが Web ロールにデプロイされていて、DLL がない場合は、次のサーバー ランタイム エラー メッセージが表示される可能性があります。
'/' アプリケーションのサーバー エラー。
ランタイム エラー
説明: サーバーでアプリケーション エラーが発生しました。 このアプリケーションの現在のカスタム エラー設定では、アプリケーション エラーの詳細がリモートで表示されるのを防ぎます (セキュリティ上の理由から)。 ただし、ローカル サーバー コンピューターで実行されているブラウザーで表示できます。
詳細:この特定のエラー メッセージの詳細をリモート コンピューターで表示できるようにするには、現在の Web アプリケーションのルート ディレクトリにある "web.config" 構成ファイルを含むタグを作成
<customErrors>
してください。 その後、この<customErrors>
タグの "" 属性を "mode
Off
" に設定する必要があります。
解決策: DLL とアセンブリが見つからない問題を解決する
DLL とアセンブリが見つからない場合のエラーを解決するには:
Visual Studio で、ソリューションを開きます。
ソリューション エクスプローラーで、[参照] フォルダーを開きます。
エラー メッセージで識別されるアセンブリを選択します。
[ プロパティ] で、[ ローカルのコピー ] プロパティを True に設定 します。
クラウド サービスを再デプロイします。
エラーが表示されなくなったことを確認したら、サービスを再デプロイします。 デプロイを設定するときは、[ .NET 4 ロールの IntelliTrace を有効にする ] チェック ボックスをオンにしないでください。
次の手順
詳細
クラシック Cloud Service でのスタートアップ タスクの初期構成、実行、および例については、次の記事を参照してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。