截止现在,AWS支持三种类型的负载均衡器: Classic Load Balancer( 已停用 )、网络负载均衡器、应用程序负载均衡器和网关负载均衡器。

其中Classic Load Balancer为上一代负载均衡器,它目前只被推荐使用于仍然有实例运行在ec2-classic网络的场景,如果你需要的不是这种场景,那AWS建议使用网络负载均衡器 或 应用程序负载均衡器,因为Classic Load Balancer所提供的功能是可以被网络负载均衡器或应用程序负载均衡器替代的。

1.2 负载均衡器比较

官网上关于负载均衡器的对比可以参考: Elastic Load Balancing 功能对比

总而言之,如果需要灵活管理应用程序,AWS建议使用 Application Load Balancer。

如果应用程序需要实现极致性能和静态 IP,AWS建议使用Network Load Balancer。

如果现有应用程序构建于ec2-classic网络内,AWS建议使用Classic Load Balancer。

2. Listener和Target group

2.1 Listener

侦听器是负载均衡器用于检查连接请求的进程。

侦听器使用配置的协议和端口检查来自客户端的连接请求(如配置侦听器检查连接请求为HTTP 协议 和 80端口),侦听器定义的规则决定负载均衡器如何将请求路由到其已注册目标。

2.2 Target group

侦听器将客户端请求路由到目标组,然后目标组使用指定的协议和端口号将请求路由到一个或多个注册目标,如 EC2 实例。

在创建侦听器规则时,可以指定目标组和条件。满足规则条件时,流量会转发到相应的目标组。

但创建侦听器指定的目标组 只适用 于新一代的负载均衡器,也就是应用程序负载均衡器以及网络负载均衡器。

3. Classic Load Balancer

3.1 环境准备

以下需要准备两台EC2,并安装配置NGINX,假设分别为lin和lin2。

关于如何通过putty连接EC2以及切换到root可以参考: EC2日志内容推送至CloudWatch

1) 切换到root安装NGINX。

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx

2) 修改默认INDEX文件。

cd /usr/share/nginx/html
vim index.html

两台EC2的<h1>分别更新为:

<h1>Welcome to BAS blog1!</h1>

<h1>Welcome to BAS blog2!</h1>

3) 启动NGINX。

systemctl start nginx

4) 访问: http://54.219.12.182/index.html ,其中ip为EC2的公网ip。

3.2 创建CLB

进入到 elb创建 页面可以看到,clb已经被停用了。

4. Application Load Balancer

Application Load Balancer 在请求级别(第 7 层)运行,根据请求的内容将流量路由到目标(EC2 实例、容器、IP 地址和 Lambda 函数)。

Application Load Balancer 非常适合 HTTP 和 HTTPS 流量的高级负载平衡,提供高级请求路由,旨在交付现代应用程序架构,包括微服务和基于容器的应用程序,通过确保始终使用最新的 SSL/TLS 密码和协议来简化和提高应用程序的安全性。

关于ALB的官方文档可以参考: What is an Application Load Balancer

以下主要是总结应用程序负载均衡器基于路径的路由功能。

4.1 基于路径路由的使用场景

在应用程序负载均衡器的监听器配置规则条件:

1) 可以将负载均衡器收到的bas.com/images/请求 ,URL中包括/images/的请求路由到server 1;

2) 可以将负载均衡器收到的的bas.com/data/请求,URL中包括/data/的请求路由到server 2 。

这种方式就是应用程序负载均衡器的基于路径的路由功能。

通过基于路径的路由功能,您可以将您的应用程序构造为较小的服务,并根据 URL 内容将请求路由到正确的服务。

4.2 环境准备

1) 将图片文件image.jpg复制到EC2的/usr/share/nginx/html/images,将数据文件userinfo.txt复制到/usr/share/nginx/html/data。

2) 访问 http://54.183.53.8/images/image.jpg , http://54.183.53.8/data/userinfo.txt

4.3 创建ALB

1) 因为必须要创建目标组,所以进入到 创建目标组 页面,目标类型选择实例。

2)  进入到 创建页面 , 假设这里命名为bas-alb。

3) 确保 TG 的目标是healthy状态的。

4) 根据ALB的DNS访问数据。

4.4 ALB基于路径的路由功能

上一步我们创建了一个ALB和两个TG,TG分别指定了EC2的实例lin和lin2。所以以下通过编辑ALB的侦听器来实现不同的url转发到不同的TG,也就是基于路径的路由功能。

1) 确保lin有images和data文件,lin2只有包含data,并且文件内容包含server lin2。

2) 添加 ALB的侦听器规则:data和images。

3) 访问images的时候会转发至lin,访问data的时候会转发至lin2。

