了解 Azure 负载均衡解决方案 - Azure 负载均衡器、Azure 应用程序网关和 Azure Traffic Manager






4.73/5 (5投票s)
Azure 中提供的各种负载均衡解决方案以及在不同场景下应使用哪种解决方案
引言
在本文中,我们将探讨 Azure 中可用的各种负载均衡解决方案,以及在不同场景下应该使用哪一个。
背景
负载均衡器是创建高可用性 Web 应用程序的关键组件。我们都曾在传统的本地服务器上使用过负载均衡器,当时我们的应用程序运行在 N 个实例上,负载均衡器位于这些服务器的前面,并根据一些预定义的算法和连接亲和性设置将负载分配给它们。
迁移到云端,我们需要了解如何使用 Azure 组件实现相同的负载均衡。云应用程序中的负载均衡需要比简单的负载均衡器放在一些服务器前面更周全的考虑,因为我们可以拥有托管在 PaaS 上的服务,可以为不同的租户运行在独立实例上的服务,还可以拥有运行在全球多个地理分布式服务器上的应用程序。
因此,Azure 中有多个负载均衡组件可供选择。这些组件各有不同的用途,我们需要为特定场景选择正确的组件,才能实现最优的应用程序架构。
Azure 负载均衡解决方案
Azure 中主要有 3 个负载均衡组件。
- Azure 负载均衡器
- Azure 应用程序网关
- Azure Traffic Manager
让我们开始逐一了解这些组件,并尝试理解何时有效使用每个组件。
Azure 负载均衡器
Azure 负载均衡器在更传统的意义上是一个负载均衡器,它可以用于在同一网络中为 VM 负载均衡,就像我们在本地服务器上使用传统负载均衡器一样。现在,由于 Azure 负载均衡器是为云应用程序设计的,它也可以用于为容器和 PaaS 应用程序以及 VM 负载均衡。
但与传统负载均衡器的相似之处仅限于此,主要是因为 Azure 负载均衡器实际上工作在传输层(OSI 模型第 4 层)。这意味着它将在同一 Azure 数据中心内分发网络流量,但无法使用传统负载均衡器在会话层和应用程序层提供的功能,因为这些是 OSI 模型第 7 层结构。
负载均衡器使用负载均衡规则进行配置,这些规则在端口级别工作。它接受源端口和目标端口,并将它们映射在一起,以便每当它收到源端口的请求时,该请求都会被转发到位于负载均衡器上连接的 VM 组(或 VNET 中的应用程序)的某个 VM 的目标端口。
Azure 负载均衡器可以用于两种配置模式
- 外部 - 公共负载均衡
- 内部 - 内部负载均衡
外部 - 公共负载均衡
在此模式下,负载均衡器被分配一个公共 IP 地址,以确保负载均衡器可以接受来自 Internet 的请求。客户端应用程序和服务将通过 Internet 调用负载均衡器,然后根据配置的规则,它会将传入流量分发到 VM、容器或应用程序。
内部 - 内部负载均衡
内部负载均衡器本质上与外部负载均衡器相同,但它使用私有 IP 地址,因此只能从其所属的虚拟网络内的应用程序进行调用。
Azure 负载均衡器有助于我们在基础设施级别设计高可用性,但是,由于存在需要更高级功能和服务的场景,例如连接亲和性、安全、SSL 终止等,我们无法使用 Azure 负载均衡器。要实现这些高级功能,我们需要一个能够处理 OSI 模型第 7 层结构(即应用程序、会话等)的解决方案。让我们在下一节中探讨如何实现这一点。
Azure 应用程序网关
Azure 应用程序网关是第 7 层负载均衡器,因此它可以访问应用程序和会话的有效负载,这使得应用程序网关能够提供更多功能丰富的负载均衡,如粘性会话、连接亲和性等。由于应用程序网关比 Azure 负载均衡器拥有更多信息,因此可以配置更复杂的路由和负载均衡。应用程序网关充当反向代理服务。它终止客户端连接并将请求转发到后端终结点。
恕我直言,如果我们处理的是应用程序级别,并且负载均衡器需要公开可用,那么在许多情况下,使用应用程序网关比使用负载均衡器更有意义。
应用程序网关可以被认为是(负载均衡器++),它运行在第 7 层并提供比负载均衡器更多的功能。应用程序网关还可以用于基于 URL 路由流量,这对于开发多租户应用程序非常有用,在这些应用程序中,每个租户都有独立的 VM 实例运行,并且租户标识符包含在 URL 中。
Azure Traffic Manager
到目前为止,我们已经了解了满足数据中心内部负载均衡需求的负载均衡解决方案。负载均衡器和应用程序网关是用于实现数据中心内高可用性的组件。但是,通过云,我们还可以将应用程序架构设计成地理分布式。那么,我们如何跨地理区域平衡负载呢?
Azure Traffic Manager 正是为了这个目的而存在的。Azure Traffic Manager 使用 DNS 将请求重定向到适当的地理位置终结点。Traffic Manager 不会查看客户端和服务之间的流量。它只是根据最合适的终结点重定向请求。地理位置终结点是面向 Internet 的可访问公共 URL。
Azure Traffic Manager 在 DNS 级别工作,即它使用在 DNS 级别配置的规则在多个区域和数据中心之间分发负载。客户端发起 DNS 请求,根据 DNS 的位置,Azure Traffic Manager 将找到最近的区域并通过 DNS 响应将其返回给客户端。
设计高可用性应用程序
当我们设计大规模高可用性应用程序时,我们需要将所有这些组件结合使用。下图显示了一个应用程序地理分布式并使用 **Azure Traffic Manager** 选择最近区域的场景。然后,它使用 **应用程序网关** 来选择要从中获取响应的应用程序服务器。最后,使用 **负载均衡器** 为数据库服务器进行基础设施级别的负载均衡。
看点
在本文中,我们探讨了各种 Azure 负载均衡解决方案是如何针对特定目的而设计的,并为正确场景(或其组合)使用正确的解决方案,可以帮助我们创建高可用性应用程序。
参考文献
- https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview
- https://docs.microsoft.com/en-us/azure/application-gateway/application-gateway-introduction
- https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview
- https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-load-balancing-azure
历史
- 2018 年 7 月 30 日:初版