AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1013835
Accepted
Steve
Steve
Asked: 2020-04-24 10:33:50 +0800 CST2020-04-24 10:33:50 +0800 CST 2020-04-24 10:33:50 +0800 CST

即使健康检查失败,什么可能导致应用程序负载均衡器将流量转发到未就绪的实例?

  • 772

我有一个 AWS Elastic beanstalk 环境,它可以从 2 到 3 个配置有应用程序负载均衡器的实例进行扩展。负载均衡器配置了 HTTP 运行状况检查以寻找 200 响应。

当环境自动扩展到 3 个实例时,新实例在准备好之前就开始接收流量。如果我手动检查运行状况检查 URL,我可以看到 3 次中有 1 次返回 404,因为新实例尚未准备好。应用程序的其他 URL 也出错,3 次中有 1 次是因为它们不存在。

据我了解,健康检查 URL 的全部意义在于处理这个问题。那么,请问是什么原因造成的?

一些可能相关的信息:

  • 该实例需要很长时间才能准备就绪,因为它是一个需要安装 ARR 的 ASP.Net 应用程序。
  • 在增强的运行状况检查概述中,两个工作实例被列为“严重”,即使它们工作正常。他们列出了几个 5xx 错误,我不知道为什么,因为发送给他们的流量很少,它占流量的很大比例。奇怪的是,未准备好的新实例被标记为“Ok”。我不认为增强的健康检查决定负载均衡器何时认为实例健康,但也许我不正确?
  • 当我尝试联系 AWS 支持时,代理向我发送了大量有关不可变环境更新和滚动更新的信息。据我了解,这与在进行配置更改或新部署时如何使新实例联机有关,这与负载平衡健康检查和自动缩放不同,因此不相关。但是,也许我误解了,代理没有设法说明为什么这与这种情况有关。
amazon-web-services elastic-beanstalk
  • 1 1 个回答
  • 87 Views

1 个回答

  • Voted
  1. Best Answer
    Michael - sqlbot
    2020-04-26T06:28:25+08:002020-04-26T06:28:25+08:00

    如果我手动检查运行状况检查 URL,我可以看到 3 次中有 1 次返回 404,因为新实例尚未准备好。

    当您碰巧通过平衡器访问其中一个节点时,健康检查 URL 对健康节点起作用这一事实不一定与平衡器访问它以进行健康检查时健康检查 URL 正常工作相同。

    现代 HTTP 版本要求Host每个传入请求中都存在标头,并且平衡器会将 HTTP 主机标头设置为实例的私有 IP 地址以进行健康检查请求,但将通过浏览器在正常请求中设置的值 - 和您的浏览器将相同的标头设置为您用于访问平衡器的主机名。

    如果您(和您的服务器/框架/应用程序)没有考虑到这一点,并且您的服务器以不同的方式对待它们,那么您的所有实例实际上可能一直未能通过它们的健康检查,尽管您在尝试它们时手动检查工作正常。当“所有目标都不健康”的情况发生时,ALB 假设最安全的做法是将流量转发到所有实例,就好像它们都是健康的(故障安全但不一定直观的设计),这将准确解释您所看到的情况。

    如果目标组仅包含不正常的注册目标,负载均衡器节点会跨其不正常的目标路由请求。

    https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html

    • 2

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve