我已经为我的elasticbeanstalk应用程序设置了'Application Healthcheck URL'(aws:elasticbeanstalk:application),并且在晚上两台服务器开始未通过此检查。
似乎由elasticbeanstalk设置的自动调节组具有ec2的运行状况检查类型,这意味着服务器没有被终止和替换,只有2个服务器连接到负载均衡器。
如何使用elasticbeanstalk的配置设置将autoscaling组的运行状况检查类型更改为elb?我找不到任何记录的方法来改变这个值,但它必须是一个相当常见的要求。
由于
答案 0 :(得分:27)
事实证明,答案在于将配置文件添加到.ebextensions目录。
AWS文档似乎不正确,或者至少不是最新的。
这里告诉您可以使用配置文件配置EB资源: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-resources.html
但它没有告诉你把配置文件放在哪里。要找到这一点,您需要点击链接: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html
第一个链接有助于告诉您可以配置的各种资源的名称。在我的情况下,我需要'AWSEBAutoScalingGroup'。但是它并没有告诉你资源类型标识符(Type)或可用属性是什么。它有一个指向'资源类型标识符'(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/aws-template-resource-type-ref-aeb.html)的链接,但是没有提到那里的自动缩放或弹性beanstalk。
幸运的是,AWS论坛上的善良灵魂向我发送了一些有用文档的链接: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html
所以最后我能够创建我的配置文件,如下所示:
Resources:
AWSEBAutoScalingGroup:
Type: "AWS::AutoScaling::AutoScalingGroup"
Properties:
HealthCheckType: ELB
HealthCheckGracePeriod: 600
现在这就像一个魅力!
答案 1 :(得分:1)
您可以创建自己的AutoScaling组并将其用于启动配置。
您还可以使用Elastic Beanstalk配置文件配置AutoScaling:
AWS Elastic Beanstalk: Customizing Environment Resources
<强>更新强>
我确实意识到您可以使用EB配置文件配置ASG,但是没有更改健康检查类型的选项
查看Configure the Health State of An Instance指南,它说您可以使用Elastic Load Balancer运行状况检查与AutoScaling。
默认情况下,Auto Scaling组通过定期检查Amazon EC2实例状态检查的结果来确定每个实例的运行状况。如果已将Auto Scaling组与Elastic Load Balancing负载均衡器关联,并且已选择使用Elastic Load Balancing运行状况检查,则Auto Scaling将通过检查Amazon EC2实例状态检查的结果来确定实例的运行状况。 Elastic Load Balancing实例运行状况检查。
创建AutoScaling组时,可以选择将ELB选为健康检查类型:
或者,如果您使用CreateAutoScalingGroup API调用:
<强> HealthCheckType 强>
您希望从亚马逊进行健康检查的服务 EC2或Elastic Load Balancer。有效值为EC2或ELB。默认情况下,Auto Scaling运行状况检查使用Amazon的结果 EC2实例状态检查以确定实例的运行状况。对于 更多信息,请参阅Health Check。