当前位置: 首页 > Microsoft Azure > 正文

Microsoft Azure 负载均衡器介绍

Microsoft Azure负载均衡器是Azure平台中自带的一个免费服务,使用 Azure负载均衡器可以缩放应用程序,并为服务提供高可用性。负载均衡器支持入站和出站方案、提供低延迟和高吞吐量,以及为所有TCP和UDP应用程序纵向扩展到数以百万计的流。

在了解Azure负载均衡器负载均衡器之前,我们首先需要了解什么是负载均衡?”负载均衡”是指可跨多个设备(例如计算、存储和网络设备)分配工作负荷的各种技术。负载均衡旨在优化多个资源的利用,让你在横向扩展基础结构后可最有效地利用这些资源,同时确保在某些组件不可用时保证服务可用。

什么是Azure负载均衡器?

Azure负载均衡器是一项Azure服务,它在池中的多个VM之间分配传入请求。它会在一组正常的VM之间分配传入的网络流量,并避免将流量分配到无法响应的任何 VM。

Azure负载均衡器在OSI 7层模型的第4层(TCP、UDP)运行。可将它配置为支持TCP和UDP应用方案(其中,流量将传入 Azure VM)和出站方案(其中,其他 Azure 服务通过 Azure VM将TCP和UDP流量传出到外部终结点)。

Azure负载均衡器有两种,一种是是面向Internet的公共负载均衡器(SLB),还有一个种是面线内部的内部负载均衡器(ILB),具体使用哪种负载均衡器取决于传入请求的源。

使用 Azure 负载均衡器可以:

  • 对传入到VM的Internet流量进行负载均衡。此配置称为公共负载均衡器。
  • 对虚拟网络中VM之间的流量进行负载均衡。还可以在混合方案中从本地网络访问负载均衡器前端。这两种方案都使用称作内部负载均衡器的配置。
  • 使用入站网络地址转换 (NAT) 规则通过端口转发将流量转发到特定VM上的特定端口。
  • 使用公共负载均衡器为虚拟网络中的VM提供出站连接。

公共负载均衡器处理来自Azure基础结构外部的客户端请求。公共IP地址会分配给负载均衡器,而该地址会将入站请求路由到专用虚拟网络上的一组资源。此方法通常用于使Web服务器具有高可用性。如下图所示。


内部负载均衡器可处理来自虚拟网络内部(或通过 VPN 发送)的请求。它将请求分配到该虚拟网络内部的资源。不能直接从Internet访问负载均衡器、前端IP地址和虚拟网络。下图显示了同时包含公共和内部负载均衡器的体系结构。公共负载均衡器处理外部请求,而内部负载均衡器将请求转发到内部 VM 和数据库进行处理。如下图所示。


Azure 负载均衡器的工作原理?

Azure 负载均衡器使用规则和运行状况探测中配置的信息来确定如何将负载均衡器前端收到的入站流量分配到”后端地址池”中的 VM 实例。

什么是负载均衡器前端?

负载均衡器前端是包含一个或多个公共 IP 地址的 IP 配置,可用于通过 Internet 访问负载均衡器及其应用程序。

什么是后端地址池?

虚拟机使用其虚拟网络接口 (vNIC) 连接到负载均衡器。 后端地址池包含连接到负载均衡器的vNIC的IP地址。如果将所有VM都置于一个可用性集中,在配置负载均衡器时,可使用此集将VM轻松添加到后端池。

什么是运行状况探测?

负载均衡器使用运行状况探测来确定哪些虚拟机可为请求提供服务。 负载均衡器只会将流量分配到可用且正常运行的 VM。

运行状况探测监视每个 VM 上的特定端口。 可以定义哪种类型的响应对应于”运行状况”;例如,你可能需要 Web 应用程序返回 HTTP 200 Available 响应。 默认情况下,如果某个 VM 在 15 秒间隔内连续两次发生故障,该 VM 将标记为”不可用”。

负载均衡器规则

负载均衡器规则定义如何将流量分配到后端 VM。 其目标是在后端池中正常运行的 VM 之间均匀分配请求。

Azure 负载均衡器使用基于哈希的算法来重写入站数据包的标头。 默认情况下,负载均衡器基于以下信息创建哈希:

  • 源 IP 地址
  • 源端口
  • 目标 IP 地址
  • 目标端口
  • IP 协议号

