使用 AWS ELB 进行负载均衡

大家好! 课程今天开始 “面向开发人员的 AWS”,为此我们举办了相应的专题网络研讨会,专门讨论 ELB 审查。 我们研究了平衡器的类型并创建了多个带有平衡器的 EC2 实例。 我们还研究了其他使用示例。

使用 AWS ELB 进行负载均衡

听完网络研讨会后, 你会:

  • 了解什么是 AWS 负载均衡;
  • 了解弹性负载均衡器的类型及其组件;
  • 在您的实践中使用 AWS ELB。

为什么你需要知道这一点?

  • 如果您计划参加 AWS 认证考试,这很有用;
  • 这是在服务器之间分配负载的简单方法;
  • 这是将 Lambda 添加到您的服务 (ALB) 的简单方法。

举办公开课 里沙特·捷列古洛夫,一家营销公司的系统工程师,负责网站开发和支持。

介绍

下图显示了一个简单的示例,可以看出什么是弹性负载均衡器:

使用 AWS ELB 进行负载均衡

负载均衡器接受请求并跨实例分发它们。 我们有一个单独的实例,有 Lambda 函数,还有一个 AutoScaling 组(一组服务器)。

AWS ELB 类型

1.我们先来看看主要的类型:

经典负载均衡器。 AWS 的第一个负载均衡器适用于 OSI 第 4 层和第 7 层,支持 HTTP、HTTPS、TCP 和 SSL。 它提供跨多个 Amazon EC2 实例的基本负载平衡,并在请求和连接级别上工作。 让我们打开它(以灰色突出显示):

使用 AWS ELB 进行负载均衡

该平衡器被认为已过时,因此建议仅在某些情况下使用。 例如,对于在 EC2-Classic 网络上构建的应用程序。 原则上,没有人阻止我们创建它:

使用 AWS ELB 进行负载均衡

2.网络负载均衡器。 适合繁重的工作负载,在 OSI 第 4 层运行(可在 EKS 和 ECS 中使用),支持 TCP、UDP 和 TLS。

网络负载均衡器将流量路由到 Amazon VPC 中的目标,并且能够以超低延迟每秒处理数百万个请求。 此外,它还经过优化,可以处理突然变化的负载的流量模式。

3.应用程序负载均衡器。 工作在第 7 层,具有 Lambda 支持,支持标头和路径级别规则,支持 HTTP 和 HTTPS。
提供高级请求路由,专注于交付基于现代架构(包括微服务和容器)构建的应用程序。 根据请求的内容将流量定向到 Amazon VPC 中的目标。

对于许多用户来说,Application Load Balancer 是替代 Classic Load Balancer 的首选,因为 TCP 不像 HTTP 那样常见。

让我们也创建它,这样我们就已经有了两个负载均衡器:

使用 AWS ELB 进行负载均衡

负载平衡组件

常见负载均衡组件 (所有平衡器通用):

  • 访问日志策略

— 您的 ELB 访问日志。 要进行设置,您可以转到“描述”并选择“编辑属性”按钮:

使用 AWS ELB 进行负载均衡

然后我们指定S3Bucket - Amazon对象存储:

使用 AWS ELB 进行负载均衡

  • 方案

— 内部或外部平衡器。 关键是您的负载均衡器是否必须接收外部地址才能从外部访问,或者它可以是您的内部负载均衡器;

  • 安全组

— 平衡器的访问控制。 本质上,这是一个高级防火墙。

使用 AWS ELB 进行负载均衡

使用 AWS ELB 进行负载均衡

  • 子网路

— VPC 内的子网(以及相应的可用区域)。 子网是在创建期间指定的。 如果 VPC 受区域限制,则子网受可用区限制。 创建负载均衡器时,最好在至少两个子网中创建它(如果一个可用区出现问题会有所帮助);

  • 听众

- 你的平衡器协议。 如前所述,对于 Classic Load Balancer,它可以是 HTTP、HTTPS、TCP 和 SSL;对于 Network Load Balancer,它可以是 TCP、UDP 和 TLS;对于 Application Load Balancer,它可以是 HTTP 和 HTTPS。

经典负载均衡器示例:

使用 AWS ELB 进行负载均衡

但在应用程序负载均衡器中,我们看到略有不同的界面和通常不同的逻辑:

使用 AWS ELB 进行负载均衡

负载均衡器 v2 组件(ALB 和 NLB)

