1

我尝试做什么

我不能做什么

  • 当应用程序网关向应用程序后端发送 http 请求时,它会显示“ENOTFOUND”。(DNS 查找失败?)

细节

  • 我在同一个 VPC 下的 ECS 上有两个最小应用程序(应用程序网关和应用程序后端。用 Node.js 编写)。他们独立运行良好。
    • Envoy 代理由 ECS 控制台以默认配置注入。
  • 我定义了一个 App Mesh,它有一个到后端服务的路由器。
  • AWS Cloud Map 由 ECS 创建。似乎实例已在每个服务上正确注册。
  • 我使用 3000 作为除 ALB 之外的每个定义的侦听端口。(它使用 80。)

建筑学

ECS

  • mymesh(ECS 集群)
    • app-gateway(ECS服务。任务定义由envoy代理注入。)
    • app-backend(ECS服务。任务定义由envoy代理注入。)

AWS 应用网格

  • app-backend.mymesh.local(虚拟服务。provider=app-backend(虚拟路由器))
  • app-gateway.mymesh.local(虚拟服务。provider=app-gateway(虚拟节点))
  • app-backend(虚拟路由器。它有一条到 app-backend(虚拟节点)的路由。)
  • 应用后端(虚拟节点。服务发现=AWS 云地图,命名空间=mymesh.local,服务名称=应用后端)
  • app-gateway(虚拟节点。服务发现=AWS Cloud Map,命名空间=mymesh.local,服务名称=app-gateway,后端=app-backend.mymesh.local)

AWS 云地图

  • mymesh.local(命名空间)
    • app-backend (Service. 它有一个ECS注册的实例)
    • app-gateway (Service. 它有一个ECS注册的实例)

53 号公路

  • mymesh.local(私有主机区域。它与 VPC 关联。它是我在 ECS 上定义第一个服务时创建的。)
    • app-backend.mymesh.local(一条记录。值是ECS任务运行的IP地址。)
    • app-gateway.mymesh.local(一条记录。值是ECS任务运行的IP地址。)

ALB

  • app-gateway(app-gateway 服务的公共端点。它运行良好。)
    • app-gateway(目标组。目标由 ECS 注册。)

根据这个示例应用程序,我认为我可以通过app-backend.mymesh.local这样方式访问应用程序后端。但这会引发错误。

请告诉我是否应该提供更多细节。(我会通过文字或屏幕截图告诉他们。)

如何使用 App Mesh 在 ECS 服务之间成功发起 http 请求?

4

1 回答 1

1

我自己解决了。必须在我的 VPC 配置上启用 DNS 主机名配置。启用后,它工作正常。谢谢。

于 2019-12-13T16:23:10.137 回答