Enterprise Distributed Application Service (EDAS) でアプリケーションをデプロイ、起動、スケールアウト、またはスケールインする場合、変更レコード ページが変更プロセスの各ステップを追跡します。変更が失敗した場合は、変更詳細 ページを用いて失敗したステップとその根本原因を特定してください。
失敗したステップの特定
アプリケーション詳細ページの左側ナビゲーションウィンドウで、変更レコード をクリックします。
失敗した変更は、変更ステータス 列に「実行失敗」と表示されます。
失敗した変更レコードを見つけ、操作 列の 表示 をクリックします。
変更詳細 ページで、バッチ 1 変更 タブ内の失敗したステップ(例:「デプロイ」)をクリックします。複数バッチのデプロイを構成している場合、ページには「バッチ 1 変更」および「バッチ 2 変更」などの個別のタブが表示されます。失敗したバッチに対応するタブをクリックしてください。
タブ右側のログを確認し、根本原因を特定します。
ログから明確な原因が判明しない場合は、以下の一般的な失敗シナリオを確認してください。
ポートヘルスチェック失敗
症状
変更プロセスがヘルスチェックステップで失敗します。EDAS がアプリケーションの起動を検証するために使用するポート 65000 が到達不能です。
原因
ポート競合:アプリケーション起動時に、他のプロセスが既にポート 65000 を占有しています。
Tomcat 起動失敗:構成エラーまたは依存関係エラーにより、Tomcat コンテナの起動に失敗しています。
ソリューション
アプリケーションの起動ログを確認し、例外を検出します。
java.net.BindException: Address already in useや依存関係の欠落に関するエラーなどを確認してください。ポート競合が発生している場合は、ポート 65000 を占有しているプロセスを停止するか、別のポートを使用するよう再構成してください。
根本的な起動エラーを修正し、アプリケーションを再デプロイしてください。
URL ヘルスチェック失敗
症状
変更プロセスがヘルスチェックステップで失敗します。ヘルスチェック URL を構成すると、EDAS はアプリケーション起動後にその URL に対して HTTP リクエストを送信します。HTTP ステータスコード 200 の応答を受信した場合のみチェックが成功します。3 分間のタイムアウト内に他の任意のステータスコードが返された場合、チェックは失敗し、デプロイメントは停止します。
原因
アプリケーションが起動に失敗したため、ヘルスチェック URL が利用可能になっていません。
構成されたヘルスチェック URL が不正であるか、存在しないパスを指しています。
リクエストフィルター、ファイアウォールルール、またはセキュリティグループが、ヘルスチェック URL への HTTP リクエストをブロックしています。
ソリューション
アプリケーションの起動ログを確認し、エラーなく起動したことを確認してください。
ヘルスチェック URL のパスが正しく、アプリケーションがそのパスで 200 応答を返すことを検証してください。アプリケーションホストからリクエストを実行してテストできます:
curl -I http://localhost:<port>/<health-check-path>ヘルスチェック URL へのインバウンド HTTP リクエストをブロックするリクエストフィルター、ファイアウォールルール、またはセキュリティグループがないことを確認してください。
問題を解決した後、アプリケーションを再度デプロイしてください。
ディスク領域不足エラー
症状
アプリケーションが変更プロセスのステップで長時間ハングアップしたままになります。変更ログに以下のいずれかのエラーメッセージが含まれています:
[EDAS-10000] ディスクに空き領域がありません。デバイス上に空き領域がありません。空き領域(/home/admin)のバイト数:0exit 1。原因
ほとんどの場合、アプリケーションのビジネスログが利用可能なディスク領域をすべて消費しています。
ソリューション
| デプロイタイプ | 対応策 |
|---|---|
| ECS クラスター | Elastic Compute Service (ECS) コンソールにログインし、不要なログファイルをディスクから削除してください。 |
| Swarm クラスター内の Docker アプリケーション | アプリケーションのリセット を実行します。これにより、コンテナが停止・削除・再構築され、占有されていたディスク領域が解放されます。 |
再発防止のため、アプリケーションログのログローテーションを設定するか、保持ポリシーを適用してください。
AliyunServiceRoleForAutoScaling ロールの欠落
症状
EDAS が Auto Scaling を呼び出してリソースを管理できないため、変更プロセスが失敗します。
原因
サービスリンクロール AliyunServiceRoleForAutoScaling がご利用の Alibaba Cloud アカウントに割り当てられていません。このロールにより、Auto Scaling は Elastic Compute Service (ECS)、Virtual Private Cloud (VPC) およびその他の必要なサービスへアクセスする権限を付与されます。
ソリューション
Auto Scaling コンソールで、ご利用のアカウントに AliyunServiceRoleForAutoScaling ロールを割り当てた後、変更を再試行してください。