Introduction to Elastic Load Balancing

概览

本实验为您介绍 Elastic Load Balancer,其中包括如何创建和测试 Network Elastic Load Balancer。实验启动后,它提供两个不同可用区,其中各有一个 Web 服务器。在本实验中,您将创建一个 Network Elastic Load Balancer,并将这两个 Web 服务器用作目标。然后,您将在不同的场景中测试负载均衡器的功能

alt text

目标

完成本实验后,您将能够:

测试与位于两个不同可用区中的两个 Web 服务器的连接

创建一个 Network Load Balancer,并将这两个 Web 服务器用作 Elastic Load Balancer 目标

测试负载均衡器的默认功能

启用跨区域负载均衡并测试负载均衡器的行为方式

在其中一个 Web 服务器发生故障时测试负载均衡器的行为

在 Web 服务器从故障中恢复后测试负载均衡器的行为

本实验中使用的服务

Amazon Elastic Load Balancer

Amazon Elastic Load Balancer (Amazon ELB) 作为一项服务,可在多个 Amazon EC2 实例之间自动分配应用程序的传入流量。通过这项服务,您可以实现更高的应用程序容错能力,从而无缝提供响应应用程序的传入流量所需的负载均衡容量。Elastic Load Balancing 可以检测出池中运行不正常的实例,并自动将流量重新路由到运行正常的实例,直到运行不正常的实例恢复为止。

客户可以在单个可用区或多个可用区中启用 Elastic Load Balancing,以实现更加一致的应用程序性能。也可以在 Amazon Virtual Private Cloud (VPC) 中使用 Elastic Load Balancing 在应用程序层之间分配流量。

Elastic Load Balancing 支持以下类型的负载均衡器:

  • Application Load Balancer

    Application Load Balancer 在应用程序层正常工作,该层是开放系统互连 (OSI) 模型的第 7 层。负载均衡器收到请求后,将按照优先级顺序评估侦听器规则以确定应用哪个规则,然后从目标组中选择规则操作目标。可以配置侦听器规则,以根据应用程序流量的内容,将请求路由至不同的目标组。每个目标组的路由都是单独进行的,即使某个目标已在多个目标组中注册。可以配置目标组级别使用的路由算法。默认路由算法为轮询路由算法;或者,可以指定最少未完成请求路由算法。

  • Network Load Balancer

    Network Load Balancer 在连接级别(第 4 层)运行,根据 IP 协议数据将连接路由至 Amazon VPC 中的目标(Amazon EC2 实例、微服务和容器)。Network Load Balancer 最适合 TCP 和 UDP 流量的负载均衡,能够在保持超低延迟的同时每秒处理数百万个请求。Network Load Balancer 经过优化,可以处理突发和不稳定的流量模式,同时每个可用区使用单个静态 IP 地址。它可与其他常见的 AWS 服务集成,例如 Auto Scaling、Amazon EC2 Container Service (ECS)、Amazon CloudFormation 和 AWS Certificate Manager (ACM)。

  • Gateway Load Balancers (网关负载均衡器)

    Gateway Load Balancer 在开放系统互联 (OSI) 模型的第三层,即网络层运行。Gateway Load Balancers 让您能够部署、扩展和管理虚拟设备,例如防火墙、入侵检测和防御系统以及深度数据包检测系统。它结合了一个透明的网络网关(即所有流量的单个入口和出口点),并分配流量,同时根据需求扩展虚拟设备。

  • Classic Load Balancers(经典负载均衡器)

    负载均衡器将传入的应用程序流量分配到多个可用区的多个EC2实例上。这可提高应用程序的容错能力。弹性负载均衡会检测运行状况不佳的实例,并将流量仅路由到运行正常的实例。

  • 产品比较:

alt text

任务 1:测试对 Web 服务器的访问

在此任务中,您将通过 HTTP 连接到每个 Web 服务器。这将证明您的 Web 服务器正在为网页提供服务。这些 EC2 实例是当您启动实验时在 CloudFormation 模板中创建的。

