.NET:ElasticBeanstalkCommand-AWSEBAutoScalingGroup部署命令未针对自动创建的实例运行

时间:2013-10-12 15:30:00

标签: iis amazon-web-services elastic-beanstalk

我有一个.net MVC网络应用程序(MVC4,新的web-api和普通的MVC之间的混合)。它托管在最新的IIS Elastic Beanstalk集群上。

我将我的应用程序上传到Elastic Beanstalk的方式是通过VS2012 AWS插件。我没有使用“git”方法上传,因为由于Windows git中的最大路径名限制,这似乎无法在Windows上运行。

创建新群集并将其保留在单个节点后,应用程序运行正常。将新的应用程序版本上传到它也可以。

在Elastic Beanstalk添加或重新创建群集中的任何实例后,会出现问题。如果通过增加最小节点数来手动调整集群大小,或者更改VM类型(例如,从微观到小),Elastic Beanstalk将创建新节点并将其添加到集群。这些新节点100%被破坏。他们正在运行IIS,但当您浏览它们时,您只能看到IIS默认屏幕,而不是我的Web应用程序。就像这些新节点根本没有加载我的Web应用程序一样。

每次Elastic Beanstalk在初始群集创建后创建任何节点时,此错误都是100%可重现的。

实际上,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个链接)

您可以看到新添加的实例无效。它正在加载默认的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等匹配。实际部署我的Web应用程序。

非工作日志文件:

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个命令,而且该命令实际上是CMD-TailLogs命令,因此它根本与应用程序部署无关。所以问题似乎是新创建的实例根本没有收到部署Web应用程序的命令。

以下是每个实例的完整日志文件转储:

原始工作实例:https://dl.dropboxusercontent.com/u/59304/logs/resources%252Fenvironments%252Flogs%252Ftail%252Fe-kgcjtidtmm%252Fi-4664813e%252FTailLogs-1381583168.out.txt

新破坏的实例:https://dl.dropboxusercontent.com/u/59304/logs/resources%252Fenvironments%252Flogs%252Ftail%252Fe-kgcjtidtmm%252Fi-325f2056%252FTailLogs-1381584345.out.txt

我有什么想法可以解决这个问题?我可以尝试的事情?这是一个错误还是我做错了什么?

我的应用程序很简单。我只添加了1 .ebextension,newrelic.config,它直接来自新的文件文档。

0 个答案:

没有答案