首页 > 解决方案 > 适用于多种服务的 AWS 负载均衡器

问题描述

我的应用程序中有 12 个容器化 Web 服务(12 个不同的容器)。我想将它们部署到 AWS。所有 12 个容器的大小都很大,预计将满足大量需求,因此我不会将所有容器部署在单个容器上。此外,我还希望拥有多个服务#4、5、6 的容器,因为预计这 3 个服务的流量会更多。如何使用 AWS 负载均衡器?在这种情况下,我什至如何进行负载平衡?一种简单的解决方案可能是将所有 12 个容器部署在一个 EC2 中,但在第二个 EC2 实例上部署额外的服务容器 #4,5 和 6,然后跨 2 个可用区复制相同的设置以确保可用性。但是我又不想将所有 12 项服务都放在一个 EC2 实例上,所以这个简单的解决方案看起来不像是一个可行的解决方案。

很多天来,我一直在努力寻找这个问题的答案,但找不到指导。

标签: containersload-balancingamazon-ecs

解决方案


您可以使用Application Load Balancer,无论是在 EC2 容器实例上还是在多个实例上运行都没有关系。

在这种情况下,我什至如何进行负载平衡?

您可以向 ALB 注册 ECS 服务,以便负载均衡器将流量路由到容器服务并且它不会查找 EC2 实例,因此您可以在许多 EC2 实例上运行服务的副本。并且您可以在一个负载均衡器上注册多个 ECS 服务。

当服务数量如此之高时,如何为特定容器实现不同级别的负载均衡?

  • Application Load Balancer 允许容器使用动态主机端口映射(以便每个容器实例允许来自同一服务的多个任务)。

  • Application Load Balancer 支持基于路径的路由和优先级规则(以便多个服务可以在单个 Application Load Balancer 上使用相同的侦听器端口)。

服务负载平衡

现在一个负载均衡器如何将流量路由到每个服务,这可以使用两种方法来完成

  • 主机基础路由
  • 基于路径的路由

每个服务都可以接收主机基础流量或路径基础流量。

例如,

api.examle.com将流量路由到service A

auth.example.com将流量路由到service B

您可以在此处进一步详细说明

在此处输入图像描述


推荐阅读