现在让我们仔细看看版本 2 平衡器应用程序负载平衡器和网络负载平衡器。 这些平衡器有自己的组件特性。 例如,出现了Target Groups这样的概念——实例(和函数)。 借助此组件,我们有机会指定我们希望将流量引导至哪些目标组。

使用 AWS ELB 进行负载均衡

使用 AWS ELB 进行负载均衡

简而言之,在目标组中,我们指定流量将来自的实例。 如果在同一个 Classic Load Balancer 中,您只需立即将强度连接到平衡器,那么在 Application Load Balancer 中,您首先:

  • 创建负载均衡器;
  • 创建目标组;
  • 通过所需的端口或负载均衡器规则直接到达所需的目标组;
  • 在目标组中您分配实例。

这个操作逻辑看似比较复杂,但实际上却比较方便。

下一个组件是 监听器规则 (路由规则)。 这仅适用于应用程序负载均衡器。 如果在网络负载均衡器中,您只需创建一个监听器,并将流量发送到特定的目标组,那么在应用程序负载均衡器中,一切 更有趣更方便.

使用 AWS ELB 进行负载均衡

现在让我们谈谈下一个组件 - 弹性IP (NLB 的静态地址)。 如果侦听器规则路由规则仅影响应用程序负载均衡器,则弹性 IP 仅影响网络负载均衡器。

让我们创建一个网络负载均衡器:

使用 AWS ELB 进行负载均衡

使用 AWS ELB 进行负载均衡

就在创建过程中,我们将看到有机会选择弹性IP:

使用 AWS ELB 进行负载均衡

弹性 IP 提供单个 IP 地址,随着时间的推移,该地址可以与不同的 EC2 实例关联。 如果 EC2 实例具有弹性 IP 地址并且该实例已终止或停止,您可以立即将新的 EC2 实例与弹性 IP 地址关联。 但是,您当前的应用程序不会停止工作,因为即使真实的 EC2 已更改,应用程序仍然会看到相同的 IP 地址。

这里 另一个用例 关于为什么需要弹性 IP 的主题。 看,我们看到 3 个 IP 地址,但它们不会永远留在这里:

使用 AWS ELB 进行负载均衡

亚马逊会随着时间的推移更改它们,可能每 60 秒更改一次(当然,实际上,频率较低)。 这意味着 IP 地址可以更改。 对于网络负载均衡器,您只需绑定一个 IP 地址并在您的规则、策略等中指明它即可。

使用 AWS ELB 进行负载均衡

得出结论

ELB 提供跨多个目标(容器、Amazon EC2 实例、IP 地址和 Lambda 函数)自动分配传入流量。 ELB 能够在单个可用区内和跨多个可用区分配具有不同负载的流量。 用户可以从三种类型的平衡器中进行选择,这些平衡器提供高可用性、自动缩放和良好的保护。 所有这些对于确保应用程序的容错能力都很重要。

主要优点:

  • 高可用性。 该服务协议假定负载均衡器的可用性为 99,99%。 例如,多个可用区可确保流量仅由健康的对象处理。 事实上,您可以平衡整个区域的负载,将流量重定向到不同可用区的健康目标;
  • 安全。 ELB 与 Amazon VPC 配合使用,提供各种安全功能 - 集成证书管理、用户身份验证和 SSL/TLS 解密。 所有这些都提供了 TLS 设置的集中且灵活的管理;
  • 弹性。 ELB可以处理网络流量的突然变化。 并且与 Auto Scaling 深度集成,在负载变化时为应用程序提供足够的资源,无需人工干预;
  • 灵活性。 您可以使用 IP 地址将请求路由到应用程序的目标。 这在虚拟化目标应用程序时提供了灵活性,从而能够在单个实例上托管多个应用程序。 由于应用程序可以使用单个网络端口并具有单独的安全组,因此当我们拥有基于微服务的架构时,应用程序之间的通信就会得到简化;
  • 监控和审计。 您可以使用 Amazon CloudWatch 功能实时监控应用程序。 我们谈论的是指标、日志、请求跟踪。 简单来说,您将能够非常准确地识别问题并查明性能瓶颈;
  • 混合负载平衡。 使用同一负载均衡器在本地资源和 AWS 之间进行负载均衡的能力使得将本地应用程序迁移或扩展到云变得轻松。 使用云还简化了故障处理。

如果您对详细信息感兴趣,这里有来自亚马逊官方网站的一些更有用的链接:

  1. 弹性负载平衡.
  2. 弹性负载平衡功能。

来源: habr.com

添加评论