我有一个.net核心API,该API在Docker容器中运行。 该容器已部署到Amazon ECR,在其中使用Task定义运行它(已经运行)
"portMappings": [ { "hostPort": 50598, "protocol": "tcp", "containerPort": 50598 } ],
当我启动服务时,任务运行并且运行正常。我获得了公用IP,可以在其中检查我的电话是否可用:
问题是当我尝试向目标组添加负载均衡器时。
为此,我删除了旧服务,并使用负载均衡器和目标组创建了一个新服务。
像这样启动我的服务后,目标组运行状况检查响应将带有“请求超时”,并继续重新启动我的服务。 当我检查API的公共IP时,它仍然有效,仅当我尝试访问我的API时 通过负载平衡器不起作用。
答案 0 :(得分:2)
由于连接到任务的安全组不允许负载均衡器节点进行入站访问,因此您可能会导致请求超时。
即使所有节点都无法进行健康检查,默认情况下,负载均衡器也会尝试转发到所有节点,这将导致入站评估失败而导致超时。
只要主机允许端口50598
到负载均衡器,就不会发生超时,如果您使用的是ALB,则可以将源添加为连接到负载均衡器的安全组。
一旦此访问有效,您将需要确保对HTTP状态代码和路径的健康检查成功。
对于应用程序负载平衡器,您可以使用200
-499
的范围,但对于网络负载平衡器,它只能进行200
-{ {1}}。
您的目标组也必须配置为在端口399
上运行,它当前是目标端口50598
。
更新
该应用程序似乎正在端口80
上运行。目标组和任务的配置已更新为使用端口。然后,它又开始工作了。
答案 1 :(得分:1)