AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Auto Scaling 运行状况检查设置

Amazon EC2 Auto Scaling 可监控其启动的每个 Amazon EC2 实例的运行状况。如果任何实例意外终止,Amazon EC2 Auto Scaling 会检测该终止情况并启动替代实例。默认情况下,为您的环境创建的 Auto Scaling 组使用 Amazon EC2 状态检查。如果环境中的某个实例未通过 EC2 状态检查,Amazon EC2 Auto Scaling 将中断该实例并替换它。

EC2 状态检查只包括实例的运行状况,而不包括应用程序的运行状况或者实例上运行的任意 Docker。如果应用程序崩溃,但它运行所在的实例仍然运行状况良好,则可能会从负载均衡器中逐出该实例,但 Amazon EC2 Auto Scaling 不会自动替换它。默认行为适合用于故障排除。如果 Amazon EC2 Auto Scaling 在应用程序崩溃之后立即替换该实例,您可能不会意识到有任何问题,即使它在启动之后快速崩溃。

如果您希望 Amazon EC2 Auto Scaling 替换其应用程序停止响应的实例,可以通过配置文件将 Auto Scaling 组配置为使用 Elastic Load Balancing 运行状况检查。此配置文件会告知该组使用负载均衡器的运行状况检查而不是 EC2 状态检查来确定实例的运行状况。

例 .ebextensions/autoscaling.config

Resources: AWSEBAutoScalingGroup: Type: "AWS::AutoScaling::AutoScalingGroup" Properties: HealthCheckType: ELB HealthCheckGracePeriod: 300

有关 HealthCheckTypeHealthCheckGracePeriod 属性的更多信息,请参阅 AWS CloudFormation 用户指南 中的 AWS::AutoScaling::AutoScalingGroup

默认情况下,Elastic Load Balancing 运行状况检查配置为尝试通过端口 80 与您的实例进行 TCP 连接。这可以确认运行在实例上的 Web 服务器接受连接。但您可能希望自定义负载均衡器运行状况检查以确保应用程序处于良好状态,而不仅仅是 Web 服务器处于良好状态。宽限期设置可设置实例在不终止和替换的情况下无法通过运行状况检查的秒数。实例在从负载均衡器中被逐出后仍然能够恢复,因此请为实例指定适合于您的应用程序的时间量。