首页 > 解决方案 > AWS NLB 到 ECS 集群的运行状况检查失败

问题描述

我已经配置了一个网络负载均衡器,通过端口 80 将 TCP 流量路由到 ECS 集群

ECS 集群在 Fargate 配置中运行 ASP.NET Core 2.2 API 任务。API的基本路线是http://ip_address:80/api/v1/

起初,一切都按预期工作,我可以访问负载均衡器的 DNS 并将请求路由到适当的 .NET API 路由

然而,最终 NLB 上的健康检查失败,容器被排空并被新容器替换。

使用 Application Load Balancer,我只需配置运行状况检查以命中/healthcheckAPI 上的路由,一切都会好起来的。

但是,不能以这种方式配置网络平衡器。

我的问题是:对 ECS 容器进行健康检查的策略是什么?

标签: amazon-web-servicesamazon-ecsaws-load-balancer

解决方案


好的,所以答案很简单......

您只需在路径上设置一个资源,/以便 NLB 得到响应

我对 asp.net core 的具体解决方案:

ASP.NET Core 2.2 为此提供了一个内置包。只需在Startup.cs课堂上添加以下内容

将服务添加到服务集合

public void ConfigureServices(IServiceCollection services)
{
    services.AddHealthChecks();
}

配置健康检查

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // Network Load Balancer hits this path for the health check
    app.UseHealthChecks("/", 80);
    ...
}

推荐阅读