5. Network Load Balancer

NLB,在 OSI模型的第四层运行(传输层),它只支持传输层的协议:TCP、UDP、以及TLS。

5.1 NLB路由算法

  1. 对于 TCP 流量,NLB基于协议、源 IP 地址、源端口、目标 IP 地址、目标端口和 TCP 序列号,使用流哈希算法选择目标;
  2. 当来自客户端的 TCP 连接具有不同的源端口和序列号,这样可以路由到不同的目标;
  3. 对于每个单独的 TCP 连接在连接的有效期内路由到单个目标。

5.2 创建NLB

1) 创建一个弹性IP。

2) 创建NLB目标组 tg-lin。

3) 创建NLB bas-nlb,其中网络映射的IPv4选择上面的弹性ip。

5.3 测试

这个弹性IP,实际是分配给了我们创建NLB选择的可用区us-west-1a的NLB的网络接口上,也可以称其为NLB的节点。默认情况下,每个负载均衡器节点仅在其可用区中的已注册目标之间分配流量。如果启用了跨区域负载均衡,则每个负载均衡器节点会在所有启用的可用区中的已注册目标之间分配流量。

1) 访问NLB的DNS, http://bas-nlb-8a86ec6fa6f95824.elb.us-west-1.amazonaws.com/index.html ,可以确认NLB已经正常运行。

2) 可以在EC2输入nslookup看下这个NLB目前被分配的IP地址是不是我们配置的弹性iP地址。

1. EC2安全组的80端口要打开,才可以正常访问到NGINX的资源。

2. 一个TG只能对应一个ALB,也就是如果ALB1侦听器绑定了TG1的话,那ALB2就不能再使用TG1了。

1. 关于ALB的侦听器规则可以参考官网文档: Listeners for your Application Load Balancers

2. 关于ALB转发到Route53可以参考: 关于AWS Alb和Route53的使用 小结

对于一个单体应用,我们在两个ec2实例上分别部署,并通过alb对其进行 负载均衡 在我们配置alb上的监听 (listener)到目标后端服务 组(target group)后,发现无法分配后端服务 组内实例的权重占比。 和阿里云的slb以及华为云的elb不同的是, aws 的alb的一个监听 可以绑定多个target group,而前两者一个监听 只能绑定一个后端服务 组。因此 aws 是修改不同target group组的权重,而华为云和阿里云是修改后段服务 组内的不同实例的权重
ELB类型 我们在 AWS 控制台创建 负载均衡 类型时,会发现有三个选项可以选择,分别是应用 负载均衡 (ALB),网络 负载均衡 (NLB),经典 负载均衡 (CLB)。下面会介绍这三种 负载均衡 的特别。 使用 aws elb服务 来做websocket 负载均衡 时,只能 使用 tcp模式。 https 协议不在也可以选择tcp模式,都有后端获取不到真实客户端IP问题,获取都是elb IP地址 代理协议是一种 Internet 协议,用于将连接信息从请求连接的源传递到请求连接到的目标。Elastic Load Balancing 使用 代...
网站:www.ilove aws .cn Hello大家好,欢迎来到《 AWS 解决方案架构师认证 Professional(SAP)中文视频培训课程》,我们从今天开始介绍 AWS 负载均衡 (Elastic Load Balancing)的内容。今天我们讨论ELB的第一课《 AWS 负载均衡 的类型》。 我们开始今天的课程内容。 在很早之前, AWS 只提供了一种类型的 负载均衡 —— Classic Load Balan 4.创建 负载均衡 :应用程序 负载均衡 --》创建 了解更多应用程序 负载均衡 :https://docs. aws .amazon.com/zh_cn/elasticloadbalancing/latest/application/introduction.html 网络负载...
AWS 中,您可以 使用 Elastic Load Balancing (ELB) 服务来创建 负载均衡 。下面是简单的步骤: 1. 登录 AWS 控制台并导航到 Elastic Load Balancing 服务页面。 2. 点击“创建 Load Balancer”按钮。 3. 选择您想要创建的 负载均衡 类型,如 Application Load Balancer 或 Network Load Balancer。 4. 配置基本信息,如 负载均衡 名称、协议和端口等。 5. 配置安全组以授权 负载均衡 接受流量。 6. 配置监听 来接受来自客户端的流量并将其路由到目标组。 7. 配置目标组以指定 负载均衡 将流量发送到的实例。 8. 配置健康检查以确保 负载均衡 只将流量发送到健康的实例。 9. 确认您的设置并创建 负载均衡 。 完成上述步骤后,您的 负载均衡 即可准备就绪,可以处理来自客户端的流量并将其路由到您的实例。