Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 当AWS ElasticBeanstalk扩展到另一台服务器时,它似乎在准备就绪之前就可以使用了?_Amazon Web Services_Amazon Elastic Beanstalk - Fatal编程技术网

Amazon web services 当AWS ElasticBeanstalk扩展到另一台服务器时,它似乎在准备就绪之前就可以使用了?

Amazon web services 当AWS ElasticBeanstalk扩展到另一台服务器时,它似乎在准备就绪之前就可以使用了?,amazon-web-services,amazon-elastic-beanstalk,Amazon Web Services,Amazon Elastic Beanstalk,当我的Java应用程序部署到Elastic Beanastalk上的Tomcat上时,需要一段时间(11分钟),因为它必须从S3复制大数据文件并解压缩它们,但这没关系,因为这都是在.ebextensions中完成的,并且实例在完成之前不会报告自己准备就绪 但是,我已经将其配置为自动缩放,并且当它决定需要启动一个新实例时,在下一个实例完全部署之前有一段时间,Elastic Beanstalk会将一些应用程序请求定向到此新服务器,当然,因为它还没有准备好,它会返回一个503错误 但是,所有调用都应该

当我的Java应用程序部署到Elastic Beanastalk上的Tomcat上时,需要一段时间(11分钟),因为它必须从S3复制大数据文件并解压缩它们,但这没关系,因为这都是在.ebextensions中完成的,并且实例在完成之前不会报告自己准备就绪

但是,我已经将其配置为自动缩放,并且当它决定需要启动一个新实例时,在下一个实例完全部署之前有一段时间,Elastic Beanstalk会将一些应用程序请求定向到此新服务器,当然,因为它还没有准备好,它会返回一个503错误


但是,所有调用都应该只转到原始实例,直到第二个实例准备就绪,其他人注意到了吗

请求是否定向到新实例由弹性负载平衡器(ELB)决定。您的自动缩放实例位于ELB后面,ELB对您的EC2实例执行定期运行状况检查,以决定是否向您的实例发送流量。默认情况下,运行状况检查是端口80上的TCP连接。因此,如果ELB可以与Tomcat服务器上的端口80建立连接,它甚至在实例实际“准备就绪”之前就开始向实例发送流量

解决方案是使用自定义HTTP运行状况检查,而不是默认的TCP检查。设置web应用程序以在特殊路径上返回200 OK,例如“/health\u ping”。然后将“应用程序健康检查URL”选项配置为“/健康检查”。可以使用以下ebextension执行此操作

在应用程序源代码中创建名为
.ebextensions/01 health check.config
的文件,并包含以下内容。然后将其部署到您的环境中

option_settings:
   - namespace: aws:elasticbeanstalk:application
     option_name: Application Healthcheck URL
     value: /health_ping
阅读有关此选项设置的详细信息


您也可以在web控制台或使用aws cli进行配置。

感谢您的解释,现在请理解,我在.ebextensions中设置了健康检查url的一个小问题,如前所述,但当我通过web控制台部署并进入可以输入健康检查url的页面时,该url为空,我希望它能被战争中的价值所填补。因此,如果我将其保留为空,则会在部署时将其归档。如果您通过ebextensions进行归档,则需要很短的时间,直到应用程序版本完全部署,才能在控制台中显示。此外,如果您在某个时候使用web控制台将运行状况检查URL设置为空,那么在ebextensions中设置它将没有任何影响。API的设置(web控制台使用的API)将优先于eExtensions。在这种情况下,您可以使用web控制台设置/health\u ping。您还可以使用AWS CLI设置此选项设置。AWS CLI或控制台设置将覆盖ebextensions。我想我缺少一些东西,我正在使用ebextensions,但部署使用war的网站,我想healthcheckurl在查看war文件之前就出现了。你能详细说明一下吗?我是说,当你通过web部署时,有一个字段可以放置health check url,在war中,.ebextensions文件中的值从未填写过,因此我不知道如果通过Amazon管理控制台网页进行部署,.ebextensions文件中的值将如何使用。