如何使用 elasticbeanstalk 设置自动缩放组健康检查类型

Posted

技术标签:

【中文标题】如何使用 elasticbeanstalk 设置自动缩放组健康检查类型【英文标题】:How to set autoscaling group health check type with elasticbeanstalk 【发布时间】:2014-02-12 10:14:03 【问题描述】:

我为我的 elasticbeanstalk 应用程序设置了“应用程序运行状况检查 URL”(aws:elasticbeanstalk:application),但在夜间,两台服务器开始未能通过此检查。

elasticbeanstalk 设置的自动缩放组似乎具有 ec2 的健康检查类型,这意味着服务器没有被终止和替换,从而使负载均衡器连接了 2 台停止服务的服务器。

如何使用 elasticbeanstalk 的配置设置将自动缩放组的运行状况检查类型更改为 elb?我找不到任何更改此值的记录方法,但它必须是一个相当普遍的要求。

谢谢

【问题讨论】:

“我找不到任何记录在案的方法来更改此值...”。我没有明确说明我花了几个小时搜索 AWS EB 文档和谷歌,但我不知道需要付出努力的那种细节。 【参考方案1】:

原来答案在于将配置文件添加到 .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

这现在就像一个魅力!

【讨论】:

太棒了,正是我想要的。经过测试,100% 正确。谢谢。【参考方案2】:

您可以创建自己的 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 Group 时,可以选择 ELB 作为运行状况检查类型:

或者如果你使用CreateAutoScalingGroup API 调用:

HealthCheckType 您希望从亚马逊进行健康检查的服务 EC2 或弹性负载均衡器。有效值为 EC2 或 ELB。

默认情况下,Auto Scaling 运行状况检查使用 Amazon 的结果 EC2 实例状态检查以确定实例的运行状况。为了 更多信息,请参阅Health Check。

【讨论】:

谢谢。我将看看使用自定义 ASG。我确实意识到您可以使用 EB 配置文件配置 ASG,但是没有选项可以更改运行状况检查类型 用两个可用选项更新了答案以更改运行状况检查类型。 谢谢。虽然这是更新 ASG 设置的两种有效方法,但我正在寻求一种通过 Elastic Beanstalk 进行更新的方法。我不想在每次部署新版本的应用程序后手动更改 ASG 或运行另一个脚本。 好吧,如果您没有使用自定义 ASG 和 ELB,当在 Elastic Beanstalk 中启用自动缩放和负载均衡时,ASG 将默认使用 ELB 健康检查。因此无需更新任何设置。 根据我的经验,情况并非如此。为了测试这个理论,我刚刚从头开始创建了一个基本的 Autoscaled EB 测试应用程序,它创建的 ASG 确实具有运行状况检查类型 EC2。也许他们最近改变了默认行为。

以上是关于如何使用 elasticbeanstalk 设置自动缩放组健康检查类型的主要内容,如果未能解决你的问题,请参考以下文章

使用 .NET Core WebApp 访问 AWS ElasticBeanstalk 自定义环境变量

如何在 Elastic Beanstalk 上为特定容器设置文件夹权限

ElasticBeanstalk GoDaddy 和 SSL

使用 API 使用 RDS 配置 ElasticBeanstalk

亚马逊 AWS ElasticBeanstalk 自定义 AMI

Django 频道 2 和 EC2 / Elasticbeanstalk