1.AWS 中的负载均衡器概述
- 负载均衡器类型:Application Load Balancer (ALB)、Network Load Balancer (NLB)、Classic Load Balancer (CLB)
- ALB 最适合 HTTP/HTTPS 流量,并在第 7 层(应用层)运行。
- NLB 适用于 TCP/UDP 流量,并在第 4 层(传输层)运行。
- CLB(旧版)在 4 层和 7 层运行,但在现代架构中很少使用。
2.Application Load Balancer (ALB) 功能
- 七层负载均衡:ALB 可以执行基于 HTTP(S) 请求的路由,包括 URL 路径、HTTP 头、查询参数和基于主机的路由。
- 基于内容的路由:ALB 可以根据 URL 路径或主机名将流量路由到不同的目标组(例如,“/images”可以转到一个目标组,而“/api”可以转到另一个目标组)。
- 基于主机的路由:ALB 允许基于域名的路由(例如,“api.example.com”与“www.example.com”)。
- 基于路径的路由:根据请求的 URL 路径,流量可以定向到不同的服务。
- WebSocket 支持:ALB 支持 WebSocket 连接,以实现实时、双向通信。
- SSL 终止:ALB 支持 HTTPS 终止,从而从后端服务器卸载加密/解密工作。
- 跨区负载均衡:在不同可用区中的目标之间均匀分配流量。
- 健康检查:ALB 持续检查目标组中目标的健康状况,并仅将流量路由到运行状况良好的实例。
3.目标群体和目标
- 目标组:ALB 将请求路由到目标组。目标可以是 EC2 实例、Lambda 函数、IP 地址或容器 (ECS)。
- 目标类型:
- EC2 实例:您向 ALB 注册 EC2 实例。
- Lambda 函数:ALB 可以将流量路由到 AWS Lambda 函数。
- IP 地址:ALB 可以将流量直接路由到 IP 地址(适用于本地或混合环境)。
- 容器:ALB 支持 ECS 中的容器化应用程序。
4.侦听器和规则
- 侦听器:侦听器是检查连接请求的进程。ALB 支持 HTTP(端口 80)和 HTTPS(端口 443)监听器。
- 侦听器规则:您可以根据条件(如路径或主机标头)定义特定规则,以将请求转发到相应的目标组。
- 默认规则:如果没有与请求匹配的特定规则,ALB 将使用默认规则。
5.ALB 安全
- 安全组:ALB 安全组控制对 ALB 的访问。
- SSL/TLS 加密:使用 HTTPS(SSL/TLS 证书)保护客户端和 ALB 之间的流量。
- WAF 集成:AWS WAF (Web Application Firewall) 可与 ALB 一起使用,以保护您的 Web 应用程序免受常见的 Web 攻击。
6.使用 ALB 进行扩展
- 使用目标组进行 Auto Scaling:您可以将目标组与 Auto Scaling 组相关联,以确保您的应用程序根据流量自动扩展。
- 流量分配:ALB 会自动均衡每个目标组中健康目标之间的流量。
- 静态内容缓存:您可以将 ALB 与 Amazon CloudFront 结合使用,以缓存静态内容并减少后端服务的负载。
7.ALB 的用例
- 微服务架构:ALB 非常适合根据 URL 或主机标头将请求路由到不同的微服务。
- 容器化应用程序:ALB 与 ECS 结合使用,为管理容器化应用程序的流量提供了可扩展且灵活的解决方案。
- 无服务器应用程序:ALB 可与 AWS Lambda 一起使用,以将 HTTP 请求路由到无服务器函数。
- 混合架构:ALB 可以通过 IP 地址目标将流量路由到 EC2 实例和本地基础设施。
8.定价和成本考虑
- 定价模型:使用 ALB 的成本取决于其运行的小时数和负载均衡器处理的数据量。
- 请求成本:ALB 还根据处理的请求数量收费。
- 数据传输成本:在 AWS 和客户端之间传输数据的成本,尤其是在您有跨区域请求时。
9.ALB vs. NLB vs. CLB
- 知识点:与CLB相比,CLB工作在第4层(TCP)和第7层(HTTP/HTTPS),ALB严格工作在第7层且路由能力更先进;与NLB相比,NLB工作在第4层(TCP/UDP),适合高性能、低延迟流量,ALB用于基于内容规则的HTTP/HTTPS流量路由。
- 注意事项:根据业务对流量处理和路由需求的不同,准确选择合适的负载均衡器类型。
- ALB 最适合 HTTP/HTTPS 流量、第 7 层路由以及 WebSockets 和 SSL 终止等高级功能。
- NLB 适用于 TCP/UDP 流量、极高性能和静态 IP 地址。
- CLB 是一个传统选项,它结合了第 4 层和第 7 层功能,但现在仅推荐用于传统用例。
10.ALB 故障排除
- 访问日志:ALB 访问日志提供有关请求和响应的详细信息,包括请求路径、状态代码和延迟。
- CloudWatch 指标:ALB 提供请求计数、错误率、延迟和运行状况良好的主机计数的 CloudWatch 指标,这有助于诊断问题。
- 运行状况检查:了解和配置目标的运行状况检查对于确保流量仅路由到运行状况良好的目标至关重要。
11.ALB基本概念
- 知识点:ALB即应用程序负载均衡器,工作在应用层(第7层),可基于URL、主机头或查询字符串等内容路由流量,适用于HTTP和HTTPS流量,支持基于路径、主机的路由及SSL终止等功能。
- 注意事项:要清楚ALB适用的流量类型和可实现的具体功能,在实际应用中根据需求选择合适的负载均衡方式。
12.ALB特性
- 知识点:支持基于主机头和URL路径的路由,可实现SSL终止、WebSocket连接,通过粘性会话(会话亲和性)保证同一客户端请求定向到同一后端,能将请求转发到包含EC2实例、IP地址或Lambda函数的目标组,支持跨可用区负载均衡和HTTP/2协议。
- 注意事项:配置时需根据业务需求合理选择和配置各功能,如设置粘性会话时要考虑会话保持的时长和影响。
13.安全和合规
- 知识点:与安全组和网络访问控制列表(NACLs)集成控制进出流量,需配置SSL证书以在ALB监听器上启用HTTPS,可集成AWS WAF保护应用免受常见网络攻击。
- 注意事项:要及时更新和管理SSL证书,确保其有效性,合理配置安全组和NACLs规则,避免限制过度或不足。
14.ALB监听器规则
- 知识点:可配置监听器规则,根据URL路径或查询字符串等因素确定如何路由流量。
- 注意事项:规则配置要准确,避免规则冲突或覆盖导致流量路由错误。
15.目标组和健康检查
- 知识点:支持EC2实例、IP地址和Lambda函数作为目标,可自动进行健康检查,还可配置目标组的健康检查。
- 注意事项:合理设置健康检查的参数,如检查路径、频率等,确保能准确反映目标的健康状态。
16.自动扩展和高可用性
- 知识点:可根据传入流量自动扩展,支持跨多个可用区分配流量以实现高可用性和容错,能与AWS Auto Scaling集成根据需求扩展EC2实例。
- 注意事项:要设置合适的自动扩展策略,避免过度扩展或扩展不及时。
17.ALB与微服务和容器集成
- 知识点:可与ECS和EKS集成,为容器化应用提供负载均衡能力。
- 注意事项:在集成时要确保各服务之间的配置和网络设置正确,保证流量正常路由。
18.常见场景和最佳实践
- 知识点:常见场景包括基于主机名和路径路由流量、配置SSL终止和将HTTP流量重定向到HTTPS。
- 注意事项:根据具体业务场景选择最佳路由策略,配置SSL终止和重定向时要注意证书配置和重定向规则的正确性。
19.故障跟踪和监控
- 知识点:在Amazon CloudWatch中提供请求计数、延迟和错误率等指标,可启用访问日志跟踪流经负载均衡器的所有HTTP请求。
- 注意事项:定期查看监控指标和日志,及时发现和解决潜在问题。