在 Azure 中使用负载均衡服务

介绍

Azure 提供了多个服务,用于管理网络流量的分布和负载均衡方式。 可以根据需求单独使用这些服务或组合其方法,以生成最佳解决方案。

在本教程中,我们首先定义了一个客户用例,并了解如何使用以下 Azure 负载均衡项目组合(流量管理器、应用程序网关和负载均衡器)使其更可靠、更高性能。 然后,我们提供了创建地理冗余的部署的分步说明,将流量分发到 VM,并帮助你管理不同类型的请求。

在概念级别,每个服务在负载均衡层次结构中都扮演了不同的角色。

  • 流量管理器 提供全局 DNS 负载均衡。 它根据客户选择的路由策略,查看传入的 DNS 请求,并使用正常的终结点进行响应。 路由方法的选项包括:

    • 根据性能路由策略,将请求者发送到延迟最低的终结点。
    • 优先级路由以将所有流量定向到终结点,其他终结点作为备份。
    • 加权轮询路由,根据分配的权重在各个终结点之间分配流量。
    • 基于地理位置的路由,根据用户的地理位置将流量分发到应用程序终结点。
    • 基于子网的路由,用于根据用户的子网(IP 地址范围)将流量分发到应用程序终结点。
    • 多值路由,使你可以在单个 DNS 响应中发送多个应用程序终结点的 IP 地址。

    客户端直接连接到流量管理器返回的终结点。 Azure 流量管理器检测终结点是否运行不正常,然后将客户端重定向到另一个正常运行的实例。 请参阅 Azure 流量管理器文档 ,了解有关该服务的详细信息。

  • 应用程序网关 以服务的形式提供应用程序传送控制器(ADC),为应用程序提供各种第 7 层负载均衡功能。 它允许客户通过将 CPU 密集型 TLS 终止卸载到应用程序网关来优化 Web 场工作效率。 其他第 7 层路由功能包括传入流量的轮循机制分发、基于 Cookie 的会话相关性、基于 URL 路径的路由,以及托管单个应用程序网关后面的多个网站的能力。 可将应用程序网关配置为面向 Internet 的网关、仅限内部的网关或两者的组合。 应用程序网关是完全 Azure 托管的、可缩放且高度可用的。 它提供了一组丰富的诊断和日志记录功能,以提高可管理性。

  • 负载均衡器 是 Azure SDN 堆栈不可或缺的一部分,为所有 UDP 和 TCP 协议提供高性能、低延迟的第 4 层负载均衡服务。 它管理入站和出站连接。 可以配置公共终结点和内部负载均衡终结点,并定义规则,以使用 TCP 和 HTTP 运行状况探测选项来将入站连接映射到后端池目标,以管理服务可用性。

情景

