AWS ELB HealthCheck改进

时间:2017-07-07 07:30:01

标签: amazon-elb

全部,

我们最近遇到了ELB HealthCheck在掩盖导致应用程序影响的特定用例或场景方面的问题。

有人建议使用容错方法来处理这个问题吗?

  1. 我们在端口中运行了nodeJS应用程序 - 80
  2. 我们在目标群体中有3个实例&那是在ELB注册的。
  3. ELB HealthCheck配置为在端口80上命中根路径,如果获得HTTP 200
  4. 则返回成功
  5. 最近,其中一个节点在应用程序挂载时已经填充了100%的磁盘,并且root挂载仍然有空间。
  6. 虽然HealthCheck按照ELB成功,但服务器没有响应任何其他服务,这在理想情况下是不健康的。这意味着有一些请求得到了 成功但其中一些失败了(它被路由到这个充满磁盘的服务器)。
  7. 我们确实收到了来自其他监控系统的关于磁盘填充的通知,但由于压倒性的电子邮件和错过了有限的资源。
  8. 还有其他方法我们可以即兴通过HealthCheck策略让这些场景与AutoScaling Group或ELB有关联 以便我们可以将这些节点作为目标移除并自动替换它们?

1 个答案:

答案 0 :(得分:2)

您可以将Elastic Load Balancing配置为指向客户运行状况检查页面(例如index.htm),而不仅仅检查200页面是否返回healthcheck.php响应。

您可以在该页面上运行一些代码来测试应用程序的一般运行状况(数据库连接,磁盘空间,可用内存)。如果一切都结束,请返回200响应。如果出现问题,请返回500响应。这将导致Load Balancer将实例视为Unhealthy,并且它将停止为实例提供流量。

如果Auto Scaling配置为使用 ELB运行状况检查,则Auto Scaling将终止运行状况不佳的实例并自动将其替换为新实例。