大数跨境
0
0

AWS上的负载均衡器设计和功能比对

AWS上的负载均衡器设计和功能比对 GoBuddy云赋
2023-10-13
0
导读:本文将详细探讨AWS上的不同类型的负载平衡器和详细设计。

   更多动态与干货,请持续关注我们  

前言

负载均衡器通常是运行在一个专用节点上的软件,用于接受前端的请求并将它们分散地发往后端的应用节点。对于云原生架构而言,由于应用节点变动频繁,为了确保后端应用的性能,安全和可用性,负载均衡器的设计和使用变得更为关键。本文将详细探讨AWS上的不同类型的负载平衡器和详细设计。



一、AWS负载均衡器选项


在AWS中,共有3种负载均衡器(ELB)类型供选择:

• Application Load Balancer (ALB): 7层的负载均衡器,适用于HTTP/HTTPS流量的分发。

• Network Load Balancer (NLB): 4 层的负载均衡器,适用于TCP, UDP, TLS流量的分发。

• Classic Load Balancer (CLB): 符合HTTP/HTTPS/TCP协议的上一代产品。

ELB是由AWS完全托管的服务,用户无需关心承载其功能的底层计算资源。对于需要将本地应用迁移至AWS的用户而言,ELB能提供以下优势:

• 配置简便,支持多种后端应用

• 提供后端实例的健康检查和粘性会话功能

• 内置高可用和横向扩展功能

• 更好地与其他AWS服务(例如CloudWatch)集成


二、NLB vs ALB


从根本上来说,负载均衡器被归为4层还是7层取决于其处理的信息类型。例如,HTTP头部仅能在OSI模型的第7层获取,因此如果要在路由策略中将其纳入考量,就必须使用7层负载均衡器。

在AWS中,NLB工作在OSI模型的第4层。一般来说,NLB能提供比ALB更低的延迟,因为其在做出路由决定的时候处理的信息量更少。然而,总体上应用的性能会根据总体信息的处理需求而变化。例如,假使一个应用正在使用NLB来降低延迟,但却在应用节点上处理HTTP头部检查,使用ALB并在ALB上处理HTTP头部检查反而能降低更多的延迟。

与NLB不同,ALB是代理负载均衡器,意味着ALB维持两个不同的连接:一个介于客户端和负载均衡器节点之间,一个介于负载均衡器和后端目标之间。

当选择使用NLB或ALB时,有许多需要考虑的因素。总体来说,使用NLB还是ALB取决于用于决定路由的信息的位置。如果一个应用需要在到达后端目标之前完成检查,ALB就是必需的。如果应用仅仅依靠第4层的信息检查,NLB通常会是更好的选择。


三、后端目标


后端目标的类型以及如何注册到负载均衡器是在设计负载均衡架构时必须考虑的。当一个目标注册到一个负载均衡器之后,负载均衡器会开始将客户端请求路由到后端实例。在一个云原生环境中,后端目标的数量变化会比传统物理环境中更为频繁,用户必须考虑动态应用的节点如何注册到负载均衡器。

ELB使用目标群组来将请求路由到一组后端目标。目标群组是响应客户端请求的一组类似的计算资源。和大多数负载均衡方案类似,ELB会执行健康检查并且只将流量发往健康的后端实例。

特殊的计算资源,例如AWS Lambda,只能与ALB(或者Amazon API Gateway)结合使用。Lambda是一种无服务器的计算平台,提供自身的横向扩展和高可用性,因此,只要一个Lambda函数注册到ALB,便无需任何其他配置。

如果目标群组使用EC2的实例ID,您可以附加Auto Scaling组到目标群组。一个Auto Scaling组包括一个具有自动伸缩功能的一组EC2实例的集合。附加之后,由Auto Scaling组创建或删除的实例将自动与负载均衡器注册和注销。实例注册之前,它们必须通过负载均衡器的健康检查。如果某个实例没有通过健康检查,就会从目标群组中被移除。在实例被注销之前,ELB会选择性执行连接耗尽以确保请求在实例被注销之前已经完成。

ELB也能和ECS(Amazon Elastic Container Service)结合使用以将流量均分到不同的后端容器实例。只要连接到负载均衡器,容器在Auto Scaling组中就和实例完全一致,也需要通过健康检查并且会在检查失败时被移除。在与ECS相结合的场合,ALB会是比NLB更好的选择,因为ALB可以提供一些额外的功能,包括动态主机端口映射(允许同一个容器实例执行多个任务)和支持基于路径的路由(允许多个服务使用同一个ALB侦听端口)。

另外,仍然在使用经典版EC2的公司可以考虑CLB方案,但需要注意的是,相比ALB和NLB,CLB仅提供有限的功能并且在绝大部分场景下不推荐使用。


四、请求检查