在此示例方案中,我们使用提供两种类型的内容的简单网站:图像和动态呈现的网页。 该网站必须具有地理冗余性,并且它应从最接近(最低延迟)的位置为用户提供服务。 应用程序开发人员已决定,与模式 /images/* 匹配的任何 URL 都来自专用的 VM 池,这些 VM 与 Web 场的其余部分不同。

此外,提供动态内容的默认 VM 池需要与在高可用性群集上托管的后端数据库通信。 整个部署是通过 Azure 资源管理器设置的。

使用流量管理器、应用程序网关和负载均衡器,可让此网站实现以下设计目标:

  • 多地理位置冗余:如果一个区域出现故障,流量管理器会将流量无缝路由到最近的区域,而无需应用程序所有者进行任何干预。
  • 降低延迟:由于流量管理器自动将客户定向到最近的区域,因此在请求网页内容时,客户体验较低的延迟。
  • 独立可伸缩性:由于 Web 应用程序工作负载按内容类型分隔,因此应用程序所有者可以独立于彼此缩放请求工作负荷。 应用程序网关确保根据指定的规则和应用程序的运行状况将流量路由到正确的池。
  • 内部负载均衡:由于负载均衡器位于高可用性群集前面,因此只会向应用程序公开数据库的活动且正常的终结点。 此外,数据库管理员可以通过在独立于前端应用程序的群集之间分发主动副本和被动副本来优化工作负荷。 负载均衡器将连接传送到高可用性群集,并确保仅正常数据库接收连接请求。

下图显示了此方案的体系结构:

负载均衡体系结构示意图

注释

此示例只是 Azure 提供的负载均衡服务的许多可能配置之一。 流量管理器、应用程序网关和负载均衡器可以混合和匹配以满足负载均衡需求。 例如,如果不需要 TLS 卸载或第 7 层处理,则可以使用负载均衡器代替应用程序网关。

设置负载均衡堆栈

步骤 1:创建流量管理器配置文件

  1. 在 Azure 门户中,单击“ 创建资源>网络>流量管理器配置文件>创建”。

  2. 输入以下基本信息:

    • 名称:为流量管理器配置文件提供 DNS 前缀名称。
    • 路由方法:选择流量路由方法策略。 有关方法的详细信息,请参阅 关于流量管理器流量路由方法
    • 订阅:选择包含个人资料的订阅。
    • 资源组:选择包含配置文件的资源组。 它可以是新的或现有的资源组。
    • 资源组位置:流量管理器服务是全局的,不会绑定到某个位置。 但是,必须为与流量管理器配置文件关联的元数据所在的组指定区域。 此位置不会影响配置文件的运行时可用性。
  3. 单击“ 创建 ”以生成流量管理器配置文件。

    “创建流量管理器”边栏选项卡

步骤 2:创建应用程序网关

  1. 在 Azure 门户中的左窗格中,单击“ 创建资源>网络>应用程序网关”。

  2. 输入有关应用程序网关的以下基本信息:

    • 名称:应用程序网关的名称。
    • SKU 大小:应用程序网关的大小,可用作小型、中型或大型网关。
    • 实例计数:实例数,值从 2 到 10。
    • 资源组:保存应用程序网关的资源组。 它可以是现有资源组或新资源组。
    • 位置:应用程序网关的区域,与资源组的位置相同。 位置很重要,因为虚拟网络和公共 IP 必须与网关位于同一位置。
  3. 单击 “确定”

  4. 定义应用程序网关的虚拟网络、子网、前端 IP 和侦听器配置。 在此方案中,前端 IP 地址是 公共的,可以将其作为终结点稍后添加到流量管理器配置文件中。

    注释

    如果使用 HTTPS,请在“侦听器”选项卡上选择“协议”旁边的 HTTPS。默认选项为 HTTP。 还必须创建和分配 SSL 证书。 有关详细信息,请参阅 SSL 的应用程序网关教程

为应用程序网关配置 URL 路由

选择后端池时,通过路径规则配置的应用程序网关除了采用轮询调度之外,还会根据请求 URL 的路径模式进行处理。 在此方案中,我们将添加基于路径的规则,以将包含“/images/*”的任何 URL 定向到映像服务器池。 有关为应用程序网关配置基于 URL 路径的路由的详细信息,请参阅 为应用程序网关创建基于路径的规则

应用程序网关 Web 层关系图

  1. 从你的资源组,前往在上一部分创建的应用程序网关实例。

  2. “设置”下,选择 “后端池”,然后选择“ 添加” 以添加要与 Web 层后端池关联的 VM。

  3. 输入后端池的名称以及驻留在池中的计算机的所有 IP 地址。 在此方案中,我们将连接两个虚拟机的后端服务器池。

    应用程序网关“添加后端池”

  4. 在应用程序网关 的设置 下,选择“ 规则”,然后单击 “基于路径” 按钮添加规则。

    应用程序网关规则“基于路径”按钮

  5. 请通过提供以下信息来配置规则。

    基本设置:

    • 名称:门户中可访问的规则的友好名称。
    • 侦听器:用于规则的侦听器。
    • 默认后端池:要与默认规则一起使用的后端池。
    • 默认 HTTP 设置:要与默认规则一起使用的 HTTP 设置。

    基于路径的规则:

    • 名称:基于路径的规则的友好名称。
    • 路径:用于转发流量的路径规则。
    • 后端池:用于此规则的池。
    • HTTP 设置:要用于此规则的 HTTP 设置。

    重要

    路径:有效路径必须以“/”开头。 仅允许在末尾使用通配符“*”。 有效示例包括 /xyz、/xyz*或 /xyz/*。

    应用网关“添加路径规则”面板

步骤 3:将应用程序网关添加到流量管理器终结点

在此方案中,流量管理器连接到驻留在不同区域中的应用程序网关(如前面的步骤中配置)。 配置应用程序网关后,下一步是将它们连接到流量管理器配置文件。

  1. 打开流量管理器个人资料。 为此,请在资源组中查找或搜索 “所有资源”中的流量管理器配置文件的名称。

  2. 在左窗格中,选择 “终结点”,然后单击“ 添加” 以添加终结点。

    流量管理器终结点“添加”按钮

  3. 输入以下信息创建终结点:

    • 类型:选择要进行负载均衡的终结点类型。 在此方案中,请选择 Azure 终结点 ,因为我们正在将其连接到之前配置的应用程序网关实例。
    • 名称:输入终结点的名称。
    • 目标资源类型:选择 公共 IP 地址 ,然后在 “目标资源”下,选择之前配置的应用程序网关的公共 IP。

    流量管理器“添加终结点”

  4. 现在,您可以通过访问流量管理器的配置文件 DNS 来测试您的设置(在此示例中:TrafficManagerScenario.trafficmanager.cn)。 可以重新发送请求、启动 VM 或关闭在不同区域中创建的 VM 和 Web 服务器。 还可以更改和测试不同的 Traffic Manager 配置文件的设置。

步骤 4:创建负载均衡器

在此方案中,负载均衡器将连接从 Web 层分发到高可用性群集中的数据库。

如果高可用性数据库群集使用的是 SQL Server Always On,请参阅 配置一个或多个 AlwaysOn 可用性组侦听器 ,了解分步说明。

有关配置内部负载均衡器的详细信息,请参阅 在 Azure 门户中创建内部负载均衡器

  1. 在 Azure 门户中的左窗格中,单击“ 创建资源>网络>负载均衡器”。

  2. 选择负载均衡器的名称。

  3. 将类型设置为“内部,并为要驻留的负载均衡器选择适当的虚拟网络和子网。

  4. IP 地址分配下,选择 “动态 ”或“ 静态”。

  5. “资源组”下,选择负载均衡器的资源组。

  6. “位置”下,为负载均衡器选择适当的区域。

  7. 单击“ 创建 ”以生成负载均衡器。

将后端数据库层连接到负载均衡器

  1. 在资源组中,找到在前面的步骤中创建的负载均衡器。

  2. “设置”下,单击“ 后端池”,然后单击“ 添加” 以添加后端池。

    负载均衡器“添加后端池”

  3. 输入后端池的名称。

  4. 将单个计算机或可用性集添加到后端池。

配置探测

  1. 在负载均衡器的 “设置”下,选择“ 探测”,然后单击“ 添加” 以添加探测。

    负载均衡器“添加探测”

  2. 输入探测的名称。

  3. 选择探测的 协议 。 对于数据库,可能需要 TCP 探测而不是 HTTP 探测。 若要了解有关负载均衡器探测的详细信息,请参阅 了解负载均衡器探测

  4. 输入您的数据库的端口,以用于访问探测。

  5. “间隔”下,指定探测应用程序的频率。

  6. “不正常”阈值下,指定将后端 VM 视为不正常所需的连续探测失败次数。

  7. 单击“ 确定 ”以创建探测。

配置负载均衡规则

  1. 在负载均衡器 的设置 下,选择 “负载均衡规则”,然后单击“ 添加 ”以创建规则。

  2. 输入负载均衡规则 的名称

  3. 选择负载均衡器、协议端口前端 IP 地址

  4. 后端端口下,指定要在后端池中使用的端口。

  5. 选择在前面的步骤中创建的 后端池探测 ,以应用规则。

  6. “会话持久性”下,选择希望会话保留的方式。

  7. 空闲超时下,指定空闲超时前的分钟数。

  8. 浮动 IP 下,选择 “已禁用 ”或 “已启用”。

  9. 单击 “确定” 以创建规则。

步骤 5:将 Web 层 VM 连接到负载均衡器

现在,我们在 Web 层 VM 上运行的应用程序中配置 IP 地址和负载均衡器前端端口,以用于任何数据库连接。 此配置特定于在这些 VM 上运行的应用程序。 若要配置目标 IP 地址和端口,请参阅应用程序文档。 若要查找前端的 IP 地址,在 Azure 门户中,转到 负载均衡器设置上的前端 IP 池。

负载均衡器“前端 IP 池”导航窗格

后续步骤