如何将负载均衡器和API网关连接在一起

0

【以下的问题经过翻译处理】 如何将AWS负载均衡器(ELB/ALB)和API网关连接在一起?

我希望通过API网关对请求进行授权(例如使用JWT),这意味着传入请求应该首先到达API网关进行授权。如果请求得到授权,则请求将被转发到负载均衡器,该负载均衡器将对我的请求进行分配到EC2农场。

API网关支持每秒10,000个请求。因此,为了实现更高的扩展性,我需要在一个区域中使用多个API网关。在这种情况下,我需要一个负载均衡器来在多个API网关之间平衡请求,对吗?

因此,实际上需要经过ELB/ALB -> API网关 -> ELB/ALB 这三次跳转,才能到达我的EC2实例处理请求。

这是3个跳转点,是否有更好的方法来解决这个问题?

profile picture
专家
已提问 3 年前124 查看次数
1 回答
0

【以下的回答经过翻译处理】 将API Gateway置于ALB前面可能会遇到问题,因为目标组可以是IP、EC2实例、Lambda或另一个ALB,而API Gateway则没有目标组。 https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html

10000个请求/秒的限制是软限制,可以增加,因此根据您的实际需求,通过增加该限制可能是可以实现的。 https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html

还有一个解决方案是创建多个具有不同用途的API Gateway,您可以进行尝试

还有一个解决方案是将CloudFront放在API Gateway前面,并使用CloudFront函数随机选择一个API Gateway,这不是一个有效的负载均衡器,但它仍然可以将流量分布在多个API Gateway之间。

另一种您可以尝试的解决方案是删除API Gateway,只需在Lambda@Edge中使用CloudFront进行JWT验证。您可以通过添加一个规则,要求标头包含可在CloudFront中注入的特定键,从而保护对ALB的访问,因此只有从您的CloudFront分配中发出的流量才会被ALB接受,而其他所有流量均会返回403。 https://github.com/aws-samples/cloudfront-authorization-at-edge

profile picture
专家
已回答 3 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则