containers - 适用于多种服务的 AWS 负载均衡器
问题描述
我的应用程序中有 12 个容器化 Web 服务(12 个不同的容器)。我想将它们部署到 AWS。所有 12 个容器的大小都很大,预计将满足大量需求,因此我不会将所有容器部署在单个容器上。此外,我还希望拥有多个服务#4、5、6 的容器,因为预计这 3 个服务的流量会更多。如何使用 AWS 负载均衡器?在这种情况下,我什至如何进行负载平衡?一种简单的解决方案可能是将所有 12 个容器部署在一个 EC2 中,但在第二个 EC2 实例上部署额外的服务容器 #4,5 和 6,然后跨 2 个可用区复制相同的设置以确保可用性。但是我又不想将所有 12 项服务都放在一个 EC2 实例上,所以这个简单的解决方案看起来不像是一个可行的解决方案。
很多天来,我一直在努力寻找这个问题的答案,但找不到指导。
解决方案
您可以使用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
您可以在此处进一步详细说明
推荐阅读
- python - 使用 selenium 进行 Python Web 抓取并通过 Web 爬虫将数据加载到 Pandas DataFrame 中
- sql - 如果第一个查询没有返回,如何执行第二个查询?
- internal-server-error - 我们如何修复 Netsparker 500 内部服务器错误漏洞
- django - Django在模型表单保存后获取当前模型ID并使用此pk重定向它以将其设置为fk到模型表单中的另一个模型fk
- github - 评论后如何在 GitHub 中查看更改
- reactjs - 从 ReactDOM.render() 返回获取 React 组件实例
- sqlite - 存储优化 sqlite blob 充当数据或外键
- linux - 如何从 mp4 和 6 通道 wav 构建具有 6 个相等音频通道(不是 5p1)的 mp4
- arrays - 在 C 中挑选具有特定特征的人
- sql - 计算交易利润的 SQL 查询