.net MVC Web アプリ (MVC4、新しい Web API と通常の MVC の混合) があります。最新の IIS Elastic Beanstalk クラスターでホストされています。
アプリケーションを Elastic Beanstalk にアップロードする方法は、VS2012 AWS プラグインを使用することです。Windows git の最大パス名の制限により、Windows では機能しないように見えるため、「git」メソッドを使用してアップロードしていません。
新しいクラスターを作成し、それを単一ノードに保持すると、アプリは正常に実行されます。新しいアプリケーション バージョンをアップロードすることもできます。
この問題は、Elastic Beanstalk がクラスター内のインスタンスを追加または再作成した後に発生します。ノードの最小数を増やしてクラスターのサイズを手動で変更するか、VM タイプを (マイクロからスモールなどに) 変更すると、Elastic Beanstalk は新しいノードを作成し、それらをクラスターに追加します。これらの新しいノードは 100% 壊れています。それらは IIS を実行していますが、それらを参照すると、Web アプリケーションではなく、IIS のデフォルト画面が表示されます。これらの新しいノードが Web アプリケーションをロードしていないようです。
このバグは 100% 再現可能であり、最初のクラスター作成後に Elastic Beanstalk がノードを作成するたびに発生します。
そのままでは、Elastic Beanstalk は完全に壊れています。このアプリケーションをできるだけ早く少なくとも 4 つのノードにスケールアップする必要がありますが、このバグのある動作でそれを行う方法がわかりません。
このレポートの適切なテスト ケースを取得するために、これを再現しました。Visual Studio を使用して、アプリを Small タイプの新しい負荷分散環境に発行しました。次に、EB Web 管理ページから、最小クラスター数を 2 に変更しました。
元のインスタンス: i-4664813e (ec2-54-227-153-42.compute-1.amazonaws.com)
新しく追加されたインスタンス: i-325f2056 (ec2-54-205-64-135.compute-1.amazonaws.com)
(どうやら 2 つ以上のリンクを投稿できないため、これらの URL をコピーしてブラウザーに貼り付ける必要があります)
新しく追加されたインスタンスが機能していないことがわかります。私のアプリではなく、デフォルトのIISアプリをロードしています(「SV、SlotsVacation、slotsvacation、dev」が表示されるはずです)。
両方のインスタンスの 2 つのログ ファイルを比較したところ、問題は次のように思われます。
作業ログ ファイル:
cfn-hup.log:
2013-10-12 12:36:13,992 [INFO] Refreshing listener credentials
2013-10-12 12:36:14,210 [INFO] Scheduling next credential refresh in 7200 seconds
2013-10-12 12:37:38,934 [INFO] Received command ElasticBeanstalkCommand-AWSEBAutoScalingGroup (invocation id: 9c9388b0-3bac-412e-9936-3d89aa8f4297)
2013-10-12 12:37:38,934 [INFO] Running action for aws-eb-command-handler
2013-10-12 12:41:11,049 [INFO] Action for aws-eb-command-handler succeeded, returning SUCCESS
2013-10-12 12:41:15,651 [INFO] Received command ElasticBeanstalkCommand-AWSEBAutoScalingGroup (invocation id: e46a7650-94df-4481-afba-7c6fb47c98ef)
2013-10-12 12:41:15,651 [INFO] Running action for aws-eb-command-handler
2013-10-12 12:41:43,311 [INFO] Action for aws-eb-command-handler succeeded, returning SUCCESS
2013-10-12 12:43:09,298 [INFO] Refreshing listener credentials
2013-10-12 12:43:09,453 [INFO] Scheduling next credential refresh in 7200 seconds
2013-10-12 12:45:40,786 [INFO] Refreshing listener credentials
2013-10-12 12:45:41,005 [INFO] Scheduling next credential refresh in 7200 seconds
2013-10-12 12:45:41,177 [INFO] Received command ElasticBeanstalkCommand-AWSEBAutoScalingGroup (invocation id: 3b1df0b0-fd54-4ddc-827b-6527dddc9d70)
2013-10-12 12:45:41,177 [INFO] Running action for aws-eb-command-handler
2013-10-12 12:46:48,710 [INFO] Action for aws-eb-command-handler succeeded, returning SUCCESS
2013-10-12 13:06:02,119 [INFO] Received command ElasticBeanstalkCommand-AWSEBAutoScalingGroup (invocation id: 81c8dab0-e142-4fb9-bad2-1c4bfa4a3be5)
2013-10-12 13:06:02,119 [INFO] Running action for aws-eb-command-handler
4 つの ElasticBeanstalkCommand-AWSEBAutoScalingGroup コマンドを受信し、コマンドの ID が AWS::ElasticBeanstalk::Ext._API._Commands.CMD-Startup、Hook-PreAppDeploy などと一致することがわかります。ウェブアプリケーション。
動作していないログ ファイル:
cfn-hup.log:
2013-10-12 13:16:48,661 [INFO] Refreshing listener credentials
2013-10-12 13:16:48,848 [INFO] Scheduling next credential refresh in 7200 seconds
2013-10-12 13:22:22,316 [INFO] Refreshing listener credentials
2013-10-12 13:22:22,551 [INFO] Scheduling next credential refresh in 7200 seconds
2013-10-12 13:24:54,128 [INFO] Refreshing listener credentials
2013-10-12 13:24:54,408 [INFO] Scheduling next credential refresh in 7200 seconds
2013-10-12 13:24:59,588 [INFO] Received command ElasticBeanstalkCommand-AWSEBAutoScalingGroup (invocation id: 69acfccd-2a1b-4535-b22d-377870cb4a9c)
2013-10-12 13:24:59,604 [INFO] Running action for aws-eb-command-handler
1 つのコマンドしか受信していないことがわかります。その 1 つは実際には CMD-TailLogs コマンドであるため、アプリのデプロイにはまったく関係ありません。したがって、問題は、新しく作成されたインスタンスが単に Web アプリをデプロイするコマンドを受信していないことにあるようです。
各インスタンスからの完全なログ ファイル ダンプは次のとおりです。
これを修正する方法はありますか?私が試すことができることは?それはバグですか、それとも私が間違っているのですか?
私のアプリはごく普通のバニラです。新しいレリックのドキュメントからそのままの.ebextension、newrelic.configを1つだけ追加しました。