我们在AWS ECS上有几个微服务。我们有单个ALB,它针对不同的微服务具有不同的目标组。我们希望在外部公开一些端点,而某些端点仅用于内部通信。
问题在于,如果我们将负载均衡器放在公共VPC中,那么意味着我们在外部公开所有寄存器端点。如果我们将负载均衡器移动到私有VPC,我们必须在公共VPC中使用某种代理,这需要额外的基础设施/成本和自定义实现所有安全问题,如D-DOS等。
我们可以提供哪些可行的方法或AWS为此提供某种开箱即用的解决方案?
答案 0 :(得分:1)
我强烈建议为此运行2个albs。当然,它会花费你更多(不是因为流量成本不会翻倍),但是拥有内部负载均衡器和外部负载均衡器会更加直接。工作时间也要花钱!运行2个albs将是最少的管理员,可能是最便宜的整体。
答案 1 :(得分:0)
结帐WAF。它代表Web应用程序防火墙,可作为AWS服务使用。请按照以下步骤操作:
<强>更新强>
在这种情况下,您必须在公共子网中使用外部ALB,如Dan Farrell在下面的评论中所述。
答案 2 :(得分:0)
我建议这样做:
https://github.com/talal-shobaita/populate-nlb-tg-withalb/
ALB和NLB都是可伸缩的,并且不受AWS的DDOS的保护,AWS WAF是另一个很棒的工具,可以直接附加到您的ALB侦听器上以进行扩展保护。
或者,您可以等待AWS支持每种服务的多个目标组注册,这已经在其路线图中:
答案 3 :(得分:0)
这是我们最终解决的方式。
答案 4 :(得分:0)
这些天,API Gateway是执行此操作的最佳方法。您可以让您的API服务于许多不同的端点,同时通过API网关仅服务于公共端点,并代理回到该API。
答案 5 :(得分:0)
我还没有看到它,因此我会注意到我们使用CloudMap进行内部路由,并使用ALB进行“外部”(在我们的情况下,简单来说是内部/内部VPC)通信。我没有深入阅读,但我认为this article描述了它。
AWS Cloud Map是一种托管解决方案,可让您将逻辑名映射到应用程序的组件/资源。它允许应用程序使用AWS开发工具包,RESTful API调用或DNS查询之一发现资源。 AWS Cloud Map提供注册的资源,这些资源可以是Amazon DynamoDB表,Amazon Simple Queue Service(SQS)队列,使用EC2实例或ECS任务或使用无服务器堆栈构建的任何更高级别的应用程序服务。
...
Amazon ECS与AWS Cloud Map紧密集成,可为ECS中运行的计算工作负载启用服务发现。为ECS服务启用服务发现后,它将自动跟踪AWS Cloud Map中的所有任务实例。
答案 6 :(得分:-1)
您想查看AWS Security Groups。
安全组充当您的实例的虚拟防火墙,以控制入站和出站流量。
对于每个安全组,您可以添加控制实例的入站流量的规则,以及控制出站流量的单独规则集。
更具体的是您的用例,但可能是ELB Security Groups上的文档。正如您所料,这些是在ELB级别而不是实例级别应用的安全组。
使用安全组,您可以指定谁有权访问哪些端点。