AWS ELB 健康检查改进

AWS ELB HealthCheck Improvements

所有,

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

谁能建议一种容错方法来处理这个问题?

  1. 我们有一个 nodeJS 应用程序 运行 在端口 - 80
  2. 我们在目标组中有 3 个实例并且已在 ELB 中注册。
  3. ELB HealthCheck 配置为命中端口 80 上的根路径,如果获得 HTTP 200return成功
  4. 最近,其中一个节点在应用程序挂载时磁盘已 100% 满,而根挂载仍有 space。
  5. 虽然根据 ELB 的健康检查是成功的,但服务器没有响应任何其他服务,理想情况下它是不健康的。这意味着有一些请求得到了 成功了,但其中一些失败了(被路由到这个满是磁盘的服务器)。
  6. 我们确实收到了来自其他监控系统的有关磁盘填充的通知,但由于电子邮件过多且资源有限,我们没有收到通知。
  7. 我们是否可以通过任何其他方式改进 HealthCheck 策略,将这些场景告知 AutoScaling Group 或 ELB 以便我们可以定位要删除的这些节点并自动替换它们?

您可以将 Elastic Load Balancing 配置为指向客户健康检查页面(例如 healthcheck.php).

您可以 运行 该页面上的一些代码来测试应用程序的总体健康状况 (数据库连接、磁盘 space、可用内存)。如果一切正常,return 一个 200 响应。如果出现问题,return 一个 500 响应。这将导致负载均衡器将该实例视为 Unhealthy,并且它将停止向该实例提供流量。

如果 Auto Scaling 配置为使用 ELB 健康检查,则 Auto Scaling 将终止不健康的实例并自动用新实例替换它。