AWS Beanstalk 应用程序运行状况检查
Posted
技术标签:
【中文标题】AWS Beanstalk 应用程序运行状况检查【英文标题】:AWS Beanstalk Application Health Check 【发布时间】:2013-11-13 05:07:02 【问题描述】:我们使用 Beanstalk 来部署节点应用程序。效果很好。我在 .ebextensions 目录中创建了几个配置文件,以便在我们加载应用程序时将配置信息应用到我们的应用程序。再次大多运作良好。我有一件事没有,那就是定义应用程序运行状况检查 URL。我不能让它去。关于它的一件奇怪的事情,它似乎是迄今为止我遇到的唯一一个参数,其中有空格,我想知道这一点。我已经尝试将值括在引号中,只是为了看看这是否是问题所在,但它仍然不起作用。以前有没有人这样做过,可以告诉我它是否有效,以及这是否有一些不正确的语法?正如我所说,其余的参数在 beanstalk 中设置正确,只是最后一个没有。注意 #environment# 在部署之前会被替换为 grunt 脚本。
这是配置文件:
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: NODE_ENV
value: #environment#
- namespace: aws:elasticbeanstalk:container:nodejs
option_name: NodeVersion
value: 0.10.10
- namespace: aws:autoscaling:trigger
option_name: LowerThreshold
value: 40
- namespace: aws:autoscaling:trigger
option_name: MeasureName
value: CPUUtilization
- namespace: aws:autoscaling:trigger
option_name: UpperThreshold
value: 60
- namespace: aws:autoscaling:trigger
option_name: Unit
value: Percent
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /load_balance_test
【问题讨论】:
更新。亚马逊告诉我们,是的,那个参数不起作用。他们正在调查。 您是否能够让选项正常工作? 很久没有回去重试了。刚刚手动输入。他们没有就这个问题回复我。 我刚试过。它对我有用。只有原始问题中指定的格式对我有用。 【参考方案1】:添加这个对我有用:
# .ebextensions/healthcheckurl.config
option_settings:
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /health
- namespace: aws:elasticbeanstalk:environment:process:default
option_name: HealthCheckPath
value: /health
我通过eb config
发现了第二个设置,它很好地概述了可以在.ebextensions/yet-another.config
文件中用option_settings
覆盖的环境设置。
【讨论】:
感谢您的回答。这是我在任何地方都找不到记录的第二个选项。【参考方案2】:此属性名称中的空格很奇怪,但与选项的替代速记语法一起使用时可以使用:
option_settings:
aws:elasticbeanstalk:application:
Application Healthcheck URL: /
【讨论】:
【参考方案3】:我为 EB 使用 CloudFormation,而在 CF 中,该参数的语法非常奇怪。如果该配置文件的工作方式与 CF 相同,则以下字符串应该适合您:
HTTP:80/load_balance_test
【讨论】:
这确实很奇怪。你会认为他们会遵循某种规范。【参考方案4】:如果您使用的是Terraform,那么只要确保name
中有空格,它就可以正常工作:
setting
namespace = "aws:elasticbeanstalk:application"
name = "Application Healthcheck URL"
value = "/api/health"
【讨论】:
【参考方案5】:我刚试过。它对我有用。只有原始问题中指定的格式对我有用,即
option_settings:
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /api/v1/health/
【讨论】:
【参考方案6】:您可能还想将 health_check_type 设置为 ELB 而不是默认的 EC2。 这就是我的配置方式
$ cat .ebextensions/0090_healthcheckurl.config
Resources:
AWSEBAutoScalingGroup:
Type: "AWS::AutoScaling::AutoScalingGroup"
Properties:
HealthCheckType: "ELB"
HealthCheckGracePeriod: "600"
option_settings:
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /_status
【讨论】:
以上是关于AWS Beanstalk 应用程序运行状况检查的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 AWS Elastic Beanstalk Django 运行状况检查问题
AWS Elastic Beanstalk - CodePipeline 部署不工作 - 健康状况 - 严重
AWS 负载均衡器运行状况检查:运行状况检查失败,代码如下:[301]