在这些说明的左侧,将 WebServer01 的值复制到剪贴板,然后:

将该值粘贴到一个新的浏览器标签页中

按 Enter 键

将看到如图 alt text

在这些说明的左侧,将 WebServer02 的值复制到剪贴板,然后:

将该值粘贴到一个新的浏览器标签页中

按 Enter 键 alt text

任务 2:创建 Elastic Load Balancer

  • 在 AWS 管理控制台中,使用 AWS 搜索栏搜索 EC2,然后从列表中选择该服务。

  • 在左侧导航窗格中,选择负载均衡器。

  • 选择 Create load balancer(创建负载均衡器)。

附加信息:负载均衡器充当客户端的单一联系点。该负载均衡器在多个目标(例如 Amazon EC2 实例)间分配传入流量。这将提高应用程序的可用性。

  • 在 Select load balancer type(选择负载均衡器类型)上的 Network Load Balancer 下方,选择 Create(创建)。 附加信息:Network Load Balancer 在开放式系统互联 (OSI) 模型的第 4 层运行。它每秒可以处理数百万个请求。负载均衡器收到连接请求后,根据默认规则从目标组中选择一个目标。负载均衡器尝试在侦听器配置中指定的端口上打开到所选目标的 TCP 连接。

  • 在 Create Network Load Balancer(创建 Network Load Balancer)页面上,进行以下配置:

Load balancer name(负载均衡器名称):myELB

VPC:从下拉菜单中选择 Lab VPC(实验 VPC)

Mappings(映射):选择这两个可用区

安全组:从下拉菜单中选择 ELBSecurityGroup

  • 在 Listeners and routing(侦听器和路由)部分,选择 Create target group (创建目标组)。 附加信息:向目标组注册 Network Load Balancer 的目标。默认情况下,负载均衡器使用为目标组指定的端口和协议向已注册目标发送请求。

  • 在 Basic configuration(基本配置)部分,进行以下配置:

Target group name(目标组名称):lb-targets

协议: TCP

VPC:确保选中 Lab VPC(实验 VPC)。

  • 展开 Advanced health check settings(高级运行状况检查设置),然后进行以下配置:

Healthy threshold(正常阈值):2

Interval(间隔):10 seconds
如图:

alt text

附加信息:负载均衡器使用指定的端口、协议和 ping 路径,每 HealthCheckIntervalSeconds 秒向每个注册目标发送一次运行状况检查请求。它等待目标在响应超时时间内响应。如果运行状况检查超过连续失败响应的阈值,负载均衡器将使目标停止服务。当运行状况检查超过连续成功响应的阈值时,负载均衡器将使目标恢复服务。

注意:由于您已将 Healthy threshold(正常阈值)设置为 2,并且已将间隔设置为 10 秒,因此您的实例报告正常状态至少需要 20 秒。默认情况下,每个负载均衡器节点仅将请求路由到其可用区中的正常目标。

  • 在屏幕底部,选择 Next(下一步)。

  • 在 Available instances(可用实例)部分,选择这两个 EC2 实例。

  • 选择 Include as pending below(包含如下待处理事项)。

警告:确保选择 Include as pending below(包含如下待处理事项)。

  • 选择 Create target group(创建目标组)。

  • 导航到用于创建负载均衡器的选项卡。

  • 在 Listeners and routing(侦听器和路由)部分,选择 刷新按钮。

  • 从下拉列表中,选择您先前创建的 lb-targets 目标组。

查看负载均衡器配置

  • 选择 Create load balancer(创建负载均衡器)

  • 选择 View load balancer(查看负载均衡器)。

  • 在负载均衡器的 Details(详细信息)选项卡中,将 DNS 名称复制到您的文本编辑器。

