在现代云环境中,负载均衡器是确保应用高可用性和性能的关键组件。AWS 负载均衡器(Elastic Load Balancing, ELB)可接收来自客户端的应用程序流量,并将其智能分发到多个注册目标,例如跨多个可用区的 EC2 实例、容器或 IP 地址。通过这种方式,ELB 不仅平衡流量,还能提高应用的容错能力与可用性。
AWS 负载均衡器概述
AWS 负载均衡器为客户端提供单一接入点,智能路由请求至运行正常的目标实例,并自动检测运行异常的实例,一旦恢复,流量会重新路由。它能动态适应流量波动,无需人工干预,同时支持跨可用区和跨区域分发,以实现高可用性。
负载均衡器的核心功能包括:
- 自动将流量分配至多个目标实例
- 健康检查目标实例并动态调整路由
- 支持 SSL/TLS 解密与用户身份验证
- 提供弹性伸缩能力与容错能力
- 可与 AWS 证书管理器、Auto Scaling、CloudWatch 等服务集成
AWS 负载均衡器类型
AWS 提供四种负载均衡器类型:
- 经典负载均衡器(Classic Load Balancer, CLB)
- 在请求级别和连接级别分发流量,主要用于 EC2-Classic 网络。
- 功能有限,不支持基于路径或基于主机的路由。
- 仅建议旧版 EC2-Classic 用户使用,新用户推荐 ALB 或 NLB。
- 应用程序负载均衡器(Application Load Balancer, ALB)
- 第 7 层负载均衡器,根据 HTTP/HTTPS 数据包内容进行路由。
- 支持基于路径和基于主机的路由,以及 Lambda 函数处理请求。
- 原生支持 WebSocket 和 HTTP/2 协议,适合微服务和容器化架构。
- 可注册 IP 地址或多个端口的目标,实现灵活的流量分发。
- 网络负载均衡器(Network Load Balancer, NLB)
- 第 4 层负载均衡器,适合高性能和极低延迟需求。
- 提供静态 IP,支持 TLS 终止,处理百万级请求/秒。
- 适合管理不稳定或突发流量,避免 DNS 缓存问题。
- 网关负载均衡器(Gateway Load Balancer, GLB)
- 主要用于第三方虚拟网络设备的部署,流量不会在多个目标间自动分配。
- 功能较为专业,对大多数用户而言应用场景有限。
AWS 负载均衡器工作原理
AWS 负载均衡器通过**侦听器(Listener)**检查客户端请求,根据配置的端口和协议将请求路由到注册的实例。运行状况检查保证仅向健康实例发送流量。默认情况下,负载均衡器会在已启用的可用区之间均匀分配流量,并建议每个可用区实例数量大致相等以提高容错能力。
- 内部负载均衡器(Internal ELB):仅在 VPC 内部可访问,适合私有子网应用。
- 外部负载均衡器(Internet-facing ELB):节点拥有公有 IP,可被互联网访问。
通过与 Auto Scaling(ASG) 配合,ELB 可以自动识别故障实例并淘汰,同时启动新实例,保持应用高可用。ASG 会验证实例健康状况,并与 ELB 协同保证流量仅路由到正常运行的实例。
高级功能与配置
- 路径路由(Path-based routing):ALB 可根据 URL 路径将流量定向至不同后端服务。
- 基于主机的路由(Host-based routing):同一 ALB 支持多个域名的请求分发。
- 反向代理:ALB 可作为反向代理,实现请求分发与负载平衡,但仅支持静态目标。
- 多端口负载分配:支持单实例多个端口注册,提高容器化应用性能。
- 跨区域负载均衡:可在不同 AWS 区域间均匀分配流量,提高全球可用性。
- 安全集成:支持 SSL/TLS 加密、AWS WAF 防护与 IAM 认证。
配置负载均衡器时,需要:
- 选择负载均衡器类型(ALB、NLB 或 GLB)
- 设置可用区与子网
- 配置安全组与端口
- 创建目标组并注册实例
- 设置健康检查策略
- 测试并上线
AWS 负载均衡器局限性
虽然 ELB 在高可用性和弹性方面表现优异,但仍存在一些限制:
- 延迟:尤其在后端实例 CPU 或内存使用率高、网络配置不当时,可能出现请求延迟。
- 目标组限制:NLB 对目标组内实例数量有配额限制,可通过垂直扩展或多个 NLB 解决,但无法完全消除。
- 连接稳定性:单个 NLB 在处理大量已建立连接时,偶尔会出现短暂断开。
- 功能限制:传统 ELB 缺乏实时应用分析、跨云流量管理及复杂负载均衡策略。
实践建议与优化策略
在实际应用中,选择合适的 AWS 负载均衡器类型至关重要。对于微服务架构或多服务 Web 应用,ALB 提供了基于路径和主机名的灵活路由,使不同服务可共享同一负载均衡器,从而降低成本并简化管理。同时,ALB 原生支持 WebSocket 和 HTTP/2 协议,便于构建实时交互应用或多请求复用场景。
对于需要处理高并发和突发流量的应用,如大型电商促销、金融交易或在线游戏,NLB 更为适用。其静态 IP 和低延迟特性可确保关键业务的稳定性,并兼容现有防火墙策略。结合 TLS 终止功能,NLB 还能卸载服务器加密压力,提高整体性能。
此外,结合 Auto Scaling 使用负载均衡器,可以根据流量波动动态调整实例数量,实现真正的弹性伸缩。例如,在流量高峰期自动启动更多实例分担压力,低峰期回收实例降低成本,同时负载均衡器自动剔除异常实例,保障应用持续可用。
为了进一步优化性能,用户可以启用跨区域负载均衡或多可用区部署,实现全球流量均衡和灾备能力。配合 CloudWatch 监控指标,能够实时追踪请求延迟、目标实例健康状况及流量分布,帮助开发者及时调整策略。
总体而言,AWS 负载均衡器不仅提升了应用的可用性和可靠性,也提供了灵活的路由和安全功能。通过合理选择类型、配置目标组和启用扩展策略,企业能够在云环境中构建高性能、弹性和可维护的应用架构。
高级替代方案
在云上 高级负载均衡器平台中,提供比 AWS 原生 ELB 更丰富的企业级功能:
- 高级 HTTP 内容交换与持久化功能
- 可定制健康监控
- 跨多云 DNS 与全局负载均衡(GSLB)
- 按需自动扩展与实时流量分析
- 更强大的安全策略与应用策略支持
- 这些功能不仅满足复杂的企业级需求,还能弥补 ALB、NLB 在实时分析、跨云管理和自动化方面的不足。