【AWS】什么是AWS Application Load Balancer (ALB)
2025年07月18日
文章浏览:23
【AWS】什么是AWS Application Load Balancer (ALB) 

Application Load Balancer (ALB) 是一种 Elastic Load Balancing (ELB) 服务,它在 **OSI 模型的第 7 层(应用层)**运行,专门用于对 HTTP 和 HTTPS 流量进行负载均衡。

您可以将 Application Load Balancer 想象成一个**“智能交通指挥官”**,它不仅能将客户端请求分发到多个目标(如 EC2 实例、容器、Lambda 函数),还能根据请求的内容(例如 URL 路径、主机头、HTTP 方法、查询字符串、Cookie 等)进行更高级的路由决策。

Application Load Balancer 的核心功能和优势

ALB 旨在支持现代化应用程序架构,如微服务和基于容器的应用程序,并提供高级的流量管理能力。

  1. 应用层 (Layer 7) 负载均衡:与传统的第 4 层负载均衡器(如 Network Load Balancer 或 Classic Load Balancer)不同,ALB 能够检查 HTTP/HTTPS 请求的内容。这使得它能够实现更智能的路由,例如,将 /images 的请求路由到处理图片的服务器组,将 /api 的请求路由到 API 服务器组。
  2. 高级请求路由:基于内容的路由: 可以根据 URL 路径、主机头、HTTP 方法、查询字符串、Cookie 和源 IP 等多种条件来识别特定业务流量,并将其转发到不同的目标组。加权目标组: 支持将流量按权重分配到多个目标组,这对于蓝/绿部署、A/B 测试或逐步迁移应用程序版本非常有用。基于持续时间的会话粘性: 可以配置会话粘性,确保来自同一客户端的请求在指定时间内始终发送到同一目标。重定向和固定响应: 可以直接从负载均衡器重定向请求或返回固定响应,而无需将请求转发到后端应用程序。
  3. 支持现代化应用程序架构:微服务和容器: 非常适合负载均衡微服务和基于容器的应用程序(如 Docker、Amazon ECS、Amazon EKS)。ALB 可以将流量路由到同一 EC2 实例上的多个端口,从而支持在单个实例上运行多个容器化服务。Lambda 函数: 可以直接将请求路由到 AWS Lambda 函数,从而构建无服务器的 Web 应用程序。
  4. 高可用性和弹性:跨可用区: ALB 必须部署在至少两个可用区中,以确保高可用性。如果一个可用区变得不可用或没有正常目标,负载均衡器会将流量路由到其他可用区中的正常目标。自动扩缩: 根据传输到应用程序的流量随时间的变化自动扩展负载均衡器,以处理绝大部分工作负载。健康检查: 持续监控注册目标的运行状况,并确保只将请求发送到正常运行的目标。
  5. 增强安全性:SSL/TLS 卸载: 可以在负载均衡器上终止 SSL/TLS 会话,减轻后端服务器的加密/解密负担,并确保始终使用最新的 SSL/TLS 密码和协议。与 AWS WAF 集成: 可以与 AWS Web Application Firewall (WAF) 集成,提供应用层保护,抵御常见的 Web 漏洞。源 IP 保留: 在终止 TLS 后,ALB 仍能保留客户端的源 IP 地址,方便后端应用程序进行日志记录和分析。

Application Load Balancer 的工作原理

  1. 客户端请求: 客户端向 ALB 的 DNS 名称或 IP 地址发送 HTTP/HTTPS 请求。
  2. 侦听器 (Listeners): ALB 上的侦听器使用您配置的协议(HTTP/HTTPS/QUIC)和端口来检查来自客户端的连接请求。
  3. 规则评估: 侦听器规则按照优先级顺序进行评估。每条规则由一个或多个条件(例如,路径是 /api/*)和一个或多个操作(例如,转发到 api-target-group)组成。
  4. 目标组 (Target Groups): 当请求匹配某个规则时,ALB 会根据规则中定义的操作,从关联的目标组中选择一个目标(例如,EC2 实例、容器、Lambda 函数)来发送请求。健康检查: ALB 会持续对目标组中的目标进行健康检查,确保只将流量路由到正常运行的目标。路由算法: 默认的路由算法是轮询 (Round Robin);也可以配置为最少未完成请求 (Least Outstanding Requests)。
  5. 流量转发: ALB 将请求转发给选定的目标,目标处理请求并返回响应。
  6. 响应返回: ALB 将目标的响应返回给客户端。

Application Load Balancer 的典型用例

  • 微服务架构: 将不同的微服务路由到不同的目标组,实现精细的流量控制和管理。
  • 容器化应用程序: 负载均衡运行在 Amazon ECS 或 Amazon EKS 上的容器化应用程序。
  • 无服务器应用程序: 将 HTTP/HTTPS 请求直接路由到 AWS Lambda 函数,构建完全无服务器的 Web 应用。
  • 蓝/绿部署和 A/B 测试: 通过加权目标组将流量逐步转移到新版本的应用程序,或将部分流量路由到实验性版本进行测试。
  • 基于内容的路由: 根据 URL 路径、主机名等将流量路由到不同的应用程序组件或服务。
  • 混合协议应用程序: 支持同时处理 HTTP、HTTPS 和 QUIC 协议的应用程序。

总结来说,Application Load Balancer 是 AWS Elastic Load Balancing 系列中功能最丰富、最智能的负载均衡器,它在应用层提供高级的流量路由和管理功能,是构建现代化、可扩展、高可用 Web 应用程序的关键组件。


过去考试题

あなたはEC2上で稼働するWebアプリケーションの高可用性を確保するアーキテクチャ設計を任されています。単一障害点を排除し、障害発生時にもサービスを継続できる構成として最も適切なものはどれですか?


  1. 単一のアベイラビリティーゾーン内に複数台のEC2インスタンスを配置し、EBSスナップショットでバックアップを取得する
  2. 複数のアベイラビリティーゾーンにまたがってEC2インスタンスを配置し、Application Load Balancerでトラフィックを分散する
  3. 単一リージョン内の複数サブネットにインスタンスを配置し、Route 53のレイテンシールーティングを使用して優先AZに誘導する
  4. Amazon S3に静的ウェブサイトをホスティングし、CloudFrontでのみコンテンツを配信する


正解は B です。複数のAZにEC2インスタンスを配置し、ALBで自動的にリクエストを振り分けることで、あるAZで障害が発生しても他のAZで継続的に処理でき、高可用性を実現します。


選択肢 A : 同一AZ内に限る構成はAZ障害時に全サービスが停止するため誤りです。


選択肢 C : レイテンシールーティングは応答速度優先の機能であり、単一リージョンかつAZ障害の自動フェイルオーバーには適していないため誤りです。


選択肢 D : S3+CloudFrontは静的コンテンツ配信向けであり、動的Webアプリケーションの高可用性には不十分なため誤りです。

关注 收藏