注意:您的 DNS 名称应类似于 myELB-4e009e86b4f704cc.elb.us-west-2.amazonaws.com

  • 在左侧导航窗格中,选择 Target Groups(目标组)。

  • 选择 lb-targets 目标组。

  • 选择 Targets(目标)选项卡。

  • 等待 EC2 实例的状态变为 healthy(正常)。

注意:您可能需要 刷新屏幕才能看到更改。以下是已注册目标的运行状况状态的可能值:

initial(初始):负载均衡器正在注册目标或正在对目标执行初始运行状况检查

healthy(正常):目标运行正常

unhealthy(不正常):目标未响应运行状况检查或运行状况检查失败 。 unused(未使用):目标未注册到目标组,目标组未在负载均衡器的侦听器规则中使用,或者目标位于没有为负载均衡器启用的可用区中。

draining(注销延迟中):目标正在注销,而且处于注销延迟中

任务 3:测试负载均衡器

测试默认功能

  • 在一个新的浏览器标签页中,粘贴 DNS 名称,然后按 Enter 键。 注意:您应看到其中一个 EC2 实例的 HTML 页面。

  • 刷新 页面几次。 请注意,显示的是相同的 EC2 实例页面。

附加信息:对于 Network Load Balancer,默认情况下禁用跨区域负载均衡。创建 Network Load Balancer 后,您可以随时启用或禁用跨区域负载均衡。

附加信息:在为负载均衡器启用的可用区中,跨区域负载均衡可以在所有目标之间均匀地分配流量。

测试跨区域负载均衡功能

  • 在 AWS 管理控制台的左侧导航窗格中,选择 Load Balancers(负载均衡器)。

  • 在 Details(详细信息)部分,选择 Attributes(属性)选项卡。

  • 选择 Edit(编辑),然后进行以下配置:

  • 启用 Cross-zone load balancing(跨区域负载均衡)

  • 选择 Save changes(保存更改) 等待一两分钟。

返回用于访问负载均衡器的浏览器标签页。

  • 刷新 页面几次。

任务完成:您应该看到 Network Load Balancer 现在将您引导至这两个 EC2 实例。

禁用跨区域负载均衡功能

  • 在 AWS 管理控制台的左侧导航窗格中,选择 Load Balancers(负载均衡器)。

  • 在 Details(详细信息)部分,选择 Attributes(属性)选项卡。

  • 选择 Edit(编辑),然后进行以下配置:

  • 禁用 Cross-zone load balancing(跨区域负载均衡)

  • 选择 Save changes(保存更改) 等待一两分钟。

  • 返回用于访问负载均衡器的浏览器标签页。

  • 刷新 页面几次。

任务 4:在故障期间测试负载均衡器

在故障期间测试负载均衡器

  • 在 AWS 管理控制台的左侧导航窗格中,选择 Instances(实例)。

  • 选择当前为您提供网页服务的 EC2 instance(EC2 实例)。

  • 从 Instance state (实例状态)下拉列表中,选择 Stop instance(停止实例)。

  • 选择 Stop(停止)。

等待一两分钟。

  • 返回用于访问负载均衡器的浏览器标签页。

  • 刷新 页面几次。

任务完成:您将看到负载均衡器现在显示另一个实例的网页。

从故障中恢复后测试负载均衡器

  • 在 AWS 管理控制台的左侧导航窗格中,选择 Instances(实例)。

  • 选择您先前停止的 EC2 instance(EC2 实例)。

  • 从 Instance state (实例状态)下拉列表中,选择 Start instance(启动实例)。

等待一两分钟,直到实例完全启动。

注意:您可以选择 刷新按钮来更新状态。

  • 在负载均衡器的浏览器标签页中,刷新 页面。

总结

测试了与位于两个不同可用区中的两个 Web 服务器的连接

创建了 Network Load Balancer

测试了负载均衡器的默认功能

启用了跨区域负载均衡并测试了负载均衡器的行为方式

在其中一个 Web 服务器发生故障时测试了负载均衡器的行为

在 Web 服务器恢复后测试了负载均衡器的行为