我对Elastic Load Balancer运行状况检查和Amazon EC2运行状况检查有点困惑。
在Adding Health Checks to Your Auto Scaling Group中说:
如果您已将一个或多个负载均衡器连接到Auto Scaling组,并且实例未通过负载均衡器运行状况检查,则默认情况下Auto Scaling不会替换该实例。
如果启用了负载均衡器运行状况检查,并且实例未通过运行状况检查,则Auto Scaling会认为该实例运行状况不佳并替换它。
因此,如果我不启用ELB运行状况检查,则EC2运行状况检查将起作用,如果某些实例运行状况检查失败,则自动扩展将考虑运行不正常的实例并替换它,如果启用ELB运行状况检查,则会发生同样的事情。那么ELB健康检查和EC2健康检查之间的区别是什么?
答案 0 :(得分:15)
EC2 health check从虚拟机管理程序和网络角度观察可用性。例如,如果出现硬件问题,检查将失败。此外,如果实例配置错误且无法响应网络请求,则会将其标记为有问题。
ELB health check验证实例上的指定TCP端口是否正在接受连接,或者指定的网页返回2xx代码。因此,ELB运行状况检查更加智能,并验证实际的应用程序是否正常工作,而不是验证只有一个实例可以运行。
据说有第三种检查类型:自定义健康检查。如果您的应用程序无法通过简单的HTTP请求进行检查并需要高级测试逻辑,那么您可以在代码中实现自定义检查并通过API设置实例运行状况: Health Checks for Auto Scaling Instances