赞
踩
目录
传统负载均衡器(Classic Load Balancer)
粘性会话/会话关联(Sticky Sessions/Session Affinity)
应用程序负载均衡器(Application Load Balancer)
网络负载均衡器(Network Load Balancer)
ELB
我们在AWS控制台创建负载均衡器类型时,会发现有三个选项可以选择,分别是应用负载均衡器(ALB),网络负载均衡器(NLB),经典负载均衡器(CLB)。
弹性负载均衡器(Elastic Load Balancer)。Amazon 将 ELB 分成三种不同类型
1、ALB
应用程序负载均衡器(Application Load Balancer)
应用程序级别(第 7 层)
支持基于内容的路由和在容器中运行的应用程序。
2、NLB
网络负载均衡器(Network Load Balancer)
在连接级别运行(第 4 层)
适合实现传输控制协议 (TCP) 流量负载均衡,且能够在每秒处理数百万请求的同时保持超低延迟。
3、CLB
经典负载均衡器(Classic Load Balancer)
CLB是AWS的上一代负载均衡器,支持TCP、SSL/TLS、HTTP、HTTPS协议,是AWS的三种负载均衡器支持协议最多的。
在应用程序级别(第 7 层)和连接级别(第 4 层)运行
非常适合内置于 Amazon EC2-Classic 网络的应用程序。
ELB在每一个健康检查间隔(HealthCheck Interval)都会向所有已注册的实例发送基于Ping、端口或者(网页)路径的检查数据包,并且在响应超时(Response Timeout)这个时间内等待实例的回复。如果连续没有得到回复的次数超过定义的不健康阈值(Unhealthy Threshold),那么这个实例会被标记为OutofService。如果在连续得到实例回复的次数超过了健康阈值(Healthy Threshold)的话,那么这个实例会被重新标记为Inservice状态。
默认情况下,一个已注册再ELB的EC2实例取消了注册或者进入OutofService状态,那么ELB会马上切断这个实例正在进行的连接。
为了保证Classic Load Balancer中当有实例变成不健康的状态(OutofService)或者正在取消注册,而该实例上已经建立的连接不受影响, 请启用Connection Draining功能。它能保证该不健康的实例在处理完所有已有的连接请求之后,才真正地从ELB内去除,接着ELB不会再转发请求给这个实例。
Connection Draining的可设置时间限制范围是1~3600秒(默认为300秒)。当达到这个最大时限时,不管当前实例是否处理完请求,ELB都会强制关闭与这个实例的连接。
默认情况下,Classic Load Balancer会将每一个用户请求转发到负载最小的已注册实例上。但是如果启用Sticky Sessions /Session Affinity,则在会话期间ELB会将来自某个用户的所有请求都转发到同一个实例上。
应用程序负载均衡器(Application Load Balancer)工作在7层(应用层),因此也被称为7层的ELB。
在应用程序负载均衡器中,引入了规则这个概念。ELB在收到请求之后,会按照优先顺序评估侦听器的规则,然后根据定义的规则将流量转发到特定的目标组中。如下图所示,你可以配置不同的侦听器规则,然后根据流量的内容或者URL路径来将不同的请求转发到不同的目标组内,而一个目标组又包含了若干的目标(EC2实例)。
应用程序负载均衡器在其他方面和上文讲的传统负载均衡器非常类似,那他们有什么大的区别呢?
网络负载均衡器(Network Load Balancer)工作在4层(传输层),因此也被称为4层的ELB。
亚马逊弹性伸缩(Auto Scaling)能自动地增加/减少EC2实例的数量,从而让你的应用程序一直能保持可用的状态。
你可以预定义Auto Scaling,使其在需求高峰期自动增加EC2实例,而在需求低谷自动减少EC2实例。这样不仅能让你的应用程序一直保持健康的状态,而且也节省了你为EC2实例所付出的费用。
Auto Scaling 适用于那些需求稳定的应用程序,同时也适用于在每小时、每天、甚至每周都有需求变化的应用程序。
Auto Scaling的构成组件:
扩展阅读:更多关于扩展选项的内容可以查看扩展 Auto Scaling 组的大小
如果你的Auto Scaling Group中包含了分布在不同可用区的实例时,当涉及到需要终止实例的情况下,Auto Scaling Group会按照以下顺序的规律终止实例。
注意:弹性伸缩(Auto Scaling)可以和弹性负载均衡(Elastic Load Balancing)一起配合使用,这样能保证通过一个DNS地址对外提供服务,而后台能一直保证有一定数量的健康EC2实例处理相应的负载。
EC2 置放群组(Placement Group)逻辑性地把一些实例放置在一个组里面,在这个组里面的实例能享受低延迟、高网络吞吐的网络。
经典负载均衡器(Classic Load Balancer)
AWS第一代负载均衡器,支持4层协议(TCP/UDP)和7层协议(HTTP/HTTPS)。
优势:价格便宜,容易上手
劣势:效果没有NLB/ALB好
应用程序负载均衡器(Application Load Balancer)
ALB的名字为应用程序负载均衡器,支持7层协议(HTTP/HTTPS/WebSocket),不支持4层协议(TCP/UDP)。
优势:支持基于Host和Path的转发;支持粘性会话;性能比CLB好;支持按比例的流量转发;可编辑安全组
负载均衡算法:默认算法为轮询算法,还可以使用最少未完成请求算法
网络负载均衡器(Application Load Balancer)
NLB的名字为网络负载均衡器,支持4层协议(TCP/UDP)。
优势:性能最好,每秒支持百万次请求,不需要预热(ALB和CLB流量大的话需要预热扩充负债均衡服务节点);NLB的ip地址不会改变(CLB和ALB会随着时间改变,另外NLB可以分配固定弹性ip,ALB不能)
负载均衡算法:默认算法为哈希算法
ALB和NLB选择和区别
当客户的业务基于HTTP/HTTPS/Websocket时候,优先考虑使用ALB。
NLB可以处理7层的流量,但NLB不解析7层的协议,不会对协议进行处理。
如果选择了ALB,则处理不了4层的流量,主要取决于选择的负载均衡器类型。
参考:
AWS学习笔记(四) ELB CLB ALB NLB AS PG – IT Lab Service – Bing哥的博客
AWS ALB NLB CLB负载均衡器_打牛地的博客-CSDN博客_aws nlb
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。