1.负载均衡器的类型
需要了解三种类型的 ELB:
- Application Load Balancer (ALB) **:
- 在 HTTP/HTTPS 层(OSI 模型的第 7 层)运行。
- 非常适合路由 HTTP/HTTPS 流量。
- 支持高级路由功能,例如基于 URL 的路由、基于主机的路由和 WebSocket 支持。
- 可以根据请求内容(例如,路径或主机名)将流量路由到不同的目标组。
- 支持容器化应用程序(例如 ECS 和 EKS)和微服务架构。
- 网络负载均衡器 (NLB)**:
- 在 TCP 级别(OSI 模型的第 4 层)运行。
- 非常适合处理高吞吐量和低延迟流量。
- 专为极致性能而设计,每秒能够处理数百万个请求。
- 支持静态 IP 地址和弹性 IP。
- 通常用于非 HTTP 流量,例如数据库连接或 IoT 应用程序。
- Classic Load Balancer (CLB) **:
- 在 HTTP/HTTPS 和 TCP** 级别运行。
- 支持基本的负载均衡功能,通常用于传统应用程序。
- 不支持基于路径或基于主机的路由等新功能。
2.目标群体和目标
- 目标群体 :
- 目标组是负载均衡器将流量路由到的目标(EC2 实例、Lambda 函数、IP 地址或容器)的集合。
- 目标组与 ELB 监听器关联,根据规则将流量路由到特定的目标。
- 健康检查 :
- 每个目标组都可以配置运行状况检查,确保流量仅路由到运行状况良好的实例。
- 运行状况检查配置包括协议、端口、路径(适用于 HTTP/S)和运行状况阈值设置。
- 目标类型 :
- EC2 实例、IP 地址、Lambda 函数和容器 (ECS/EKS) 可以注册为目标。
3.听众
- 侦听器 是检查来自客户端的连接请求(如 HTTP 或 HTTPS)的进程。它与特定端口相关联(例如,HTTP 的端口 80,HTTPS 的端口 443)。
- 侦听器规则指定负载均衡器如何根据请求内容将流量路由到不同的目标组(例如,ALB 的基于路径或基于主机的路由)。
- 您可以在 ALB 或 NLB 上配置 SSL 终止,以从您的目标中卸载加密/解密过程。
4.跨区负载均衡
- 跨区负载均衡允许在所有可用区之间分配流量,确保在所有目标之间均匀分配负载,而不管可用区如何。
- ALB 默认开启此功能,但 NLB 和 CLB 可能需要特定配置。
5.安全功能和集成
- SSL/TLS 终止:ALB 和 NLB 可以终止 SSL/TLS 连接,从而从您的后端实例中卸载加密和解密过程。
- Web 应用程序防火墙 (WAF):您可以将 AWS WAF 与 ALB 集成,以保护您的 Web 应用程序免受常见的 Web 漏洞(例如 SQL 注入、跨站点脚本)的攻击。
- 访问控制 :ELB 可以与安全组相关联,以控制访问和管理入站/出站流量。
- 侦听器规则:对于高级路由和负载均衡,您可以在 ALB 上定义侦听器规则,以根据请求(例如主机名、路径)将流量路由到不同的目标组。
6.使用 ELB 自动扩展
- ELB 通常与 Auto Scaling 结合使用,以根据流量动态调整正在运行的 EC2 实例的数量。
- 自动扩展可确保您的应用程序有足够的资源来处理流量峰值,而 ELB 在可用实例之间均匀分配流量。
7.与其他 AWS 服务集成
- ECS/EKS:ECS (Elastic Container Service) 和 EKS (Elastic Kubernetes Service) 都使用负载均衡器将流量分配到容器化应用程序。
- Lambda:借助 ALB,您可以将 AWS Lambda 函数注册为目标,以将流量直接路由到无服务器函数。
- CloudWatch 指标:ELB 提供与 CloudWatch 的集成,以便根据各种指标(例如请求计数、响应时间和运行状况良好/运行状况不佳的主机计数)进行监控和设置警报。
8.扩展和性能注意事项
- 弹性:ELB 会自动扩展或缩减以应对流量的变化。
- 会话粘性 (Sticky Sessions):在某些情况下,您可能需要确保来自同一客户端的请求被路由到同一实例(例如,对于有状态的应用程序)。这是通过 ALB 中的会话 Cookie 处理的。
9.高可用性和容错能力
- ELB 具有高可用性和容错能力,能够在多个可用区 (AZ) 之间分配流量。
- 可用区隔离:AWS 中的 ELB 会自动检测运行状况不佳的目标,并将流量重新路由到不同可用区中运行状况良好的实例。
10.定价注意事项
- ELB 定价基于负载均衡器运行的小时数和负载均衡器处理的数据量。
- 定价因负载均衡器类型(ALB、NLB 或 CLB)和处理的请求数量、传输的数据和区域等因素而异。
11.故障排除和日志记录
- 访问日志:ELB 访问日志提供有关发送到负载均衡器的请求的详细信息,可用于故障排除和监控。
- CloudWatch Logs:指标和日志可以发送到 Amazon CloudWatch 进行进一步分析。
知识点
- 类型:Classic Load Balancer (CLB)是传统负载均衡器,为EC2实例提供基本负载均衡功能;Application Load Balancer (ALB)主要处理HTTP和HTTPS流量,支持基于主机、路径的高级路由,适用于现代Web应用和微服务架构;Network Load Balancer (NLB)用于TCP/UDP流量,能以低延迟处理每秒数百万请求,支持SSL/TLS终止并可将加密流量转发到后端服务器;Gateway Load Balancer (GLB)主要用于将流量导向虚拟网络功能。
- 路由和目标组:负载均衡器可基于多种规则将流量路由到目标组,目标组包含要接收流量的实例等目标,需合理配置以确保流量正确分发。健康检查用于确定目标实例的健康状态,负载均衡器会根据检查结果决定是否向实例发送流量。
- 与自动缩放集成:ELB与Auto Scaling配合,新实例自动注册到负载均衡器,流量在Auto Scaling组的所有健康实例间均匀分配,实现弹性伸缩。
- 安全功能:SSL/TLS终止可在负载均衡器处处理加密连接,减轻后端服务器负担。安全组用于控制进出负载均衡器及关联实例的流量。AWS WAF可创建自定义安全规则,AWS Shield提供DDoS攻击防护,它们与ELB集成增强安全性。
- 高可用性和容错:ELB可跨多个可用区分布流量,确保即使某个可用区出现问题,应用仍可正常处理流量。启用跨区负载均衡能使流量在所有可用区均衡分布。
注意事项
- 类型选择:CLB适用于对功能要求简单的遗留系统;需基于内容或高级路由的HTTP/HTTPS流量选ALB;处理高流量、低延迟的TCP/UDP流量优先考虑NLB。
- 安全配置:及时更新SSL/TLS证书,定期审查和更新安全组规则,合理配置AWS WAF规则,避免误拦截正常流量。
- 健康检查:合理设置健康检查参数,确保能准确反映实例健康状态,避免因检查过于宽松或严格导致流量分配问题。
- 与其他服务集成:确保ELB与Auto Scaling、AWS Certificate Manager等其他服务的集成配置正确,如Auto Scaling组的实例启动配置和ELB的目标组设置需匹配,以保证实例正常注册和流量分发。
- 成本优化:根据实际流量需求选择合适的负载均衡器类型和规格,避免资源浪费。如高流量场景可启用HTTP/2提高性能,减少资源使用。