此机制确保数据包客户端流中的所有数据包发送到同一个后端 VM 实例。 来自客户端的新流将使用另外一个随机分配的源端口。这意味着哈希将发生变化,负载均衡器可能将此流发送到不同的后端终结点。

基本与标准负载均衡器 SKU

Azure负载均衡器又分基本和标准两种SKU。 它们的区别体现在规模、功能和定价方面。例如:

  • 标准 SKU 支持通过 HTTPS 安全进行流量路由。
  • 标准 SKU 的后端池大小可能要大得多(标准 SKU 中的大小为 1000,基本 SKU 中的为 100)。
  • 可将流量定向到更大的终结点池,包括规模集、可用性集和 VM 的混合。基本 SKU 仅限于单个可用性集、规模集或 VM。
  • 将其用作内部负载平衡器时,支持高可用性 (HA) 端口以同时对所有端口上的 TCP 和 UDP 流进行负载均衡。
  • 基本 SKU 是免费的,而标准 SKU 根据规则和吞吐量收费。
  • 标准 SKU 是基本 SKU 的超集,因此,适用于基本 SKU 的任何方案同样适用于标准 SKU。 基本 SKU 通常用于原型制作和测试,而标准 SKU 建议用于生产。

当然Azure自带的负载均衡器技术,也存在一些限制:

  • 负载均衡器属于 TCP 或 UDP 产品,用于对这些特定的 IP 协议进行负载均衡和端口转发。 负载均衡规则和入站 NAT 规则支持 TCP 和 UDP,但不支持其他 IP 协议(包括 ICMP)。 负载均衡器不会终止、响应 UDP 或 TCP 流的有效负载,也不与之交互。 它不是一个代理。 必须使用负载均衡或入站 NAT 规则(TCP 或 UDP)中所用的同一协议在带内成功验证与前端的连接,并且必须至少有一个虚拟机为客户端生成了响应,这样才能看到前端发出的响应。 未从前端负载均衡器收到带内响应即表明没有任何虚拟机能够做出响应。 在虚拟机都不能做出响应的情况下,无法与负载均衡器前端交互。 这一点也适用于出站连接,其中的端口伪装 SNAT 仅支持 TCP 和 UDP;其他任何 IP 协议(包括 ICMP)也会失败。 分配实例级公共 IP 地址即可缓解问题。
  • 公共负载均衡器在将虚拟网络中的专用 IP 地址转换为公共 IP 地址时提供出站连接,而内部负载均衡器则与此不同,它不会将出站发起连接转换为内部负载均衡器的前端,因为两者都位于专用 IP 地址空间中。 这可以避免不需要转换的唯一内部 IP 地址空间内发生 SNAT 端口耗尽。 负面影响是,如果来自后端池中 VM 的出站流尝试流向其所在池中的内部负载均衡器前端,并映射回到自身,则这两个流的分支不会匹配,并且该流将会失败。 如果该流未映射回到后端池中的同一 VM(在前端中创建了流的 VM),则该流将会成功。 如果流映射回到自身,则出站流显示为源自 VM 并发往前端,并且相应的入站流显示为源自 VM 并发往自身。 从来宾 OS 的角度看,同一流的入站和出站部分在虚拟机内部不匹配。 TCP 堆栈不会将同一流的这两半看作是同一流的组成部分,因为源和目标不匹配。 当流映射到后端池中的任何其他 VM 时,流的两半将会匹配,且 VM 可以成功响应流。 此方案的缺点在于,当流返回到发起该流的同一后端时将出现间歇性的连接超时。 可通过几种常用解决方法来可靠地实现此方案(从后端池发起流,并将其传送到后端池的相应内部负载均衡器前端),包括在内部负载均衡器后方插入代理层,或使用 DSR 式规则。 客户可将内部负载均衡器与任何第三方代理相结合,或使用内部应用程序网关替代限制为 HTTP 的代理方案。 尽管可以使用公共负载均衡器来缓解问题,但最终的方案很容易导致 SNAT 耗尽,除非有精心的管理,否则应避免这种做法。

本文固定链接: http://365vcloud.net/2018/10/31/microsoft-azure-load-balancer-overview/ | Eric的学习之路

该日志由 TingXu 于2018年10月31日发表在 Microsoft Azure 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Microsoft Azure 负载均衡器介绍 | Eric的学习之路
关键字: ,