【问题标题】:Identify AWS Load Balancer TCP Health Check Request识别 AWS 负载均衡器 TCP 运行状况检查请求
【发布时间】:2014-03-13 17:48:13
【问题描述】:

我们管理一个托管在两台 AWS 机器上的 .net mvc 应用程序。 AWS 负载均衡器管理到每台机器的流量。负载均衡器配置为每 30 秒对每台机器执行一次健康检查。它通过对端口 80 的 TCP 请求来执行此操作。

应用程序希望每个请求背后都有一个人,因此运行状况检查会导致副作用,例如对数据库的不必要写入和臃肿的日志文件。健康检查请求的标志是 HttpContext.Request.ServerVariables 属性中只有一个键值对:“Host: mysite.com”

应用程序应如何最好地识别此运行状况检查请求,以便它能够以不产生副作用的方式做出响应?我在想ActionFilter,但是除了检查是否缺少服务器变量之外,还有更准确的方法来隔离请求吗?

【问题讨论】:

    标签: asp.net-mvc amazon-web-services tcp load-balancing


    【解决方案1】:

    在我的应用程序中,我只是切换到 AWS http 检查并设置一个带有索引操作的“心跳”控制器;没有逻辑,但是当 AWS 命中 /Heartbeat 时它返回了 200。默认情况下,您的 IIS 日志将捕获此请求;您的问题中没有概述您的应用程序基础架构,但在我的情况下,操作中缺少任何逻辑就足够了。

    http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/gs-ec2classic.html#ConfigureHealthCheck

    但是,在这里实现自己的 IHttpModule 是另一种选择。您在此处处于原始 HttpApplication 级别,因此此时您无需使用 MVC 管道。我已经将它用于(除其他外),通过查找“X-Forwarded-Proto”标头来强制在我的 AWS 托管应用程序中进行 https 重定向。

    【讨论】:

    • 不想更改健康检查配置,所以选择了 HttpModule 选项。谢谢!
    【解决方案2】:

    如果有人会在 2018 年寻找这个(就像我刚才一样),AWS ELB 运行状况检查请求现在有一个标头“User-Agent=ELB-HealthChecker/2.0”

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 2017-11-08
      • 2020-05-28
      • 2019-08-26
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      相关资源
      最近更新 更多