我尝试做什么
- 从 app-gateway 向 app-backend 发送 http 请求。
- 我为此目的创建了应用程序。(https://github.com/tbrand/app-mesh-sample)
我不能做什么
- 当应用程序网关向应用程序后端发送 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 请求?