负载均衡器在路由请求时需要对请求进行检查并且和定义好的规则相比对。在ELB上,每个端口都会定义侦听器规则并且会包含优先级和一个或多个条件。
资源池切换
一些负载均衡器架构可能需要动态改变后端目标来回应请求。例如,一些较大的请求可能需要被导向到一个其他的目标群组中来处理。当您创建一个ELB侦听器规则的时候,根据ELB类型的不同(ALB,NLB,CLB),可用的请求属性也会不同。ELB不支持加入自定义检查属性,因此如果您的应用需要这样的属性,就需要第三方的负载均衡器来实现,例如EC2中的Nginx。ELB同样不支持更改更改侦听器规则,但应用可以更改一个已经存在的ELB规则的优先级以通过CLI或SDK来将请求路由到相关的位置。另外,CloudWatch Event可以用来触发Lambda函数以更改ELB配置。
负荷扫描
ELB本身不支持负荷扫描,但ALB却可以结合AWS WAF来检查传入的HTTP流量并部署复杂的自定义规则。WAF规则可以用于根据IP地址段,请求属性,请求大小或更多条件来允许或阻止请求。当使用ALB时,WAF会在请求到达ALB之前评估或拦截请求。对于有负荷扫描需求的公司,ALB结合WAF会是一个简单且可扩展的方案。

五、高级监控


负载均衡器可以帮助用户分析流量趋势,排除故障并提升应用的性能和安全性。负载均衡器上常见的监控包括:

• 访问日志:捕获细节信息,包括每个请求的源ip地址,URL等

• 性能和参数: 捕获的统计数据,例如活动连接数,HTTP响应代码等 

• HTTP请求跟踪:使用自定义HTTP头部来跟踪请求

 • 管理和治理:捕获修改负载均衡器的细节信息,例如用户ID,时间戳等


六、SSL/TLS卸载和证书管理


SSL/TLS卸载是终止在负载均衡器上的SSL/TLS连接和代理请求送到后端目标的过程。这一过程一般是为了通过将加解密操作从应用节点移到负载均衡器节点处理,以提升后端应用的性能。SSL/TLS卸载仅适用于应用节点部署在私有子网中的场景,因为其过程中需要将未加密的流量发往应用节点。
传统的负载均衡方案,例如EC2上的Nginx。管理SSL/TLS证书较为复杂,因为证书必须保存在每个负载均衡器节点上。ALB或NLB与AWS Certificate Manager结合,可以集中存放,部署和升级公有和私有SSL/TLS证书。

七、多协议支持


很多云原生应用仅依靠HTTP和HTTPS来进行通信。然而,一个应用也可能需要多协议支持,例如FTP。这样您的负载均衡器就需要支持这些协议和端口的组合。

ALB仅支持HTTP和HTTPS协议,但NLB支持TCP,TLS,UDP等协议,比ALB更为灵活。


八、空间连接



如果一个应用有长时间存活的请求,即需要超过15秒时间来完成,就需要考虑连接的空闲超时。空闲超时是指一个负载均衡器在没有接收或发送任何数据的情况下保留某个连接处于打开状态的时间。ALB的空闲超时时间可以设置在1-4000秒之间,默认60秒。ALB会保留两个链接,一个位于客户端和负载均衡器之间,一个位于负载均衡器节点和后端目标之间。较高的空闲超时会造成大量未被使用的连接处于打开状态,加大负载均衡器和后端应用的负载,降低应用的性能并增加开销。对于NLB来说,空闲超时默认为350秒并且无法改变。由于NLB的连接限定在客户端和负载均衡器之间,TCP Keepalive包也是一个可行的选项。

九、典型负载均衡架构



物理环境架构
下图展示了一个典型的物理环境中的负载均衡架构,通常其必须满足以下需求:
•提供给负载均衡器节点一个静态IP地址
•执行HTTP头部检查并将流量发往合适的后端目标
•基于客户端IP地址的黑白名单规则设置
•收集并储存所有的访问日志5年
•在同一个负载均衡器上安装多个SSL/TLS证书
AWS环境架构
相比传统的物理环境,在AWS环境中,负载均衡的大部分功能都能通过AWS托管的服务来实现,以下是一个典型的AWS环境负载均衡架构:
此架构能通过以下这些服务满足同样的需求:
•AWS全局加速器用于应用的可用性和性能,同时提供静态IP地址给应用消费者。
•AWS WAF用于实现复杂的黑白名单配置,同时提供内置的SQL注入等攻击的拦截功能。
•AWS证书管理器用于提供,升级证书或部署您自己的SSL/TLS证书到ELB上。有了证书管理器,您可以集中管理多个证书并部署一个或多个证书到ELB节点上。
•ALB与两个目标群组结合部署来将流量路由到后端目标,目标群组分别为Auto Scaling组中的EC2实例和一个Lambda函数,目标群组都具有弹性,能动态扩展以应对当前的流量。
•ALB上配置访问日志。这些日志转存到配置了生命周期策略的S3,30天后将访问日志移动至Glacier。

十、总结


对于需要将IT架构迁移到AWS的用户而言,摒弃现有的负载均衡架构并以基于ELB的架构取而代之,不但可以降低运维成本,而且无需牺牲任何现有的功能。除了ELB,AWS还提供一系列和ELB紧密集成的其他服务来提升各个应用的性能和安全性。




GoBuddy云赋是中国企业出海一站式服务提供商;提供云转售、迁移、解决方案、技术支持等专业服务,助力中国出海企业降本增效。


任何问题咨询或交流,可直接后台发送消息,我们会及时回复。

【声明】内容源于网络
0
0
GoBuddy云赋
Go Buddy云赋是中国企业出海一站式服务提供商;提供云转售、迁移、解决方案、技术支持等专业服务,助力中国出海企业降本增效。
内容 5
粉丝 0
GoBuddy云赋 Go Buddy云赋是中国企业出海一站式服务提供商;提供云转售、迁移、解决方案、技术支持等专业服务,助力中国出海企业降本增效。
总阅读2
粉丝0
内容5