AWS ELB
AWS Elastic Load Balancing (ELB)
第一章:ELB 核心概念
Elastic Load Balancing (ELB) 是一种高度可用且可扩展的服务,它能自动将传入的应用程序或网络流量分发到多个目标(如 EC2 实例、容器 ECS、Lambda 函数和 IP 地址)。
1. 核心运行逻辑
- 多可用区部署:创建负载均衡器时,必须从至少两个可用区(AZ)中各指定一个公共子网。这确保了当某个 AZ 发生故障时,流量可以自动导向其他健康的 AZ。
- 健康检查:ELB 持续监控注册目标的健康状况,并仅将请求路由到健康的实例。
- 删除保护:建议开启此功能,防止负载均衡器被意外删除。
- SSL 卸载 (SSL Offloading):ELB 可以终止来自客户端的 SSL 连接,并以非加密形式将请求发送到后端,从而减轻后端服务器的计算压力。
第二章:三种核心负载均衡器类型对比
1. Application Load Balancer (ALB) —— 应用层 (L7)
ALB 工作在 OSI 模型的第七层,专门处理 HTTP 和 HTTPS 流量。
- 智能路由规则:
- 基于路径的路由:例如将
/api发往一组服务器,将/images发往另一组。 - 基于主机名的路由:例如根据域名
example.com或test.com进行分发。 - 基于查询字符串/HTTP 标头/HTTP 方法的路由。
- 基于路径的路由:例如将
- 高级功能:
- 支持重定向:可将 HTTP 请求自动重定向到 HTTPS。
- 自定义响应:可以直接返回固定的 HTTP 响应(如 404 或 200)。
- Lambda 集成:可以将 Lambda 函数作为目标组。
- gRPC 支持:适用于高性能微服务通信。
- 身份验证:支持 OIDC 兼容的身份提供商和 Amazon Cognito。
- 双栈支持:支持 IPv4 和 IPv6 目标。
2. Network Load Balancer (NLB) —— 传输层 (L4)
NLB 工作在第四层,专门处理 TCP、UDP 和 TLS 流量,适合对性能要求极高的场景。
- 极致性能:能够处理每秒数百万次的突发请求,延迟极低。
- 静态 IP 地址:每个启用的可用区都会获得一个静态 IP,并且可以关联弹性 IP (EIP)。这是需要防火墙白名单场景的首选。
- 源 IP 保留:对于实例类型目标,NLB 可以直接透传客户端的原始 IP 到后端。
- ALB 作为目标:NLB 可以直接将流量转发到 ALB(仅限 TCP 监听器)。
- QUIC 协议支持:适用于超低延迟的流媒体和通信。
3. Gateway Load Balancer (GWLB) —— 网络层 (L3)
GWLB 用于在 VPC 前端部署、扩展和管理第三方虚拟防火墙、入侵检测系统 (IDS/IPS) 等设备。
- 透明代理:在网络层运行,流量透明地传递给注册的安全设备,不执行 SSL 卸载等操作。
- GWLB 终端节点:通过终端节点创建安全、低延迟的连接。
第三章:关键高级特性深度解析
1. 跨可用区负载均衡 (Cross-Zone Load Balancing)
- 开启后:负载均衡器会将其流量均匀分发到所有已启用的 AZ 中的所有注册目标。
- 默认状态:ALB 默认启用(不收跨区流量费);NLB 默认禁用。
2. 会话保持 (Sticky Sessions)
- 功能:将同一用户的多次请求始终导向同一个后端目标。
- ALB 实现:通过负载均衡器生成的 Cookie 或应用程序自定义的 Cookie 来实现。
3. 慢启动模式 (Slow Start)
- 功能:给新加入的目标组的实例一段时间进行“预热”,在这段时间内,发送给它的请求量会逐渐增加。
4. 注销延迟 (Deregistration Delay / Connection Draining)
- 功能:当某个实例被注销或健康检查失败时,ELB 会停止发送新请求,但允许现有的在途请求在超时时间内完成处理。
第四章:健康检查状态全解析
目标在负载均衡器中会有以下几种状态:
- Initial:正在注册目标或健康检查正在进行中。
- Healthy:目标健康,可以接收流量。
- Unhealthy:目标未响应健康检查或检查失败。
- Unused:目标未注册到目标组,或者目标组未关联到监听器规则。
- Draining:目标正在注销,正在进行连接排空处理。
第五章:安全与合规
- TLS 1.3 支持:ALB 和 NLB 均支持最新的 TLS 1.3 协议。
- WAF 集成:支持“一键式”关联 AWS WAF 网页应用防火墙(仅 ALB)。
- 身份验证:ALB 支持 JWT (JSON Web Token) 验证和相互 TLS (mTLS) 身份验证。
- 安全组:可以直接将安全组关联到 ALB 和 NLB,以过滤进出负载均衡器的流量。
第六章:架构师对比与决策速查
| 特性 | Application (ALB) | Network (NLB) | Gateway (GWLB) |
|---|---|---|---|
| 层级 | Layer 7 | Layer 4 | Layer 3 |
| 协议 | HTTP, HTTPS, gRPC | TCP, UDP, TLS | IP |
| 性能 | 高 (秒级扩展) | 极致 (亚秒级扩展) | 高 |
| 固定 IP | 不支持 (仅 DNS) | 支持 (静态 IP / EIP) | 不支持 |
| 路由 | 路径、主机、查询参数 | 仅监听器端口/协议 | 不支持 |
| 身份验证 | 支持 | 不支持 | 不支持 |
| SSL 卸载 | 支持 | 支持 | 不支持 |
第七章:监控与日志
- CloudWatch 指标:实时获取请求计数、延迟、错误率等数据。
- 访问日志 (Access Logs):详细记录发往负载均衡器的每一个请求,存储在 S3 桶中。
- VPC Flow Logs:监控进入 NLB 的网络流数据。
- CloudTrail:审计所有对 ELB API 的调用。
第八章:计费逻辑
- ALB/NLB:按小时计费,并按使用的 LCU(负载均衡器容量单位)计费。
- GWLB:按小时计费,并按使用的 GLCU 计费。
- CLB:按小时计费,并按数据传输量(GB)计费。