AWS NLB 到 ECS 集群的健康检查失败
AWS NLB to ECS Cluster failing health check
我已将网络负载均衡器配置为通过端口 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,我只需将运行状况检查配置为命中 API 上的 /healthcheck
路由,一切都会好起来的。
但是,不能以这种方式配置网络平衡器。
我的问题是:对ECS容器进行健康检查的策略是什么?
好的,所以答案很简单...
您刚刚在 /
路径上设置了资源,以便 NLB 得到响应
我对 asp.net 核心的具体解决方案:
ASP.NET Core 2.2 对此有一个 built in package。这只是在 Startup.cs
class
中添加以下内容的问题
将服务添加到服务集合
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);
...
}
我已将网络负载均衡器配置为通过端口 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,我只需将运行状况检查配置为命中 API 上的 /healthcheck
路由,一切都会好起来的。
但是,不能以这种方式配置网络平衡器。
我的问题是:对ECS容器进行健康检查的策略是什么?
好的,所以答案很简单...
您刚刚在 /
路径上设置了资源,以便 NLB 得到响应
我对 asp.net 核心的具体解决方案:
ASP.NET Core 2.2 对此有一个 built in package。这只是在 Startup.cs
class
将服务添加到服务集合
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);
...
}