【发布时间】:2020-10-09 04:56:39
【问题描述】:
我正在运行一个 API 网关(v1,我们不能使用 V2/HTTP,因为我们需要 api 使用密钥和计划),它当前路由到在 Elastic Beanstalk 上运行的一堆 (20) 微服务。出于各种原因,包括 Elastic Beanstalk 设置中所需的每个应用程序负载均衡器的成本(每个微服务一个),我们计划迁移到 Fargate。
似乎没有简单的方法可以将 API Gateway 连接到 Application Load Balancer,然后可以为所有微服务完成基于路径的路由。我找到的最接近的是这篇文章 (https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/) 。虽然这似乎并不理想,因为当 ALB IP 地址发生更改且 lambda 尚未运行时,一定会有短暂的停机时间。
文章中还提到了 Global Accelerator 给 ALB 一个静态 IP 地址,但我相信这只会分配一个静态的公共 IP 地址,而我的 ALB 将是私有的。
【问题讨论】:
-
我想你想要做的是实现 API 网关代理到一个 http 端点不是吗? docs.aws.amazon.com/apigateway/latest/developerguide/…
-
很遗憾没有,因为 APIG 是公开的,我们希望连接到 VPC 中的资源...
-
是的,api 网关将通过其负载均衡器连接到您在 Fargate 上的 http 后端。在你的 vpc 上。这不是你想做的吗?这就是代理所做的。我确信这种模式是可行的,而且有些普遍。
-
Fargate 没有负载均衡器 - 这是需要弄清楚的部分。 APIG V1 只能通过 VPC 链接连接到网络负载均衡器 (NLB),所以我想有一个 NLB 侦听各种端口(每个微服务一个不同的端口),APIG 会知道要发送哪个端口请求(即基于 api/path); fargate 会将微服务容器注册到适当的侦听器。 ALB 会更好,因为它可以进行基于路径的路由...我会更新我到达的位置。
-
docs.aws.amazon.com/AmazonECS/latest/developerguide/… ELB 确实支持 ECS Fargate,仅供参考
标签: amazon-web-services aws-api-gateway aws-fargate aws-load-balancer